Skip to main content
ChessCore

Migration guide

A chess academy spreadsheet alternative, step by step

A spreadsheet is a reasonable way to start a chess academy: it is free, flexible, and has no learning curve. The time to move is when fees need reconciling, more than one person edits the file, or parents ask for regular reports. This is a practical checklist for making that move carefully, so you can decide when a spreadsheet is still enough and how to switch with a way back when it is not.

The worked example below uses Knight’s Gate Chess Academy, a made-up academy, with its made-up students, so the same numbers appear wherever this example is used. It is an example, not a customer.

Talk through your migrationSee ChessCore pricing

When each one fits

  • Stay on the sheet while

    A small rosterOne person doing the adminFees collected in personNo written progress reports

  • Plan the move when

    A payment goes untrackedA second coach needs the dataParents ask for monthly updates

Knight's Gate, one week

The same week, two ways

Three moments from one week at the made-up academy: a class, a part payment and a parent update, first as the spreadsheet keeps them, then as ChessCore does.

The spreadsheet

Attendance is a column of ticks someone types in. Two of Liam W.’s cells were never filled in, and nothing says why.

ChessCore

The coach marks attendance with a note and an absence reason; an excused absence earns a make-up credit. Liam W.’s two missing records say attendance was not recorded rather than guessing it.

Before you move

When a spreadsheet is enough

If you coach a handful of students, run one or two batches, and collect fees in cash or a single transfer, a spreadsheet does the job. You can list names, mark attendance in a column, and total the fees yourself in a minute. For a side project or a brand-new academy, paying for software you have not grown into is premature. Stay on the sheet while all of these are true: a small roster, one person doing the admin, fees collected in person, and no demand for written progress reports.

Plan the move the first time any one of these happens instead: a payment goes untracked, a second coach needs the same data and versions start to diverge, or parents start asking for monthly updates you write by hand. A spreadsheet records what you typed; it does not reconcile a payment or chase a missed one. Those are the jobs that make the switch worth it, and the rest of this page is how to do it carefully. For a longer look at each warning sign, read when a chess academy outgrows spreadsheets.

Decide in 60 seconds

Is the sheet still enough?

Once the roster is in, the difference from a spreadsheet is the work that follows. ChessCore can draft a parent note or report narrative from your records with AI, and a person reviews that wording before sending it. Moving the roster does not fill gaps in attendance or import your old fee ledger.

Who keeps the records?
How do fees arrive?
What do parents expect?

Your fit

Pick one answer in each row.

  • Spreadsheet0 of 3
  • ChessCore0 of 3

The picker only lines up this page’s own warning signs against your answers. Keep the sheet until a real week in the new system matches it.

Fees are the part of the move people underestimate. Plan to set up balances and recurring invoices by hand, and check which plan carries online payments before you promise families a payment link or an AutoPay mandate: those start on the Grow plan and up.

Step one

Map your records before you move

Start by writing down what the sheet actually holds and where each column should land. For the example academy, Knight’s Gate has 42 active students across three batches: Beginners A with 16, Intermediate B with 14, and the Tournament squad with 12. Those three batches are the structure the import maps onto, so name them in ChessCore first and keep a batch column in the spreadsheet that matches.

ChessCore imports the student roster from a CSV or Excel (.xlsx) file. It maps columns for the student’s name, guardian name, guardian email, guardian phone, batch, and date of birth. There is a template you can download to match that shape. What it does not read is history: past attendance and old fee ledgers are not columns the import carries, so decide now whether you will key that history in by hand or simply start fresh from the move date. For Knight’s Gate, Leo T. is missing attendance records for two classes; those stay missing after the move, because an honest record says attendance was not recorded rather than guessing it. If you would rather not run the import yourself, you can have the roster set up with the ChessCore team.

Step two

Reconcile the import against the sheet

Before anything is saved, the import previews the rows it will create, flags rows with errors by line number, and warns about names that already exist on your roster so you can decide what to do. Check the preview against the sheet: the student count should match your 42, each batch should hold the right number, and no family should appear twice. Only then save, which inserts the whole set in one step so a single bad row cannot leave a half-finished import.

Made-up correction exercise for Knight's Gate: suppose Leo's guardian email is “not-an-email”, as in the problem fixture. Before correction, 41 of the 42 rows are valid: Beginners A has 15 valid rows, Intermediate B has 14 and Tournament squad has 12. Saving is unavailable and nothing has been imported yet. Layla replaces the bad address with the fictional guardian6@example.invalid, checks the date of birth against the source sheet, then previews again. With that row corrected and no other errors, the count is 42 valid rows: 16, 14 and 12. After saving, she recounts each batch against the original sheet. These are illustrative counts, not a completed import or customer result.

Download the synthetic field-mapping and count worksheet (CSV) for the same exercise. It is a review worksheet, not an import-ready student file. Keep Sara's USD 60 opening balance on the manual-setup list.

Fees are where reconciliation matters most, and it is the one thing a spreadsheet cannot do for you. A fees column tells you what a student should pay, not what landed in your account. Take Sara A. at Knight’s Gate: her October fee, invoice KG-1027, is USD 120, due on 5 October; her parent paid USD 60 on 9 October, leaving an USD 60 balance. That opening balance is a spreadsheet figure, so you re-enter it in ChessCore by hand at the move. The matching starts with the next online payment: once the academy is on Grow plan and up, a payment that Sara’s parent makes through Stripe, or through Razorpay and UPI AutoPay at an academy in India, is recorded against that invoice without a manual cross-check. See how ChessCore handles billing, and batch scheduling for how attendance rolls up per batch after the move.

In and out

What ChessCore imports, and what it does not

