JoinCPR

Students

Importing students from a CSV

The four-step import wizard, the CSV columns, duplicate handling, mapping course names, creating historical certifications, and error reports.

Updated · JoinCPR help center

Use Training → Students → Import Students to bring in students and their past training from a spreadsheet or another platform. Admins and staff only. Up to 1,000 rows per file.

Prepare the file

Click Download Sample CSV for a template. Columns:

Column Required Notes
first_name Yes
last_name Yes
email Yes Used to match existing students. Lower-cased.
phone No Stored as typed
course_name No Creates a training-history record when present
class_date No YYYY-MM-DD, MM/DD/YYYY or MM-DD-YYYY
certification_valid_months No Overrides the course's validity for the certificate
status No pending, confirmed, cancelled, completed or no_show. Blank means completed.
card_number No The certifying body's card number, stored on the certification created for a completed row

Extra columns are ignored. Empty rows are skipped.

Step 1: Upload

Choose the file (CSV, up to 2 MB) and a Duplicate Handling rule for emails that already exist:

  • Update existing students (default): non-empty name and phone values overwrite the record
  • Skip existing students: the row is ignored entirely
  • Keep existing students as-is (still add their training history)

Click Upload & Continue.

Step 2: Map Course Names

Shown when the file has course names. Each distinct name gets a dropdown pre-filled with the closest matching course. Choose a course, Skip this course, or Create as new course.

Note

"Create as new course" creates the course immediately when you click Continue, with no price or validity set. Finish those under Courses afterwards.

Step 3: Preview

Tiles show Total Rows, Will Import, Will Update, Will Skip, Existing Kept As-Is and Errors, with the first five rows and any validation errors ("Row 12: Invalid email address…"). Click Import N Students.

The button is disabled when there are no new or updated students, even if "keep" rows would add history. Switch Duplicate Handling to "Update" if you only want to add history to existing students.

What the import creates

  • Students: new records for new emails; updates or nothing for existing ones, per your rule. No emails are sent to students.
  • Training history: for rows with a mapped course, a registration record flagged Imported with the course, class date and status. These show in the student's history with an amber badge and cannot be edited, transferred or refunded.
  • Certifications: when the status is completed, a class date is present, and a validity in months is available (from the row or the course), a certificate is created with the class date as the issue date and the expiry calculated per the course's expiry rule (exact date or end of month). No Certification Issued email is sent. These certificates feed expiry reminders and the student's account.

Step 4: Results

"Import Complete" lists imported, updated, kept, certifications created, skipped and failed counts. Download Error Report gives a CSV of failed rows with the reason. Import More starts again.

Rows are processed one by one; if one fails, the others still go through.

Tips

  • Set course validity months on your courses first so certificates get the right expiry.
  • Historical registrations have no price, so they show as "Free" and do not affect revenue reports.
  • Keycodes are not assigned for imported registrations.

Try JoinCPR free

Put your CPR classes online with registration, payments, rosters, certifications and reminders in one place. 15 days free, no credit card, then $59 a month.

15-day free trial. No credit card required.