The cart and checkout system handles how users register for courses on your website. JoomCourses offers flexible checkout options including guest checkout, multi-step flows, and configurable registration forms.
Checkout Modes
JoomCourses supports two checkout layouts:
One-Step Checkout
Everything appears on a single page:
- Cart summary (items, quantities, prices)
- Coupon code input
- Login form (for guest users)
- Registration form (personal details)
- Additional attendees (if enabled)
- Payment method selection
- CAPTCHA (if enabled)
- Submit button
This is the fastest checkout experience for users.
Two-Step Checkout
The process is split across two steps:
Step 1:
- Cart review with items and totals
- Coupon code input
- Login or guest checkout selection
Step 2:
- Checkout method selection (registered vs. guest)
- Personal details form
- Additional attendees
- Payment method selection
- CAPTCHA
- Submit
Users can navigate back and forth between steps.
Configuring Checkout Steps
- Go to Components > JoomCourses > Configuration.
- Under Cart, find Checkout Steps.
- Select 1-Step or 2-Step.
- Save the settings.
Guest Checkout
By default, users must have a Joomla account to book courses. Guest checkout allows unregistered visitors to book without creating an account first.
Enabling Guest Checkout
- Go to Configuration > Cart.
- Set Guest Checkout to Yes.
- Optionally, set Registered Users Can Guest Checkout to Yes if you want logged-in users to also have the option to checkout as guests.
How Guest Checkout Works
- The user adds a course to the cart.
- At checkout, they see two options: "I'm a registered user" or "I'm a guest".
- Guest users fill in their personal details (name, email, etc.) without needing to log in or register.
- After checkout, a JoomCourses contact record is created for the guest with their details.
- A guest confirmation email is sent (if configured) with instructions for accessing their booking.
Customizing Guest Checkout Fields
You can exclude certain custom fields from the guest checkout form:
- In Configuration > Registration, find Exclude Custom Fields for Guest Checkout.
- Select the custom fields that should not appear during guest checkout.
Registration Form Fields
The checkout form collects personal details from registrants. You can control which fields appear and whether they are required.
Configuring Fields
Go to Configuration > Registration to configure each field:
| Field | Options |
|---|---|
| Salutation | Enable / Require / Enable for Guest |
| First Name | Enable / Require |
| Last Name | Enable / Require |
| Company | Enable / Require |
| Phone | Enable / Require |
| Address | Enable / Require |
| City | Enable / Require |
| Country | Enable / Require |
| VAT Number | Enable / Require |
| Identification Number | Enable / Require |
| Website | Enable / Require |
Each field can be independently:
- Enabled — Whether the field appears on the form
- Required — Whether the user must fill it in
- Guest enabled — Whether the field appears during guest checkout (for some fields)
Additional Attendees
For group bookings, users can enter names of additional attendees alongside their own details.
Enabling Additional Attendees
- Go to Configuration > Registration.
- Set Additional Attendees to Yes.
- During checkout, an "Additional Attendees" section appears where users can add names and details for each extra seat.
This is useful for:
- Corporate bookings where one person registers for a team
- Group discounts where one payment covers multiple people
Cart Features
Adding Items to Cart
On the frontend, users add course dates to their cart by clicking the Book Now button on a course listing or detail page. They can select:
- The specific course date
- The quantity (number of seats)
Cart Display
The cart shows:
- Course name and date
- Unit price (per attendee)
- Quantity
- Subtotal per item
- Coupon discount (if applied)
- VAT breakdown (if VAT display is enabled)
- Total
Quantity Management
If the Quantity option is enabled in cart settings, users can adjust the number of seats in the cart before checkout.
To show or hide the quantity field:
- Go to Configuration > Cart.
- Set Quantity to Show or Hide.
Removing Items
Users can remove individual items from their cart by clicking the remove button next to each item.
Coupon Code
If Show Coupon is enabled in cart settings, a coupon code input field appears in the cart where users can enter and apply discount codes.
Login Form in Cart
You can display a login form in the cart for users who already have an account:
- Go to Configuration > Cart.
- Set Login Form to Show.
- Returning users can log in directly from the cart page instead of navigating away.
CAPTCHA
To prevent spam registrations, you can add CAPTCHA verification to the checkout:
- Go to Configuration > Cart.
- Under CAPTCHA, select a Joomla CAPTCHA plugin (e.g., reCAPTCHA).
- Make sure the selected CAPTCHA plugin is installed and configured in Joomla's plugin manager.
The CAPTCHA challenge will appear before the submit button during checkout.
Capacity Checking
When Check Capacity is enabled in the general configuration:
- The system verifies available seats before allowing a booking to proceed.
- If the requested quantity exceeds available capacity, the user sees an error message.
- If the course date is completely full, users are offered the option to join the waiting list instead.
Cart Session
The shopping cart uses browser sessions to store items. This means:
- Cart contents persist as the user browses your site.
- Cart contents are lost if the user closes their browser or their session expires.
- Each user has their own independent cart.
Tips
- Use one-step checkout for the simplest user experience with few form fields.
- Use two-step checkout when you have many form fields or want users to review their cart before entering details.
- Enable guest checkout to reduce friction for first-time buyers.
- Only require essential fields — the fewer fields required, the higher your conversion rate.
- Enable CAPTCHA if you experience spam registrations.
- Test your checkout flow regularly to ensure it works smoothly from the user's perspective.