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, or use Import staff during setup.
  2. Download the CSV template if needed.
  3. Choose a .csv or .xlsx file. Mapping starts as soon as you choose the file. You can also paste names and press Check names again.
  4. Review the mapped names, then press Add staff to the directory.
  5. If a rota is already uploaded in setup, unmatched rota names refresh after you add staff. Weekly pins are not rewritten until you apply the rota again.

If the list is larger than your plan, preview says how many seats remain. You can import the first remaining names now, then upgrade (or deactivate leavers) to bring the rest in. Rows such as UNKNOWN STAFF, Lunch team, or TBC are skipped so they do not become people.

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 named agency colleague such as Agency Jane stays a person.
  • An ambiguous last name on the rota (Mrs Patel when Nina Patel and Sam Patel both exist) is not imported as a new person. Match the existing colleague.
  • 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 (or one zip of those 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.