Skip to main content
Schoolyi
School librarian arranging books and planning cards in a bright library

Browse docs

Getting started

Migrating from spreadsheets

Move student lists, staff records, and parent contacts from Excel or Google Sheets into Schoolyi - which parts import, which have to be recreated, and the order that avoids rework.

Getting started guide for day and boarding schools.

Last updated August 29, 2026

Most schools arrive with partial data spread across several files - registration numbers in one, parent phone numbers in another, fee arrears in a third. Migration is the work of deciding which of those files becomes structured data in Schoolyi, which becomes a fresh configuration, and which stays where it is as an archive. Getting that judgement right at the start matters more than the mechanics, because the order below is difficult to undo once fees have been generated against a class that turns out to be wrong.

The foundation goes first. Classes, subjects, and the academic year are what every later record attaches to, so importing a student before their class section exists simply produces a roster you then have to correct one row at a time. Once the spine is in place, people import cleanly, and everything financial is generated rather than imported.

  1. Academic system, year, calendar, classes, and subjects - the platform foundation, owned by the Platform Admin
  2. Staff accounts and roles at /users; only a Platform Admin may use the bulk user import
  3. Student roster at /students - CSV import in batches of up to 500, deduplicating registration numbers as you go
  4. Parent records at /parents, matched to students by registration number or student email, then linked for portal access
  5. Fee types and structures, then generate instances at /fees/bulk-generate - there is no balance import
  6. Admissions cycles for the next intake only; historical applications are rarely worth recreating

What does not come across

  • Fee balances and payment history. Model outstanding amounts as a structure and generate instances instead.
  • Past attendance. The register starts from the day you begin marking; prior percentages stay in your old file.
  • Historical marks and report cards. Assessments and grade cards are entered for the current year onward.
  • Documents and photographs. Uploads are attached to records individually, not imported in bulk.

Common questions

Quick answers in plain language.

How many students can I import at once?+

Five hundred rows per file. POST /api/students/bulk-import rejects anything larger, so split a whole-school roster into files by grade. The screen previews the first five rows before you commit, and failures come back as a downloadable error CSV with the row number and field.

Can I import outstanding fee balances from our spreadsheet?+

No. There is no fee import. Balances are produced by defining fee types and structures and then generating instances at /fees/bulk-generate, so a mid-year migration means modelling what each cohort still owes as a structure rather than pasting a column of amounts.

Why does the parent import say it cannot find the student?+

The parent bulk import at /parents matches each row to an existing student by registration number or student email. Import the student roster first, and make sure the identifier in the parent file is written exactly as it is on the student record.

Can I import students from Excel into school management software?+

Yes. Configure classes and academic year first, then bulk-import staff and students. Dedupe registration numbers before linking parents and fees.

What order should I migrate school data from spreadsheets?+

Foundation first (calendar, classes), then roster, parents, and fees. Pilot one grade before migrating the full school.

Related searches

School leaders and IT teams often search for: how to import students into school ERP, Excel student list migration, school roster data cleanup, school data migration, import student roster CSV, and Excel to school management system.