Importing students from a spreadsheet

The CSV columns, how matching works, and how to fix and re-import without duplicates.

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_id if 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.