This guide is for course providers who want to add or update many records at once from a CSV or Excel spreadsheet, instead of entering them one by one: courses, course dates, bookings (orders), learners’ places on courses (registrations), contacts (customers and learners) or organisations. It explains which import to use, how to prepare your file, how existing records are updated and how to check failed rows.
Imports are under Settings in the admin dashboard, and you need the System Admin or Course Owner role to open them. A Facilitator can start the Registrations import from the Registrants tab of a course. Every Cademy plan includes all six imports.
A course date is one scheduled session of a course; some screens call it an occurrence. A contact stores a person’s details. An organisation is a company or other body that contacts belong to. An order records a purchase. A registration records a person’s place on a course.
Choose the Right Import for Your Data
Courses Import: creates courses, or updates courses that already exist. Every row needs a course name and a course type. Each course it creates starts as unpublished.
Course Dates Import: adds dates to courses that are already in Cademy, or updates existing dates. Every row needs the course, a start and an end. Rows that share a block name are imported as one block of dates. It does not accept on-demand courses, which learners take without a course date.
Orders: creates one order per row, for one contact on one course, with the cost and payment status from your file. The contact in the row is recorded as attending. It always creates new orders and never changes an existing order.
Registrations: gives a contact a place on a course without creating an order. It can also update your custom registration fields on registrations that already exist.
Contacts Import: creates contacts, or updates contacts that already exist, including your custom contact fields.
Organisations Import: creates organisations, or updates organisations that already exist, including your custom organisation fields. Every row needs an organisation name.
To choose between Orders and Registrations: use Orders when you need a purchase record for each booking, with an amount and whether it was paid. Use Registrations when people only need their place on the course and no purchase record.
Some imports need records that are already in Cademy. When you are bringing a whole set of data into Cademy, import in this order:
Courses.
Course dates. Each row must name a course that already exists.
Orders or registrations. Each row must name a course that already exists. Unless the course is on-demand, the row also needs a course date that already exists. These imports do not create course dates.
Contacts and organisations do not depend on courses, so you can import them at any point. The Orders and Registrations imports find or create the contact in each row themselves, so you do not need to import contacts first.
Prepare Your CSV or Excel File
Save the file as CSV or Excel. In an Excel file, Cademy reads the first sheet only.
If your file has letters with accents or symbols, such as é or £, save it as Excel. Depending on the program that saved it, a CSV file is read with these characters wrong, for example Zoë as Zoë.
Put the column headings in the first row. Each row below the headings is one record, for example one course or one contact.
Headings that match Cademy’s field names are matched for you. Other headings can be matched by hand, as described under “Map Your Spreadsheet Columns to Cademy Fields” below.
Write every date in a column the same way, for example 25/12/2026 09:30. You tell Cademy which date format the column uses when you map it.
In an Excel file, enter dates as text: format the column as Text before you type the dates. A cell that Excel stores as a date reaches Cademy as a number, not as the date you see, and Sample Data in the mapping table shows that number. A date field or a date and time field is then saved as a date in 1970, and in the Course Date field of the Orders and Registrations imports the row fails. In a CSV file every date is already text.
For yes or no values, use yes or no, true or false, or 1 or 0. The exception is Marketing Consent: write yes only for people who gave consent, and leave the cell empty for everyone else. A no is saved as consent given, and so are false and 0 in a CSV file. See Import Customers and Learners (Contacts) from a Spreadsheet.
If one cell holds several values, such as several tags, separate them with commas, with the | character or with line breaks, and use the same separator throughout the column.
Leave a cell empty when a record has no value for that field. An empty cell in a required field makes that row fail.
An Orders or Registrations file can hold up to 1,000 rows on the Free, Starter and Pro plans. The Teams plan has no row limit. On an Enterprise plan the limit is set for your account. The other four imports have no fixed row limit.
Try a file with a few rows first, so you can check the result before you import the full list.
Get a Spreadsheet Template for Your Import (Example File)
Five imports have a template. In the upload step of the import, select View example file to open a sample spreadsheet with suitable headings. Copy it and replace the sample rows with your own data. The Registrations import has no example file. Your headings do not have to match the example, because you match your columns to Cademy fields after the upload.
For learner or student data, choose the import by what Cademy should hold: Contacts Import for the people’s details only, Registrations to give each person a place on a course, or Orders to also record what each booking cost and whether it was paid.
Start an Import on the Imports Page
All six imports start on the same page and follow the same stages: upload the file, map its columns, choose whether existing records are updated, then start.
Open the Imports Page Under Settings
Sign in to the admin dashboard.
Select Settings in the main menu.
Select Imports, under Tools. The page shows Start an Import with the six imports, and Your Imports with the imports already run.
If Imports is not listed, your login has the Facilitator role. You can still start the Registrations import from the Registrants tab of a course you can open. For any other import, ask a System Admin or Course Owner on your account to run it, or ask a System Admin to change your role.
Upload Your File, Map Its Columns and Start the Import
The guide for each import lists its fields.
Under Start an Import, select the import you chose. A window opens and asks for the file.
Drop your file into the window, or select it from your computer. Cademy reads the file and shows a mapping table. In the Orders and Registrations imports, this first table is for the contact’s details.
Check every row of the mapping table, as explained under “Map Your Spreadsheet Columns to Cademy Fields” below. A warning titled Incomplete mappings lists each required field that still needs a column or a value. You cannot continue until it is gone.
Select Continue in the Orders and Registrations imports, or Next in the other four. Cademy shows a switch that controls whether existing records are updated and, in those four imports, how many records it will try to import. Set it as explained under “Run Another Data Import to Bring Records Up to Date” below.
In the Orders and Registrations imports, select Continue again. A second mapping table opens for the order or registration fields. Check it in the same way.
Start the import. In the Orders and Registrations imports the button is Import. In the other four it is Import Data.
You can also start a contacts import from the Contacts page, and an orders or registrations import from inside a course, where the course is already filled in. These open the same import windows.
Map Your Spreadsheet Columns to Cademy Fields
The mapping table lists the import’s fields in alphabetical order, one per row, under four headings: Cademy Field, Value Source, File Column and Sample Data.
For each field, Value Source offers three choices:
Do not import: the import takes no value for this field from your file. When a row updates an existing record, this does not always leave the saved value as it is. See “Run Another Data Import to Bring Records Up to Date” below.
CSV column: the field takes its value from a column of your file. Choose the column under File Column. The choice has this name for Excel files too.
Fixed value: every row gets the same value, which you enter or choose in the table. For example, choose one course as the fixed value for Course when every row belongs to that course.
Cademy fills in the table to begin with. A field whose name matches one of your column headings, ignoring capital letters, is set to that column. Every other field is set to Do not import, so a column with a heading Cademy does not recognise is ignored until you map it.
Check these points before you continue:
Fields marked REQUIRED must have a column or a fixed value.
Sample Data shows values from the first rows of the chosen column. Use it to confirm that you picked the right column.
Some fields show a second list beside the column, where you choose how your file writes the value, for example the date format, the separator between several values, or whether a course is identified by its name, its Cademy ID or its course code. Choose the column first, because choosing a different column sets the second list back to its first option. Then check that the second list matches your file. With the wrong date format, a date is either saved as a different date or cannot be read. A date that cannot be read makes the row fail in a required field and in Course Date of the Orders and Registrations imports. In any other field it is left out without a warning.
On a new record, a field left as Do not import gets Cademy’s default where one applies. For example, an order with no mapped payment status is recorded as paid.
Run Another Data Import to Bring Records Up to Date
You can run an import again at any time, for example to bring Cademy up to date with changes made in another system. Before an import starts, a switch controls what happens when a row matches a record that is already in Cademy. The switch, and what it changes, depends on the import. The Orders import never updates an order, so a later Orders file should hold only the bookings made since your last import.
Courses Import and Course Dates Import: the switch is Update existing courses or Update existing occurrences. It is on to begin with.
Orders: the switch is Update existing Contact. It is on to begin with and applies only to the contact in each row. Orders themselves are never matched or updated.
Registrations: there are two switches. Update existing Contact is on to begin with and applies to the contact. Update Existing Registrations, above the second mapping table, is off to begin with. Turn it on to update your custom registration fields on registrations that already exist.
Contacts Import and Organisations Import: the switch is Update existing contacts or Update existing organisations. It is on to begin with.
With the switch on, Cademy looks for an existing record using the identifiers below and updates the record it finds. A row with no match creates a new record. A Cademy ID is the identifier Cademy gives each record; a file that comes from another system has none.
Courses: the course’s Cademy ID, its course code or its name. Cademy uses only the first of these that has a value in the row.
Course dates: the date’s Cademy ID, its code, or the same course with the same start and end. Cademy uses only the first of these that has a value in the row.
Registrations: the registration’s reference or code, or the contact’s email address together with the course and course date. A reference or code that is not found makes the row fail.
Contacts: the contact’s Cademy ID, then the email address.
Organisations: the organisation’s Cademy ID, then its name. Domains are not used for matching.
To get a spreadsheet of the records that are already in Cademy, with their Cademy IDs, export them. See Export or Download Your Data as a CSV File.
Important: An import cannot be undone. Check the switch before you start. The wrong setting either changes records you meant to keep or creates records you already have.
These are the cases to check for:
Matching by name: with the switch on, a row that has no ID or code is matched by name. A course or organisation in your file that shares its name with a different record in Cademy updates that record. If more than one course matches, the row fails and no course is changed.
An ID or code that matches nothing, in the Courses and Course Dates imports: Cademy does not go on to try the name, or the course, start and end. The row is treated as a new record, not as an update, even when a course with the same name or a date with the same times already exists.
Switch off in the Courses, Course Dates and Organisations imports: every row creates a new record, even when the same record is already in Cademy. Importing the same file twice gives you each record twice.
Orders: uploading the same rows in a second import creates a second set of orders. To retry, import only the rows that failed.
Registrations: with Update Existing Registrations off, a contact who already has a place on the same course and course date is not given a second one. The row is reported as failed.
Switch off in the Contacts import: a row whose email address already belongs to a contact does not create a second contact, and the values in your file do not replace that contact’s saved details. Tags in the file are still added.
Contacts without an email address: a row with no email address and no Cademy ID cannot be matched, so it creates a new contact each time it is imported.
An update can also change details that are not in your file:
Courses: every updated course is set to unpublished, and some settings that your file does not supply are set back to their defaults. Review each updated course afterwards, and publish it again if it was published.
Organisations: an update replaces the organisation’s saved domains and tags with the ones in the row. When the domain field or Tags is left as Do not import, the saved domains or tags are removed.
Contacts, including the contact in an Orders or Registrations row while Update existing Contact is on: an update also saves Marketing Consent. When that field is left as Do not import, or the row’s cell is empty, the contact’s consent is saved as off. A cell that says no is saved as consent given, so write yes only for people who gave consent.
Check What Happened After an Import (Your Imports)
Cademy works through each import in the background, and you can keep working. To see what an import did, open Settings, then Imports: the Your Imports table shows how many rows were imported and how many failed.
In the Orders and Registrations imports, the window shows Processing Import and then Import Complete, with the number imported and the number of failed rows. You can close it while it is processing.
In the other four imports, the window closes and a message confirms that the import is being processed.
When processing finishes, Cademy emails the result to the user who started the import, if that user still has access to the account.
In the Your Imports table, the newest import is at the top, and the table refreshes while an import is processing.
TYPE: the import that was run. A Course Dates import is listed as Occurrences, and an Orders import as Orders (unified). The types Bookings and Orders belong to imports that cannot be started from this page.
IMPORTED: the number of rows that did not fail. If the number is above 0, select it to list their records. The eye button beside a record opens it in a new tab.
FAILED: the number of rows that were not imported. When the number is a link, select it to see each failed row’s ROW NUMBER and REASON. A number that cannot be selected means that no reasons were stored for that import. Row 1 is the first record below your headings, which is row 2 of a spreadsheet with no empty rows.
STATUS: PROCESSING while Cademy works through the file, then PROCESSED when it has finished. PROCESSED does not mean that every row succeeded, so always check the FAILED column. The status FAILED means the import stopped with an error before it finished. Check whether any records were created before you try again. Only the Orders and Registrations imports show the status FAILED. If one of the other four imports stays at PROCESSING and no email arrives, look for its records in Cademy before you upload the file again, and contact Cademy Support with the import’s type and the date and time shown in Your Imports.
The Orders import handles failed rows differently: the FAILED column shows the number only. The email sent when the import finishes lists each failed row with its error.
Why Import Rows Failed and How to Fix Them
Each failed row has a reason. Common reasons are an empty cell in a required field, a course or course date that Cademy could not find, and a date that Cademy cannot read in the format you chose, in a required field or in Course Date. Read them in Your Imports, or in the email for an Orders import, as described above.
Apart from blocks of course dates, whose rows are imported together, each row is imported on its own, so one failed row does not stop the others.
To fix failed rows, correct them in your spreadsheet and import a file that contains only those rows. Importing rows that already succeeded can create duplicates, as described under “Run Another Data Import to Bring Records Up to Date” above.
Data the Imports Cannot Bring In (Memberships, Arlo, Lessons)
The six imports read spreadsheet files only, and some data has no import. The Courses Import does not create lessons: add them in the course editor.
Import a List of Subscribers into a Membership
There is no import for membership subscribers. Importing people with the Contacts Import creates contacts only, not subscriptions. Manage Membership Subscribers explains how to give a group, such as a client’s employees, access through a membership.
Move Your Data from Arlo or Another Booking System
The Imports page has no Arlo card, and the six imports do not connect to another system. If you are moving from Arlo, contact Cademy Support before you start. From another system, save your data as CSV or Excel files, if the system offers that, and import them in the order given under “Choose the Right Import for Your Data”.
Step-by-Step Guide for Each Import
Each import has its own guide:
Frequently Asked Questions
Can I undo an import?
No. Select the IMPORTED number in Your Imports to list the records the import created or updated, then correct them in Cademy.
Do the Orders and Registrations imports email the people in my file?
They send a confirmation only for rows where Send Confirmation is set to yes. If you leave that field as Do not import, no confirmation is sent. The guides for those two imports explain which other emails a new order or registration can lead to.

