← Guides

30 September 2026 · The Cademy Team

From Spreadsheets to a Training Management System

How to move a training business from spreadsheets to a training management system: what to export, what to clean, the import order, and a 30-day plan.

softwaretmsimplementation

On this page
  1. Key takeaways
  2. 1The six records in your workbook
  3. 2Two checks before you start
  4. 3Where the data lives now
  5. 4The clean-up
  6. 5What does not come across, and what to do instead
  7. 6The import order
  8. 7The 30-day plan
  9. 8Running both in parallel
  10. 9Frequently asked questions
  11. 10Where Cademy fits

Moving from spreadsheets to a training management system is two jobs: moving the data, and moving the habits. The data is six lists at the core (contacts, organisations, courses, dates, registrations and orders) plus the small ones around them (facilitators, locations, certificates, prices), and with the sheets exported and tidied it imports in a day. The habits take about a month: letting the checkout take the booking, the system send the reminder and the invoice raise itself, while you check its work against what you would have done by hand. It is written for the provider running on Excel or Google Sheets plus a booking form, a calendar and an accounting package, in the order the work happens.

The same rows, before and after the import. Each block of cells becomes a live part of the dashboard.

Key takeaways

  • Your spreadsheet already holds six records a training management system needs: contacts, organisations, courses, dates, registrations and orders. The move is finding them in the tabs and giving each its own sheet.
  • Export from every tool you use today: the booking tool has the orders, the accounting package has the organisations, the calendar has the dates.
  • The clean-up is where the time goes. One row per thing, one email per person, one spelling per organisation, dates in one format. An afternoon of tidying saves a week of fixing records after import.
  • Import in dependency order: organisations, contacts, courses, dates, registrations, orders. Each one references the one before it.
  • Plan on 30 days from export to retiring the spreadsheet. The import itself is a day; the rest is switching automations on one at a time and running one real course through the system.

The six records in your workbook

A training provider’s spreadsheet looks like one thing and is six. The tab per year with a row per course date is a schedule. The column of names under each date is a registration list. The sheet of client companies with their contact and PO number is a customer record. The tab where you tick who has paid is an order book. The workbook holds the same structure a training management system has; it just holds it in cells that do not know about each other, so a name changed in one tab stays wrong in four others.

Where it is in the workbookWhat it isWhat goes wrong in a spreadsheet
A tab per year, a row per course run, capacity in a cellCourse datesTwo people editing means a conflict; capacity is a number nobody decrements; the trainer’s name is free text
The name and email columns under each dateRegistrationsThe same person is typed differently on three dates; attendance is a tick nobody reports on
A “Clients” tab with company, contact and PO numberOrganisations and contactsThe company appears as three spellings; the contact left last year; who books and who attends are conflated
A “Paid” column, or a separate invoices sheetOrders and paymentsOverdue is whatever you remember; a refund is a note; the accounting package holds the truth and the sheet lags it
The list of things you teach, with pricesCoursesPrice changes are edited in place, so history is lost; the description lives in a Word file
The certificate log, if there is oneCertificatesExpiry dates are calculated by hand, so nobody knows who is due

Around the six sit smaller lists that come across too, and are quicker to deal with because there are so few rows: the trainers who teach and the venues you use (a handful of each, created by hand in the new system before the dates that reference them), the certificate log (which becomes an issue date and an expiry date on each registration), CPD points per course, and the prices, discounts and deposit terms that today live in the header of a tab. The email wording you send by hand today, the confirmation and the reminder, becomes a set of templates rather than an import; keep a copy of each to paste in.

Once you see the six records, the move stops being “put the spreadsheet into software” and becomes six exports and six imports, each small. It also explains why the move is worth making: the re-keying between those tabs, and between the workbook and the booking tool and the accounting package, is where the admin hours go. In accessplanit’s 2025 benchmark of training providers, processing bookings was the single largest admin drain, cited by 44% of respondents.

Two checks before you start

