Skip to content

Importing staff ​

Who this is for: Admin, Tenant owner
What you'll achieve: Bulk-load people from CSV or Excel with correct cover preference

Requires role

staff.import. Tenant owner or Admin

Before you begin ​

  • Press Download staff template in Setup (AI setup or Staff directory) or on the Staff page (also templates/staff.csv in the repo)
  • Decide cover preference for each person

Staff import panel

CSV import ​

Columns ​

ColumnRequiredNotes
NameYesDisplay name
EmailNoContact / matching
RoleNoJob title label. Office/reception titles (e.g. Receptionist, Admissions Officer) default to Only if needed when Cover preference is blank
Cover preferenceRecommendedOften, Sometimes, Only if needed, or Never (legacy: preferred, acceptable, last_resort, excluded)
First aiderNotrue / false

Example:

csv
Name,Email,Role,Cover preference,First aider
Alex Example,alex@school.test,Teaching Assistant,Often,true
Sam Example,sam@school.test,Class Teacher,Only if needed,false

Steps ​

  1. Open Staff.
  2. Download the CSV template if needed.
  3. Paste CSV rows into the import area (or follow the on-page paste flow).
  4. Review validation messages.
  5. Confirm the import.

On a trust, matching names already in the organisation are attached to the school you have selected, not created twice. The confirm button says what will happen, for example Commit 2 new, attach 3 existing, and the summary afterwards counts both: importing the same list on a second school reports 0 new and attaches everyone. People already at this school are counted as neither, so re-running an import does not inflate the numbers. Existing grades and cover preferences are left as they are.

XLSX import (spreadsheet colours) ​

SchoolRota can parse Kenley-style spreadsheets where cover preference is encoded as cell fill colour rather than a text column.

Typical colour mapping:

Colour cueCover preference
GreenOften
AmberSometimes
RedOnly if needed or Never (per parser rules)

Exact mapping follows the domain helpers (dutyTierFromFillRgb / dutyTierFromLabel). Prefer an explicit Cover preference column in CSV when you control the file format.

Steps ​

  1. Open Staff.
  2. Upload the .xlsx file.
  3. Review parsed rows and tiers.
  4. Confirm the import.

Names read from a duty rota ​

When names come from a duty rota or from a pack of personal timetables (Setup → Existing timetable), they often carry extra wording. The import separates the person from that wording:

  • A day qualifier limits the duty instead of becoming part of the name. Rosie Thurs is imported as Rosie, on duty Thursday only.
  • Supply cover collapses to one placeholder. Supply, Supply TA, and Supply teaching assistant all become Supply TA, which you can assign like any other person.
  • A job description is never turned into a person. DW Learning Coach and Office Staff name a post, not an individual, so the duty is left for you to assign from the directory.
  • A missing separator is repaired only when the rota proves the split elsewhere. Katie, Adam Michaela C becomes Katie, Adam, and Michaela C because other days list each of them separately. A name the rota only ever writes as one piece is left alone.

After import ​

  1. Spot-check a few people in the directory - especially office roles (should be Only if needed unless you set otherwise) and TAs (should be Often when inferred).
  2. Assign leads on the weekly template in Initial setup. After the staff list, you can upload one whole-school duty rota or many personal timetable files on Existing timetable.
  3. Optionally add weekly blocks.

What happens next ​

Troubleshooting ​

ProblemWhat to try
Tiers all defaultCheck column header spelling or XLSX fill colours
Duplicate namesPrefer unique emails; clean the sheet before re-import
Empty importEnsure a header row and at least one data row
A duty has nobody on itThe rota named a post such as DW Learning Coach. Assign the person who covers it
A name still looks wrongEdit it in the directory. The rota cell likely spelled it differently from the staff list

SchoolRota documentation. Every slot covered, every day.