Importing students from a spreadsheet
The CSV columns, how matching works, and how to fix and re-import without duplicates.
On this page
Students → Import CSV takes a spreadsheet with one row per student and creates the students, their classes, their families and their parents' accounts in one go.
Columns
Download the template from the dialog. Column names are matched loosely (case and spaces do not matter):
| Column | Required | Notes |
|---|---|---|
first_name, last_name |
yes | The student. |
student_id |
no | Your SIS number. Used to match on re-import. |
class |
no | Class name. Several classes separated by ;. |
family_name |
no | Defaults to the student's last name. |
parent1_first, parent1_last, parent1_email, parent1_phone |
no | First parent. Email is what creates and matches the account. |
parent2_… |
no | Second parent, same columns. |
Preview, then import
Preview import runs the entire import and then throws it away, so what it lists is exactly what the real import will do: how many students will be created or updated, families and parents created, which classes are new, and which rows will be skipped and why (usually a missing name or an invalid parent email).
Then Import. New parents are emailed a set-password link straight away.
How matching works
- A student matches by
student_idif given, otherwise by first and last name. Matched students are updated, not duplicated. - A class matches by name. Classes that do not exist are created — without a lead teacher. The preview lists them; assign a lead teacher on Classes before adding them to a conference.
- A parent matches by email. An existing parent is linked to the family; a new one gets an account.
- A family matches an existing family of the same name that one of the row's parents already belongs to, or one already attached to that student. Otherwise it is created.
Because matching is by these keys, you can correct the spreadsheet and import it again safely.
Common problems
- "has no valid email" — the parent columns have a name but no email, or a typo in it. A parent needs an email to receive anything.
- "is a staff account" — that email already belongs to a teacher or office member. Parents and staff are separate accounts.
- Wrong class name spelling creates a second class. Fix the spreadsheet, re-import (students move to the right class), then delete the empty class on Classes.
Importing from your student information system
If the school runs PowerSchool, Infinite Campus, Skyward or another SIS, skip the spreadsheet: export a OneRoster CSV bundle (a .zip) and use Students → Import from SIS. Classes, teachers, students, parents and who-is-in-which-class all come across at once, teachers and parents are matched by email, and re-importing later updates rather than duplicates. The preview shows exactly what would change before anything is written, and new teachers and parents get the set-password email.