If you are reading this you have probably already decided, and two checks are still worth a minute. The full decision, including when a booking tool is the better answer, is in what a training management system is and who needs one.

Two checks before you start the move

The same person has been typed into more than one tool this month
Move now

Every duplicate is a future correction. The cost compounds.

A client has asked for one invoice covering several delegates, or to swap a name after booking
Move now

This is the B2B shape a spreadsheet and a consumer booking tool both struggle with.

You run a few public workshops a year, paid by card, and nobody books for anyone else
Stay on the booking tool for now

Look again when either of the two above starts happening.

Where the data lives now

The spreadsheet is rarely the only source. A provider on rung one typically has the schedule in the workbook, bookings in a ticketing tool, customers in the accounting package, the mailing list in an email tool, and dates in a shared calendar. Each of these exports, and each export covers a different slice of the six records. The grid below shows which tool holds which record well enough to be the source for it.

Which tool is the best source for each record

Scroll sideways to see every column.

The jobSpreadsheetBooking toolAccountingCalendar
Courses (titles, prices, formats)Booking tools hold the event, rarely the course behind itCoveredPartly coveredNot coveredNot covered
Course dates (venue, trainer, capacity)Calendars hold times and places; capacity and price live elsewhereCoveredPartly coveredNot coveredPartly covered
Contacts (learners and bookers)The booking tool has the most complete emailsPartly coveredCoveredPartly coveredNot covered
Organisations (client companies)Accounting has the billing name and address exactly as invoicedPartly coveredNot coveredCoveredNot covered
Registrations (who attended what)Booking tools know who booked; the register knows who cameCoveredPartly coveredNot coveredNot covered
Orders (who paid what, when)Card orders in the booking tool; invoiced orders in accountingPartly coveredCoveredCoveredNot covered
Covered best sourcePartly covered partial, needs mergingNot covered not held here

Take each record from the tool that holds it best. The spreadsheet is usually the source for courses, dates and attendance; the booking tool for contacts and card orders; the accounting package for organisations and invoices.

The exports, tool by tool

Every tool in the table exports a CSV or an Excel file. Where the export is a report rather than a raw list, run it for the widest date range the tool allows so history comes with it.

ToolWhat to exportHow it comes out
ExcelEach tab as its own CSVFile, Save As, CSV (one file per sheet; Excel warns that only the active sheet is saved)
Google SheetsEach tab as its own CSVFile, Download, Comma Separated Values (downloads the current tab)
EventbriteOrders report and Attendees report, all eventsReports, then Orders or Attendees; combine across events before downloading
BookwhenBookings export and Customer list exportBoth are CSV downloads from the reporting and customer pages
Humanitix, TryBooking and similarAttendee list and event summary per event, or the global reportReports
XeroContacts, and Invoices for the periodContacts has an export; invoices export from the sales screen for a date range
QuickBooks OnlineCustomers to Excel; Invoices reportSales, Customers, Export to Excel; Reports, Invoice List
Google or Outlook calendarDates you have not already got in the workbookExport as .ics, then open in a spreadsheet to reshape into rows

Keep every export in one folder, named for what it is (contacts-eventbrite.csv, organisations-xero.csv). You will merge some of them and you will want to know where each row came from when something looks wrong.

The clean-up

Importers are forgiving about column names and unforgiving about meaning. A file with a column called “Client” imports fine once you tell the importer it means organisation. A file where “Client” contains “Acme”, “ACME Ltd” and “Acme (Sarah)” creates three organisations. The clean-up is making each sheet mean one thing per row and one value per cell, and it is most of the effort in the move.

Work through the six sheets in this order, because each depends on the one before.

Organisations. One row per company. Pick one spelling and apply it everywhere (a find-and-replace across the other sheets). Add the billing email and address from the accounting export, and the email domain (acme.com) if your system links contacts to organisations by domain.

Contacts. One row per person, and the email address is the key. Merge duplicates on email, keeping the most recent name and phone. Split “Sarah Jones (Acme)” into a name column and an organisation column. Decide, per person, whether they are a learner, a booker or both; a booker who never attends still needs a record because they receive the invoice.