Here is exactly what you can bring across from a spreadsheet. CSV files can be up to 5 MiB (5,242,880 bytes), and Excel (.xlsx) uploads up to 7 MiB (7,340,032 bytes). Every import is previewed first, with errors shown row by row, before anything is saved. Likely duplicates are flagged for you to decide on, and nothing is merged automatically. You can undo an import within 24 hours.

What ChessCore imports from a spreadsheet
DataStatusHow
Student rosterStatusImportedHowCSV or Excel (.xlsx). Columns for student name, guardian name, guardian email, guardian phone, batch and date of birth.
LeadsStatusImportedHowCSV.
EnrolmentsStatusImportedHowCSV, with student, batch, start date and status.
GuardiansStatusImportedHowCSV.
BatchesStatusImportedHowCSV, with name, centre, capacity, status and mode.
Invoices and fee plansStatusNot importedHowSet them up in ChessCore.
Opening balancesStatusNot importedHowEnter each open balance in ChessCore by hand.

To start the roster, download the student import template (CSV). Your own sheet does not need these exact headings: the importer also maps other column names to the right fields.

And this is what you can take back out.

What ChessCore exports
DataStatusHow
Student rosterStatusExportedHowCSV or JSON with name, status, join date and main guardian contact, up to 10,000 students. Every export is logged.
One family’s full recordsStatusExportedHowA signed file with that family’s records, for a data-access request.
Attendance and revenue reportsStatusExportedHowAnalytics tables export to CSV, and as a PDF report.

After the import

Your first month after importing

This is a suggested routine, not a required setup. It checks the new records against real work before you stop opening the old sheet.

  1. Run one class and mark attendance in ChessCore, with a note and an absence reason where one applies. Check that the batch shows the right students and that an excused absence earned a make-up credit.
  2. Review one parent report before families rely on it. Monthly reports carry the period’s game counts and ratings, and parents see reports, attendance and class recaps in the portal. Report emails to parents go out only if your academy switches them on.
  3. Record the next payments as they arrive. Online Razorpay and Stripe payments (from the Grow plan and up) are matched to their invoice, cash or bank payments are recorded by hand, and a part-payment leaves the invoice partly paid until the rest comes in.
  4. Check the next billing cycle. Recurring invoices are generated for subscriptions that fall due, so compare them with what each family expects to pay, and confirm whether your academy has switched on fee reminders.

A way back

Keep a rollback and export in reach

Two safety nets exist, and both have limits. An import can be undone for 24 hours after it is saved, which removes the rows that import created. That window is there so you can run the import, check it against the sheet, and back out the same day if the numbers are wrong. After 24 hours the undo is gone, so do the recount on day one.

The way out is narrower than the way in. ChessCore can download the student roster as CSV or JSON, with each student’s name, status, join date and main guardian contact, and every export is written to the academy’s audit log. A signed file with one family’s records is a separate request. There is no one-click export of the whole academy. Neither export recreates attendance, invoices or payment records, and neither reverses a payment that has already been taken. So keep your spreadsheet untouched as the before-state. For the full picture of what replaces the sheet, read the chess academy management software overview, and the chess academy CRM guide for the single record of leads, enrolment, and parent messages a spreadsheet never kept.

The whole move

The checklist for Knight’s Gate

Put together, the checklist for Knight’s Gate, the example academy, reads as follows. Keep a copy of the original sheet untouched at every step.

  1. List every column in the sheet and decide where each one lands, or that it will not be moved.
  2. Create the three batches first: Beginners A, Intermediate B and the Tournament squad.
  3. Prepare the roster CSV with one row per student and a batch column that matches those names. Choose self-service import or ask the ChessCore team to set it up.
  4. Read the preview: 42 students, 16 + 14 + 12 across the batches, no family twice, no error rows.
  5. Save the corrected file, then check the same counts in the product. Undo the import within 24 hours if they differ.
  6. Re-enter open fee balances by hand as opening balances, for example the USD 60 still due from Sara A. Her parent’s next payment through Stripe is then recorded against that invoice automatically. Leave Leo T.’s two missing attendance records marked as not recorded.
  7. Export the roster to a CSV and store it next to the original sheet as your own record. It holds contacts and batches only, so the sheet stays the record of everything else.

Questions

Frequently asked questions

Is a spreadsheet a bad way to run a chess academy?
No. For a few students, one coach, and cash fees, a spreadsheet is free, flexible, and fine. It starts to cost you time once fees need reconciling, two people edit the same file, or parents ask for regular reports. This page is for that point, not before it.
Does ChessCore import my existing spreadsheet?
Yes. ChessCore imports a student roster from a CSV or Excel (.xlsx) file, previews the rows and any duplicates before anything is saved, then commits them in one step and maps a batch column to your batches. You can also set up the roster with the ChessCore team instead.
What happens to past attendance and old payment history?
Only what the academy enters comes across. The student import carries names, guardian contacts, batch, and date of birth. Past attendance and old fee history are not read from the spreadsheet, so they exist in ChessCore only if the academy keys them in. Open fee balances are entered by hand as opening balances. The first payment after the move, for example through Razorpay, is then recorded against that invoice.
Can I undo an import or get my data back out?
An import can be undone within 24 hours of saving it, which removes the rows it created. You can also download the student roster as CSV or JSON (name, status, join date and main guardian contact; Google Sheets and Excel open the CSV), and request a signed file of one family’s records. There is no one-click export of the whole academy, and neither export recreates attendance, invoices or payments, so keep your original sheet.

Written by Abhishek Tiwari. See our editorial standards.

Talk through your spreadsheet migration

Bring the columns of your sheet and tell us what you need to keep. We will go through how it maps to ChessCore and which parts you would set up yourself.