Move your school from spreadsheets without losing records
To switch from spreadsheets to class management software, list every spreadsheet and what it is used for, decide which records move and which stay as an archive, map your roster columns to the new system's import format, test the import with a copy, then run both systems side by side until a full teaching cycle matches. Keep the spreadsheets read-only rather than deleting them.
In short:
- Inventory first: most schools run on more spreadsheets than they think.
- Move the roster, archive the history. Past attendance, payments and assessments rarely import cleanly.
- Map every column to a field, a note or "stays behind".
- Fix data before importing: dates, statuses and duplicates cause most failures.
- Run in parallel for at least one full teaching cycle, then freeze the old files.
Spreadsheets are not the problem in themselves. Many small schools run well on them. Switching makes sense when the same information is kept in several places, families need their own view, or one person is the only one who understands the formulas.
Step 1: Inventory what you actually use
Before choosing what to move, list every file and tab. A typical small school's inventory looks like this illustrative example:
| Spreadsheet | Used for | Updated by | How often | Moves? |
|---|---|---|---|---|
| Students 2026 | Names, parents, dates of birth, class, level | Owner | When someone joins or leaves | Yes, via import |
| Tuesday/Thursday registers | Attendance per class | Instructors | Every class | Start fresh; archive old registers |
| Level 1 checklist | Skills each student has passed | Instructors | Weekly | Re-enter current status; archive history |
| Fees 2026 | Who has paid this term | Owner | Monthly | Keep in your accounting system; issue new invoices going forward |
| Waitlist | Families waiting for a place | Owner | Ad hoc | Ask families to submit a new request |
| Certificates | Instructor first-aid dates | Owner | Yearly | Re-enter (a few rows) |
Anything nobody updates any more can usually be archived without a decision.
Step 2: Decide what moves and what stays behind
| Record | Move it? | Why |
|---|---|---|
| Current roster | Yes | Everything else hangs off it |
| Current skill status | Yes, re-entered | Needed for teaching from day one |
| Past attendance | Usually no | Keep the old registers as a read-only archive |
| Past payments | No | Keep in your accounting records; start new invoices from a clear date |
| Assessment history | Usually no | Keep the spreadsheet; record the current status only |
| Former students | Optional | Import as inactive only if staff will look them up |
A clean cut-over date makes this easier to explain: "From 1 January, attendance and invoices are in the new system. Anything earlier is in the archive folder."
Step 3: Map your roster columns
Every system has its own import format. Here is a mapping from an invented spreadsheet to ProgresslyAI's CSV import, whose columns are first_name, last_name, email, date_of_birth, vertical, level, status and notes. Only first_name and last_name are required.
| Spreadsheet column | Example value | Import column | What to change |
|---|---|---|---|
| Student name | Maya Chen | first_name, last_name | Split into two columns |
| DOB | 18/04/2015 | date_of_birth | Convert to YYYY-MM-DD: 2015-04-18 |
| Student email | (blank for children) | email | Student's own email only; leave blank for most children |
| Programme | Music | vertical | Optional teaching category |
| Level | Level 1 | level | Keep as text |
| Status | Active / On break / Left | status | Use exactly active, paused or inactive, in lower case |
| Class | Tue 4:30 Guitar | notes (for reference) | Enroll in classes after import |
| Parent name and email | Lin Chen, lin@example.com | — | Add on the student record after import, then invite the parent |
| Phone | 555-0100 | notes or stays behind | No dedicated phone column |
| Paid this term? | Yes | — | Stays in your fee records |
| Medical notes | (anything) | — | Do not import; keep in your approved process |
Unknown column headers are rejected, so delete or rename every column that is not in the list above before importing.
Step 4: Clean the data and preview the import
This invented file shows the most common problems. It was run through ProgresslyAI's import parser to check the outcome:
first_name,last_name,email,date_of_birth,vertical,level,status,notes
Maya,Chen,,2015-04-18,Music,Level 1,active,Junior Guitar Tue 4:30
Leo,Rossi,,2014-11-02,Music,Level 1,active,
Aisha,Khan,,2015-07-30,Music,Level 1,paused,Paused until January
Noah,Brown,,2014-02-09,Music,Level 2,active,
Daniel,Park,daniel.park@example.com,1988-06-21,Music,Adult Piano Level 2,active,Adult student
Maya,Chen,,2015-04-18,Music,Level 1,active,Duplicate row left in by mistake
Sam,Taylor,sam@example,2015-13-01,Music,Level 1,Active,
| Row | Student | Preview result | Why |
|---|---|---|---|
| 2-6 | Maya, Leo, Aisha, Noah, Daniel | New | Valid; Aisha is paused, so she does not count toward the active-student limit |
| 7 | Maya Chen (again) | Duplicate, skipped | Same first name, last name, date of birth and email as row 2 |
| 8 | Sam Taylor | Invalid | The email has no domain ending; the date and the capitalized "Active" also need fixing |
Because one row is invalid, no students are added until it is fixed: the import is all-or-nothing. Fix Sam's row (for example sam@example.com, 2015-01-13, active) and preview again. The duplicate row is skipped rather than overwriting the existing record.
Other limits worth knowing before you start: up to 1,000 rows and 256 KB per file, dates of birth cannot be in the future, and only the school owner can import. If the active rows would take the school over its plan's active-student limit, the whole import stops. The import help guide covers the screens step by step.
Step 5: Run both systems in parallel
For at least one full teaching cycle, usually a week or a fortnight of every class, keep the spreadsheet as the record and enter the same information in the new system. Then compare:
- Every current student is in the new system, with the right status and level.
- Each class roster matches the register.
- Attendance for each class date matches the paper or spreadsheet register.
- Each student's current skill status matches the checklist.
- Families invited to the portal see only their own child.
- New invoices show the expected balance.
Fix differences at the source and note what caused them. When a full cycle matches, make the old spreadsheets read-only, store them where staff can find them and tell everyone the cut-over date.
When spreadsheets still make sense
Stay with spreadsheets, or delay switching, if:
- one person runs a handful of students and nobody else needs access;
- families do not need to see records between lessons;
- your main need is something the software you are considering does not do, such as collecting tuition online; or
- you cannot spare time for a parallel run this term.
A well-kept spreadsheet with clear status definitions beats a new system nobody updates. Our free progress tracking template and attendance sheet are designed for that case.
What ProgresslyAI imports and what it does not
ProgresslyAI imports student roster records from CSV with a preview showing new, duplicate and invalid rows. It does not import class schedules, enrollments, parent links, attendance history, skill assessments, report documents, invoices or payment history. After the import, create classes and enroll students, assign each student's curriculum and current skill statuses, add parent emails and invite parents. ProgresslyAI does not provide a staffed migration service.
Starter is free for up to 25 active students and 1 instructor seat. Pro costs USD $49/month for up to 200 active students and 5 instructor seats. Business costs USD $99/month with no cap on active students or instructor seats. AI report drafts need Pro or Business; readiness, retention and schedule suggestions need Business. Review the plans and included features before choosing.
How this guide was prepared
ProgresslyAI staff wrote this guide. The spreadsheet, students and file are invented; the preview results came from running that file through the application's own CSV parser and duplicate check. Inventory and parallel-run steps are general practice, not a guarantee of how long a switch will take.
Related guides
Want to streamline your training business?
Create your school and start tracking progress. No credit card required.
Start free