How student checkout works
What a student sees when registering for a class, step by step from Your Info to Payment, and what JoinCPR checks, records and emails along the way.
Updated · JoinCPR help center
This is what a student experiences when they click Register on your portal, so you can answer their questions and configure the right options. Group checkout is covered in Group registrations.
Before checkout opens
The student is bounced back with a message if the class is unpublished or cancelled ("This class is not available for registration."), past the registration cut-off ("Registration for this class has closed.") or full ("This class is full. No spots remaining."). Seats held for open waitlist offers count as taken.
A student arriving from a waitlist offer link sees a green banner ("Your waitlisted spot is held for you until …") with their details filled in, and the held seat is theirs for the rest of checkout. An expired or already-used link sends them to the class page, where they can rejoin the waitlist.
While Payment Mode is Test, an amber banner reads "Test mode — no real charges will occur." See Connecting Stripe or Square.
The steps
Steps appear only when relevant to the course: Your Info → Questions → Add-Ons → Agreements → Summary → Payment. The step order is enforced on the server; a student cannot skip ahead.
Your Info
First name, Last name, Email (required) and Phone (optional). Two optional extras:
- Text me a reminder before my class: shown only when SMS reminders are enabled. Unchecked by default, with the carrier-required consent wording beside it.
- Create an account: password fields for a student account. See Student accounts.
When Require account for registration is on under Student Portal settings, guest checkout is off and the step says "An account is required to register":
- A logged-in student sails through with their details filled in.
- A new email creates the account: the password fields are required and the Welcome Email is sent.
- An email that already has an account is told to log in. Log in opens the login page and returns to the same checkout afterwards.
- An email with past registrations but no password is not allowed to set one from the form, since that would let anyone claim someone else's history. Instead a set-password link is emailed; the student sets it, logs in, and lands back on the checkout.
- Someone arriving from a waitlist offer link has already proved they own the email, so they simply choose a password if their record has none.
For a group registration only the person paying needs the account. Staff walk-ins from the roster and client-portal bookings are never affected.
Matching is by email within your business. A new email creates a student record. An existing email reuses the record: the stored name is kept (the form's name is replaced with it), a blank phone is filled in, and no password is set from this form. If the email already has an active registration for this class the student sees "This email address is already registered for this class."
Questions
Your course's active registration questions, required ones enforced.
Add-Ons
Toggle switches for the course's active add-ons, one of each, with a running subtotal.
Agreements
Each agreement must be opened with Read & Agree and accepted with I Agree. Acceptance time and IP address are recorded.
Summary
The price breakdown (Class, add-ons, Discount, Total) and a Have a promo code? box. Codes are validated instantly; see Promo codes. If the total is $0 (free class, or a code that covers it) the registration completes here and the Payment step is skipped.
Payment
What the student sees depends on your setup:
| Your setup | Student sees |
|---|---|
| Stripe active and connected in the current mode | Stripe's card form and Pay $X. Apple Pay and Google Pay appear if enabled in your Stripe account. |
| Square active and connected | Square's card form and Pay $X |
| No processor connected in the current mode | "Online payment is not available… You can still register and arrange payment directly with them." and Register (Pay Later) |
The server verifies every payment before recording it: right amount, right class, not already used. If the last seat was taken while the student was paying, the charge is refunded automatically and they see "This class is now full. Your payment (if any) has been refunded."
What gets created
| Flow | Registration status | Payment | Receipt |
|---|---|---|---|
| Card payment | Confirmed | Paid | Yes, with card brand and last four |
| Free ($0 total) | Confirmed | Free | No |
| Pay later | Pending | Unpaid | No |
Plus, for every flow: selected add-ons at their current price, question answers, agreement acceptances, and a keycode if the course has an active keycode bank with stock. The promo code's use count goes up by one.
If the class is a private corporate class, the registration is also attached to that client and the student is matched to (or added to) the client's employee list. See Private registration links.
Emails the student receives
- One Registration Confirmation email, with the receipt PDF attached when there was a payment. Pay-later students get the same email with "Payment due". The subject and body are editable under Email templates.
- Your Keycode as a separate email if a keycode was assigned.
- No SMS at registration; the only SMS is the pre-class reminder.
- If your Stripe account sends its own receipts, the student may also get one from Stripe.
The success page
For an online class the success page shows the meeting link and joining instructions; for a blended course it shows the "Before class" note and link. See Virtual and blended classes.
"Registration Confirmed!" (or "Registration Received!" for pay-later, with "Your spot has been reserved. Please arrange payment with {Company}…"). It shows the class details, the student's name, status, amount paid and add-ons, plus Google Calendar and Apple Calendar (.ics) buttons. There is no receipt link on this page; the receipt arrives by email and, if student login is enabled, under My Account.
Things students cannot do themselves
Students cannot cancel, reschedule, transfer or refund a registration, or change their email address. Those are staff actions from the roster or student profile.