Getting started: a personal trainer
Set up half-hour and hour-long personal training appointments, plus a bootcamp sold as an eight-week course.
Run bin/plugin kahunacart-bookings seed trainer to create this example, then use the steps below to review it. You can also follow the steps to build it manually.
Before you begin
- KahunaCart installed and working, and
bin/plugin kahunacart migraterun once after this add-on went in. - Manage Bookings and Setup (
kahunacart.bookings.manage), andkahunacart.products.managefor the two products.
1. Set opening hours
Bookings → Schedules → New hours, called Training hours:
- Monday to Thursday, 06:00–20:00
- Friday, 06:00–14:00
Include any early or late hours when you accept appointments.
2. Add the gym location
Under Bookings → Locations, create The gym, enter its address and select Training hours.
3. Add the trainer
Under Bookings → People and places → Add somebody or something, add yourself as a Person at the gym using Training hours.
This resource lets the appointment service and bootcamp share your availability.
4. Create personal training appointments
Make the product — KahunaCart → Products → Add — called Personal training, type Booking, with two options: 60 minutes at $70 and 30 minutes at $40.
Bookings → Services, Set it up:
| Field | What to put |
|---|---|
| How long it takes | 60 minutes |
| Start times every | 30 minutes |
| Notice you want | 4 hours |
| How far ahead | 45 days |
| Cancelling shuts | 24 hours |
| Hours to fall back on | Training hours |
Add a Trainer requirement containing your record, with customer choice disabled.
Create a separate rule for the 30 minutes option. Use a thirty-minute duration and the same Trainer requirement.
Use service-only availability
A service without requirements uses its own availability and falls back to location and service hours. This can suit a single-service business run by one person.
For the appointment and bootcamp setup here, keep the shared trainer resource so both services reserve the same person.
5. Create the bootcamp
Make a product called Tuesday bootcamp at $160, type Booking.
Set How it is booked to It runs on a timetable, then complete When it runs:
| Field | What to put |
|---|---|
| The first one | The next Tuesday, at 18:00 |
| How it repeats | FREQ=WEEKLY;BYDAY=TU;COUNT=8 — every Tuesday, eight times |
| Registration shuts | 2 hours before |
| One purchase buys | The whole course |
| A full date takes names | on |
| Places on each date | 10 |
| How long it takes | 60 minutes |
| Cancelling shuts | 24 hours |
The first session uses local time. An 18:00 class remains at 18:00 when the clocks change.
Then one need: Trainer, you, no choice.
Course purchases
A course purchase reserves every remaining date under one course number. Joining in week three reserves the final six sessions.
Course availability is limited by the date with the fewest places left. If any remaining date is full, the course is full.
Choose One date instead for independently bookable sessions or one-off workshops.
Trainer availability during the course
Saving the bootcamp reserves the trainer on each scheduled Tuesday evening. Appointment availability excludes those times, and Bookings → Troubleshoot reports Trainer: teaching Tuesday bootcamp.
The trainer remains reserved even when no customers have registered yet.
6. Test the booking page
Open Personal training. Check that customers can choose sixty or thirty minutes and see a calendar without a staff selector.
Open Tuesday bootcamp to see a list of dates with available places and booking buttons. The price reads $160.00 for the whole course, whichever date you start on. Customers enter their party size in How many places before choosing a date.
Add [kahunacart-sessions /] to a page to display the bootcamp dates, remaining places and booking links. This list remains visible without JavaScript.
7. Manage the waiting list
Full dates offer Join the waiting list. Joining takes no payment and reserves no place.
When a place opens, the next customer receives an offer with a twelve-hour hold. Other customers cannot take it during that period. The place is confirmed when the customer pays.
The offer email links to the held place and its price. Customers add it to their cart and pay, confirming the existing booking under the same reference. If you choose to assign it yourself, use Give them the place on the register.
Continue setup
- Classes and waiting lists - recurrence, dates that are different, the register, the waiting list
- Emails and reminders - configure appointment reminders
- Calendar sync - your own diary on your own phone
- Services - every field on the rule
Related
- Products - the product, its options and its price
- Payments - what a client goes through when they pay
- Shortcodes - the other blocks a page's Markdown can carry