Courses. One row per thing you sell, with the current price, the format (in person, live online, on demand, blended, on request) and the duration. Old prices go; the system will hold price history from now on. If a course has variants (a one-day and a two-day version), they are two courses.

Dates. One row per run, referencing the course by its exact title. Start and end date and time in one format, ISO (2026-11-04 09:30) if you can manage it. Venue as a name that matches your locations list, trainer as a name that matches a facilitator you will create, capacity as a number. Past dates stay in; they carry the attendance history.

Registrations. One row per person per date, referencing contact by email and date by course title plus start date. An attendance column (attended, absent) if you have it. Where a certificate was issued, a column with the issue date, so you can record it after import.

Orders. One row per booking transaction: who paid (contact or organisation), for which registrations, how much, by what method, and whether it is paid, part paid or outstanding. If the accounting package is the source of truth for invoiced orders, take the figures from there and mark the card orders from the booking tool export.

Three habits save hours here. Use the importer’s example file as your target layout from the start, so you are cleaning into the shape it wants. Freeze the exports before you clean, so you can go back. And do the clean-up in the spreadsheet tool you know, with filters and find-and-replace, rather than by hand in the importer.

What does not come across, and what to do instead

Some things in the workbook are not data and will not import. Knowing which before you start stops the move stalling on them.

  • Certificates you already issued. They import as registrations with an attendance record and, where the system supports it, a note of the issue date. The PDF you sent is not recreated. Keep the old PDFs in a folder for the retention period and issue new ones from the system from now on.
  • The certificate design. A Word template does not become a system template. Rebuild it once in the system’s certificate editor, with the expiry period set, so every certificate from now on carries an expiry date on the record.
  • Payment transactions. Orders import as who paid what and whether it is settled. The bank transactions behind them stay in the accounting package, which is where they belong.
  • Formulas and colour coding. The “if this cell is red the client owes money” logic becomes a filter on order status. Write down what each colour meant before you export, because the CSV will not carry it.
  • Email history. What you have said to a client lives in your inbox and stays there. From the switch date the system logs its own emails on the record.
  • Free-text notes. Most importers accept a notes column. Everything that does not fit a field goes in it rather than being lost.

The import order

Import in the order the records depend on each other, and check the failed-rows list after each one before moving to the next. Each importer will refuse a row that references something that does not exist yet, which is the reason for the order.

  1. 1
    Locations and facilitators

    Created by hand: a handful of venues and the trainers who teach. Dates reference both by name.

  2. 2
    Organisations

    Companies first, so contacts can link to them on import.

  3. 3
    Contacts

    People, keyed on email, each linked to an organisation where there is one.

  4. 4
    Courses

    The catalogue: title, format, price, duration. Dates reference the course by title.

  5. 5
    Course dates

    Every run, past and future, with venue, trainer and capacity. Future dates are bookable the moment they land.

  6. 6
    Registrations

    Who is on which date, with attendance where you have it. This is the history.

  7. 7
    Orders

    Who paid what, and whether it is settled. Last, because an order references contacts, dates and registrations.

With six tidy sheets, this is a day’s work, including the checking. Most of the day is the checking: open a client’s organisation record and confirm their contacts, dates and invoices are all there; open a past date and confirm the register matches the tick column in the old workbook. Pick three of each and check them properly rather than skimming all of them.

The 30-day plan

The import sits in the middle of the move. What makes the switch stick is what happens in the fortnight after it, when the system starts doing things you used to do by hand and you learn to let it.

