Getting started: a hair salon
Set up a salon with three stylists on different schedules, cut and colour appointments, and an evening workshop.
Run bin/plugin kahunacart-bookings seed salon 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) to do any of it, andkahunacart.products.managefor the three products.
1. Create staff schedules
Create three schedules under Bookings → Schedules → New hours. These let each stylist use the appropriate working week.
| Name | Days |
|---|---|
| Salon hours | Tuesday to Friday 09:00–17:00, Saturday 09:00–16:00 |
| Late shift | Wednesday to Friday 12:00–20:00 |
| Short week | Thursday to Saturday 09:00–13:00 |
Leave closed days without any hour blocks.
2. Add the salon location
Under Bookings → Locations, create The salon, enter its address and select Salon hours. Staff without their own schedule inherit these hours.
3. Add your stylists
Under Bookings → People and places → Add somebody or something, create three Person records at the salon:
| Name | Hours | Colour |
|---|---|---|
| Nina | Salon hours | orange |
| Priya | Late shift | blue |
| Dev | Short week | green |
Choose a distinct colour for each stylist. It identifies their appointments in the overview and front desk diary.
When the customer accepts any stylist, automatic assignment uses the first available person in the list.
4. Create a cut service
Under KahunaCart → Products → Add, create Cut and finish at $45 with Type set to Booking.
Find the product under Bookings → Services and press Set it up:
| Field | What to put |
|---|---|
| How long it takes | 45 minutes |
| Start times every | 15 minutes — a salon books on the quarter hour |
| Notice you want | 2 hours |
| How far ahead | 60 days |
| Cancelling shuts | 24 hours |
| Hours to fall back on | Salon hours |
Keep the remaining defaults, then press Add a need:
- What to call it: Stylist
- The customer picks which: ticked
- The pool: Nina, Priya and Dev
Enabling customer choice adds a staff selector to the product page. Without it, the salon assigns an available stylist.
5. Create a colour service
Make a product called Colour, type Booking, with two options: Full head at $140 and Roots at $95.
Set up the product's own rule:
| Field | What to put |
|---|---|
| How long it takes | 120 minutes |
| Start times every | 30 minutes |
| Clean-up after | 15 minutes |
| Notice you want | 24 hours |
| How far ahead | 60 days |
| Cancelling shuts | 48 hours |
| New bookings | Wait for you to say yes |
| Hours to fall back on | Salon hours |
Set Clean-up after to reserve fifteen minutes after a colour appointment. With no setup buffer, consecutive colours need a fifteen-minute gap.
Enable Wait for you to say yes when you need to assess a colour appointment before confirming it. The booking arrives as a request, holds the time and notifies you. Approval keeps the same time reserved.
Give it the same Stylist need as the cut: all three, the client chooses.
Open the Roots option and create a separate rule with a 90-minute duration and the same Stylist requirement. Other options inherit the product rule unless they have an override.
6. Add an evening workshop
Make a product called Colour workshop at $75, type Booking.
Under Bookings → Services, set How it is booked to It runs on a timetable. Complete the When it runs panel:
| Field | What to put |
|---|---|
| The first one | The next Thursday, at 18:00 |
| How it repeats | Leave it empty. This one is a one-off |
| Registration shuts | 24 hours before |
| One purchase buys | One date |
| A full date takes names | on |
| Places on each date | 8 |
| How long it takes | 150 minutes |
| How far ahead | 90 days |
| Cancelling shuts | 48 hours |
The first one uses local time. A class at 18:00 keeps that start time when the clocks change.
Add a Stylist requirement containing Nina only, with customer choice disabled. A class requirement selects a specific resource rather than offering a choice.
Classes can run outside normal opening hours. Saving the 18:00 workshop reserves Nina for that time even before anyone registers.
7. Test the booking page
Open Cut and finish in the storefront. Check that the calendar offers all three stylists and respects their hours.
Select Dev on Monday to confirm no times are offered. Select Priya on Wednesday to confirm the first available time is noon.
8. Review customer messages
A paid cut booking sends the order receipt with appointment details and a separate calendar invitation if enabled.
A colour request sends Booking request received to explain that approval is pending.
Both include Manage this booking, linking to the plugin-served /booking page. Customers can reschedule or cancel until the cutoff.
Continue setup
- Classes and waiting lists - the waiting list, and what happens when the workshop fills up
- The front desk - manage the daily diary from a staff tablet
- Calendar sync - let stylists subscribe to their appointments
- Taking payment - what a request does to the time while you decide