Skip to main content

Add Learners to Courses in Bulk (Import Registrations)

Enrol a group of learners or delegates on a course date from a spreadsheet without creating orders, or update their registration answers.

Written by Artur Binzaru

This guide is for course providers who want to enrol a group of learners on courses at once, for example a cohort of delegates or students on an e-learning course, from a CSV or Excel spreadsheet. The same Registrations import can also fill in custom registration fields on registrations you already have.

A contact stores a person’s details. A registration is that person’s place on one course and, unless the course is on-demand (a self-paced online course with no dates), on one course date. The Registrations import creates registrations without an order, an invoice or a payment record.

If you need to import purchases, prices or payment records, follow Import Bookings (Orders) from a CSV or Excel File instead. If you are not sure which import you need, start with Import Your Data from a Spreadsheet (CSV or Excel). To add one learner by hand, see Add a Participant to a Course Without Creating an Order.

​


​

Book a Group of Students onto a Course at Once: What the Import Does

The Registrations import is available on every Cademy plan; plans differ only in the rows one file can hold. Each row is one learner on one course. For each row, the import can:

  • Create a registration on an on-demand course, or on a course date that already exists for any other type of course.

  • Create the learner’s contact if you have none with that email address, or use the contact you already have.

  • Save answers in your custom Registration fields.

  • Send the learner a confirmation email, if you choose to.

  • Update custom Registration fields on a registration that already exists, including one that came from an order.

The import does not:

  • Create orders, invoices or payment records.

  • Create courses or course dates. Create these first.

  • Move a learner to another course date, cancel a registration, or change attendance or completion. To move a learner, see Move or Transfer a Participant to Another Date or Course.

  • Check how many spaces are left on a course date. Check that the date has room before you import.

  • Offer an undo, so test with a small file first.

​


​

Prepare a Spreadsheet to Enrol a Large Cohort (CSV or Excel)

To start the import from Settings you need the Course Owner or System Admin role. A Facilitator cannot open the Imports page, but can start the same import from the Registrants tab of a course they can open.

  • Use a CSV or Excel file with the column headings in the first row and one learner on one course in each row after it. 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: a CSV file can be read with them wrong, for example Zoë as Zoë.

  • One file can hold up to 1,000 rows on the Free, Starter and Pro plans. The Teams plan has no row limit, and on the Enterprise plan the limit is set for your account. For a larger cohort, split the rows over several files. A file with more rows is refused when you upload it.

  • Create the courses first, and the course dates of every course that is not on-demand. An e-learning course that is on-demand needs no dates. A row for a course that is not on-demand fails if Cademy finds no matching course date.

  • Give each learner’s email address, which Cademy uses to find the contact you already have. A row with no email address and no Cademy ID (the contact’s ID in Cademy) creates a new contact every time.

  • To import answers to your own registration questions, create the Registration fields first in Settings > Fields, on the Registrations tab, and add a column for each one. See Ask Course-Specific Booking Questions (Registration Fields).

How the Import Reads Dates, Yes/No Values and Choices

  • Dates in Excel. Format the column as Text before you type the dates. A cell Excel stores as a date reaches Cademy as a number such as 45975.4 (shown in Sample Data): a Course Date then fails the row with the message Value: … is not a valid value for field 'Course Date', and a Created date or custom Date field is saved as a date in 1970. In a CSV file every date is already text.

  • Date formats. The format you choose must match your file exactly, including two- or four-digit years. Cademy does not reject a date in another format if it can still read it: 03/04/2026 is 3 April with D/M/YYYY and 4 March with MM/DD/YYYY.

  • Yes/no values. Use yes, no, true, false, 1 or 0. In an Excel file, type them as text: a cell that Excel stores as FALSE or as the number 0 is read as blank. The exception is Educator Marketing Consent, described under “How Learners Are Matched to Existing Contacts” below.

  • Choices. For a dropdown, single choice or checkbox field, each value must be one of the field’s options. Any other value is left out and the row still imported, so check the spelling. For several checkbox choices in one cell, choose the separator (comma, pipe or new line) in the second list beside the column.