WeekWhat happensYou know it worked when
Week 1: export and cleanExport from every tool. Build the six sheets. Decide the switch date and tell the team.Six files in the importer’s layout, and a list of the rows you could not resolve
Day 8: importLocations and facilitators by hand, then the six imports in order. Check three records of each kind against the old workbook.A client’s record shows their contacts, past dates and invoices; a past date shows its register
Week 2: switch on, in order of trustConnect payments. Turn on booking confirmations first, then reminders, then certificates, then invoices, reading each template and rewriting it in your words. Embed the course list on your website, or point the “book now” link at the new booking page.You receive a test booking’s confirmation and reminder yourself and would have sent them
Week 3: first live courseRun one real date through the system end to end: bookings taken, register marked, certificates issued, invoice raised and synced to accounting. Keep the spreadsheet open beside it.The trainer used their own login for the register and you did not touch it
Week 4: retire the toolsTurn off the old booking page. Move the spreadsheet to a read-only archive. Cancel the tools you no longer need, with a date, one at a time.Someone asks a question about a client and you answer it from the system without opening the workbook

Two decisions make the plan hold: one switch date for bookings, and one owner for the month. Before the switch date, new bookings go in the old tool; after it, all of them go in the new one, with no period where both are taking bookings. The owner is the person allowed to say the sheet is closed, even in a two-person business.

Running both in parallel

You do not have to stop using a spreadsheet; you have to stop using it as the system. Every training management system worth the name exports to CSV, so the workbook can carry on as a report you pull when you want to, built from the system’s data rather than the other way round. Finance teams in particular often keep a monthly export for their own reconciliation. That is fine. The line to hold is that a booking, a name change or a payment is recorded in the system first and only ever copied out, never typed in.

Give the parallel period an end date at the start. A booking tool left running “just in case” becomes the place a colleague takes one booking in a hurry, and from that booking on the two systems disagree.

Frequently asked questions

Does my spreadsheet have to be in a particular format to import? No. Export each tab as a CSV (or upload the Excel file where the importer accepts it) and map your columns to the system’s fields during the import. Columns that have no field are left out or put in notes. The layout that matters is one row per record and one value per cell.

Can I import past attendance and the certificates I already issued? Past attendance, yes: import the dates and the registrations with an attendance column and the history is on each learner’s record. Certificates you issued from Word do not become certificates in the system. Import the registrations, record the issue date where you have it, and issue new certificates from the system going forward.

Google Sheets or Excel: does it matter? No. Both export CSV, and most importers accept Excel files directly. Google Sheets is easier for the clean-up if two people are tidying at once, because there is no conflict on save.

How long does the move take? For a provider with a few hundred contacts and a schedule of dates, this pattern is about 30 days from first export to retiring the spreadsheet, of which the import itself is one day. What sets the length is the clean-up, and that depends on how many spellings of each client are in the workbook.

What if my data is a mess? Then the clean-up week is the valuable one, because the mess is currently costing you every day. Start with organisations and contacts, keyed on email, and let the rest follow. If a row cannot be resolved, import it with a note rather than leaving it behind; a record with a gap is better than no record.

Will I lose history? Only if you leave it out. Import past dates and past registrations as well as future ones. The history is what makes the system useful in month two, when a client asks who they trained last year and whose certificates are due.

Where Cademy fits

Cademy was built around this move; the spreadsheet is where most of the providers it meets start. There are six importers, one for each of the six records: organisations, contacts, courses, course dates (including blocks of dates), registrations and orders. Each takes a CSV or an Excel file with any column names and lets you map them to Cademy’s fields at import, with an example file to clean towards. Contact imports are on every plan including the free one; courses, dates, registrations and orders from Pro. Nobody is charged by the row.

With the six sheets ready, the import is an afternoon, and Cademy will do it with you on a call if you would rather. Future dates are bookable the moment they land; past dates carry their registers; contacts link to their organisations by email domain without you doing it. If you would rather someone ran it end to end, there is a five-working-day plan with one person on Cademy’s side who knows your setup, and larger moves get a scoped plan in the same shape: export, import and map, website and payments, team and automations, first course live. The switching from a spreadsheet page has the five steps and the side-by-side of what the spreadsheet did and what does it now.

If you want to know what would import as-is and what needs a tidy before you commit to anything, send the spreadsheet. Book a call and bring the workbook, or start for free and try the contacts importer on one exported tab this week.

Sources

← All guides