Skip to content

Powered by Grav CMS + Helios Theme

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 migrate run once after this add-on went in.
  • Manage Bookings and Setup (kahunacart.bookings.manage) to do any of it, and kahunacart.products.manage for 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

  • Products - the product, its options, its price and its picture
  • Payments - what a client goes through when they pay