​


​

Upload the File and Map Learners’ Contact Details

  1. Sign in to the admin dashboard. In the main menu, select Settings, then select Imports in the Tools group.

  2. Under Start an Import, select Registrations. The Import Registrations window opens.

  3. Drop your file into the upload area or select Select file. The window then moves to the Map Contacts step, headed Configure your import. If the file is empty or has more rows than your plan allows, a message says so and the window stays on the upload screen.

  4. For each contact field you want to import, choose CSV column under Value Source and the column under File Column. Map Email, plus First Name and Last Name for new learners, leave the rest on Do not import and select Continue. If you only update registrations identified by Registration Reference or Registration Code, you can leave every contact field on Do not import.

  5. Decide whether to leave Update existing Contact on (it starts on). With it on, the details you mapped replace those saved on matching contacts, and Educator Marketing Consent is rewritten on every matching contact. Read “How Learners Are Matched to Existing Contacts” below first. Select Continue to open the Map Registrations step.

Import Registrations window at its second step, Map Contacts, headed Configure your import: a mapping table where the address fields, Cademy ID and Created date are set to Do not import and Email, First Name and Last Name, outlined, each take a column of the file

You can also start from a course’s Registrants tab: select Import (or Import Registrations… in the menu marked with three dots). In the Map Registrations step the course, and the course date you are viewing, are then filled in as fixed values. Check them before you import.

​

Registrants tab of the course First Aid at Work with a toolbar holding Search, the saved filter, Filter, Sort, Columns, More, Export, Import and New Registration above the list of registrants

​

How Column Mapping Works in the Registrations Import

Mapping tells Cademy which column of your file fills which field, for example a column named “Email Address” for Email. Cademy selects a column by itself when its heading is the same as the field’s name, so check every row of the table. Under Value Source, Do not import takes no value from your file, CSV column takes the column you choose under File Column (also for Excel files), and Fixed value gives every row the value you enter or choose.

​

Sample Data shows values from the first five rows of your file for the column you chose. If you choose a different column, the second list goes back to its first option, so check it again.

Important: Selecting Back rebuilds each screen you pass through: mappings you chose by hand return to the automatic ones, Update existing Contact returns to on and Update Existing Registrations to off. Check each screen again.

How Learners Are Matched to Existing Contacts

Cademy looks for the learner by email address. If you have a contact with that address, the registration is added to it; otherwise a new contact is created. If you map Cademy ID and Update existing Contact is on, Cademy looks by that ID first, then by email address.

​

With Update existing Contact on, the details you mapped replace the details saved on a matching contact. Blank cells do not clear saved details. With the switch off, a matching contact keeps its details, except that tags in your file are still added.

​

With the switch on, a value in any part of the address replaces the whole saved address, so include every part, and a blank first name, last name or email address is filled from the person’s Cademy learner account. Import Customers and Learners (Contacts) from a Spreadsheet describes how an import updates a contact.

Important: The Educator Marketing Consent field does not follow those rules. Every yes/no value Cademy reads in the cell saves consent as given, not only yes: a no does, and so do false and 0 in a CSV file. A blank cell, or the field not mapped, saves consent as not given. With Update existing Contact on, this is written to every matching contact, so turn the switch off to keep the consent already saved. If you do import consent, write yes only for people who gave it and leave the other cells empty.

Leave Organisation on Do not import: this import does not use it to set the learner’s organisation, and mapping it can create new organisations when Create organisations when auto-linking is on. To set contacts’ organisations from a file, follow Import Customers and Learners (Contacts) from a Spreadsheet.

​


​

Create New Registrations or Update Existing Ones

The Map Registrations step has the switch Update Existing Registrations, which is off to begin with, and a mapping table for the registration fields.

​

Map Registrations step of the Import Registrations window: the switch Update Existing Registrations, turned off and outlined, above a mapping table in which Course, marked Required, Course Date and Emergency Contact for This Course take columns of the file and Created date, Registration Code and Registration Reference are set to Do not import
  • Off: every row creates a registration. If the contact already has a registration on the same course and course date that is not cancelled or deleted, the row fails as a duplicate and nothing is created.

  • On: Cademy looks for an existing registration for the row and updates its custom Registration fields that have a value in the row. If it finds none, it creates a registration.

Important: With updates on, a row whose contact, course and course date match no registration creates one, if the row has the details a new registration needs. A row with a Registration Reference or Registration Code that Cademy cannot find fails instead. Check your matching columns before you import.

Registration Fields You Can Map: Course, Date and Your Own Questions

The table lists these fields in alphabetical order, together with your custom Registration fields:

  • Course: required to create a registration, and marked REQUIRED while updates are off. A row you identify by Registration Reference or Registration Code does not need it. In the second list, choose how your file names the course: Course Name (exactly the course’s name), Cademy Course ID or Course Code. In an Excel file, a name or code made only of digits, such as 101, must be in a cell formatted as Text, or the course is not found.

  • Course Date: needed for every course that is not on-demand; leave it on Do not import for on-demand courses. Put the start of the course date in the cell and choose the matching format. A format with a time finds the date that starts at that minute; a date-only format finds a date that starts that day, so use a time if two dates start the same day. D-MMM-YY finds only dates that start at midnight. Times are read in your account’s time zone.

  • Created date: the date and time the learner originally registered, for historical records. The value needs a time as well as a date and is read in your account’s time zone. A value that is blank or cannot be read is ignored, and the registration is dated at the time of the import.

  • Registration Code and Registration Reference: identify an existing registration when updates are on. They do not set the code or reference of a new registration. With updates off, a row with a value in either field fails with the message Enable Update Existing Registrations to use a registration reference/code, so set both to Do not import when you only create registrations.

  • Role: optional. Accepted values are direct, booker and guest. A blank cell means direct, which is meant for a learner who did not come through an order. Any other value fails the row. The role does not create or link an order.

  • Send Confirmation: whether Cademy emails the learner a confirmation for a new registration. Choose Fixed value and turn the switch on for everyone in the file, or map a yes/no column to decide row by row. On Do not import, none is sent. A learner with the role guest receives it only if the course has Send guest participants emails on. Updating a registration never sends one.

  • Your custom Registration fields: each learner’s answers for this registration. These are separate from the contact fields in the Map Contacts step. An Address field appears as six separate parts.

​

No Option to Map Registration Fields When Importing Registrations

If you cannot map a registration field, check where you are looking and how the field was set up:

  • Registration fields are listed only in the second mapping step, Map Registrations, after Map Contacts and the Update existing Contact screen. The first table holds contact fields only.

  • Only fields created in Settings > Fields on the Registrations tab are listed. A question set up as a contact field appears in the Map Contacts table instead.

  • File Upload and Statement fields are never listed, because they cannot be imported.

Update Registration Answers in Bulk: How the Registration Is Found

With Update Existing Registrations on, Cademy uses the first of these that the row provides:

  1. Registration Reference: the registration’s unique ID.

  2. Registration Code: the code shown in the Registration Code column of your registrations.

  3. The contact, the course and the course date: the contact’s Email or Cademy ID from the contact mapping table, the Course and, for a course that is not on-demand, a Course Date that matches exactly one date of that course. For an on-demand course, leave the Course Date cell blank.

The reference and the code must match exactly. The simplest way to get them is to export your registrations with the Registration Reference and Registration Code columns, fill in the field values in that file and import it: Cademy maps those two headings by itself. Do not copy IDs from the Imported Registrations list of an earlier import: it shows them in capital letters, and the reference must match exactly. See Find Who Is Booked on a Course (Registrations).

Important: If your export includes contact columns whose headings match a contact field, such as Educator Marketing Consent, Cademy maps them by itself in the Map Contacts step. Before you import an exported file, set the contact fields you do not want to change to Do not import and turn Update existing Contact off.

A reference or code also finds a cancelled registration, which is updated and stays cancelled. Matching by contact, course and course date skips cancelled registrations, so a row for a learner whose only registration there is cancelled creates a new one.

​

A row fails, and nothing is changed, when:

  • The reference or code is not found in your account.

  • The row also holds a contact, course or course date that disagrees with the registration found.

  • The Cademy ID is not found, or the row’s email address does not belong to that contact.

  • More than one contact, or more than one registration, matches the row.

  • The row has no reference or code and is missing the contact’s email or Cademy ID, the course, or a single matching course date.

An update writes only the custom Registration fields that have a value in the row: blank cells, or cells holding only spaces, leave saved answers unchanged. It does not change the registration’s learner, course, course date, role, created date, attendance, completion, order or payment. The contact’s own details change only if Update existing Contact is on.

​

Start the Registrations Import

  1. Check every mapping and its Sample Data. If a required field is not mapped, a warning headed Incomplete mappings names it and Import cannot be selected.

  2. Select Import. The message Import started appears and the window shows Processing Import.

​


​

Do Imported Learners Get an Email? Confirmations and Lesson Access

An imported learner receives a registration confirmation email only when Send Confirmation is on for their row (see “Registration Fields You Can Map” above). Lesson opening and deadline notifications are separate: they follow the course’s lesson schedule whatever Send Confirmation says. See Release Lessons Over Time and Set Due Dates.

​

On a blended course, timings that count from the course start or end use the course date on each learner’s registration.

​

Timings that count from enrolling, and access set to For a limited time, start from the registration’s created date: the Created date from your file, or the time of the import if you mapped none. A created date far in the past can mean that lessons are already open or overdue, or that access has already run out, so check the course’s lesson and access settings before you import historical dates.

​


​

Check Which Learner Rows Imported or Failed

You can close the window and keep working. When processing ends, the window shows Import Complete with the number of registrations imported and of failed rows.

​

The steps below use Settings > Imports, so they need the Course Owner or System Admin role. A Facilitator can use the result email described after them, which lists each failed row and its reason.

  1. Open Settings, then Imports.

  2. Under Your Imports, find the newest row with the type Registrations and read IMPORTED, FAILED and STATUS.

  3. If the number under IMPORTED is above 0, select it to list the registrations that were created or updated.

  4. If the number under FAILED is above 0, select it to see the ROW NUMBER and REASON of each failed row. Row 1 is the first row under your column headings, not counting empty rows.

  5. Correct those rows and import a file that contains only the rows that need retrying.

Failed Registrations (3) window with the columns Row Number and Reason: rows 3 and 5, This contact is already registered on this course date. The row was skipped to avoid creating a duplicate registration; row 6, Could not find a matching course date for this row, followed by the instruction to add a valid Course Date column and re-upload

STATUS shows PROCESSING while the import runs, PROCESSED when it has finished (also when some rows failed) and FAILED when the whole import stopped. A failed import shows a dash under IMPORTED and FAILED and no reason; if the window is still open, it shows Import failed with the reason.

​

Cademy also emails the result to the person who started the import, if they still have access to the account. It lists each failed row with your file’s values and the reason, but no row number.

​

Why a Registration Row Fails: Error Messages and Fixes

The first four reasons below are found only after the row’s contact has been saved. For such a row the contact has already been created if you did not have it, or updated if Update existing Contact is on, and only the registration was not created. If the row has no email address and no Cademy ID, importing it again creates another contact.

  • This contact is already registered on this course date. The row was skipped to avoid creating a duplicate registration. The learner already has a registration there that is not cancelled or deleted. No registration was created.

  • Could not find a matching course date for this row. Add a valid "Course Date" column and re-upload. No date of that course starts at the date or time in the row. Check the date, the format you chose and whether the year has two or four digits.

  • Course date does not match the course. A course date starts at the date or time in the row, but it belongs to another course.

  • Role must be one of: booker, guest, direct. The Role cell holds another value.

  • Course with Course Name … not found. The name, ID or code in the row matches no course in your account.

  • The required field "Course" needs a value for this record. The Course cell is blank.

  • Error importing registration. A general reason, for example an email address that is not valid.

​


​

Frequently Asked Questions

Can I move someone by importing another course date?
No. The import cannot move a registration. See Move or Transfer a Participant to Another Date or Course.

Did this answer your question?