Getting started: a dog groomer
Set up two groomers sharing one tub. The service will offer appointments only when a groomer and the tub are both free.
Run bin/plugin kahunacart-bookings seed groomer 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 product.
1. Set opening hours
Bookings → Schedules → New hours, called Grooming hours:
- Tuesday to Friday, 09:00–17:00
- Saturday, 09:00–13:00
Leave Monday and Sunday without hour blocks to keep them closed.
2. Add the grooming location
Under Bookings → Locations, create The grooming room, add its address and select Grooming hours.
3. Add the groomers
Under Bookings → People and places → Add somebody or something, create Ann and Bo as Person records. Assign both to the grooming room and Grooming hours, with distinct colours.
Put the preferred groomer first in the list for bookings where the customer does not choose.
4. Add the shared tub
Add an Equipment record called The tub. Set How many of them to 1 and assign the same schedule and location.
Requiring the tub prevents simultaneous appointments that would compete for the same equipment, even when both groomers are available.
5. Create the grooming service
Make the product — KahunaCart → Products → Add — called Full groom, type Booking, with two options: Small dog at $55 and Large dog at $80.
Bookings → Services, find it, Set it up:
| Field | What to put |
|---|---|
| How long it takes | 60 minutes — that is the small dog, and it is the product's own rule |
| Start times every | 30 minutes |
| Clean-up after | 15 minutes, to clean the tub |
| Notice you want | 2 hours |
| How far ahead | 60 days |
| Cancelling shuts | 24 hours |
| Hours to fall back on | Grooming hours |
A clean-up buffer after the service leaves fifteen minutes between consecutive grooms. No setup buffer is needed for this example.
Then two needs, in this order:
| What to call it | The customer picks which | Pool |
|---|---|---|
| Groomer | ticked | Ann, Bo |
| Tub | not ticked | The tub |
Put the groomer requirement first. It determines candidate times and whether customer choice displays separate groomer columns.
6. Add a longer option
Open Large dog under Services. Create a rule with a 90-minute duration and the same two requirements and other settings.
The Small dog option inherits the product’s sixty-minute rule.
7. Test availability
Open Full groom, choose Large dog and select a day. The offered times must fit both a groomer and the tub for ninety minutes plus clean-up.
Book a time, then check availability again. Both groomers should lose access to the occupied tub. Bookings → Troubleshoot identifies the restriction as Tub: booked.
8. Review customer messages
Paid customers receive an order receipt with the service, option, time and groomer. If enabled, they also receive a calendar invitation and reminders a day and an hour before the appointment.
Messages include Manage this booking, linking to /booking for rescheduling or cancellation up to the cutoff.
9. Take a telephone booking
Open Bookings → Bookings, search by customer name or reference, then open the appointment to manage it.
For counter staff, use the front desk on a tablet.
Continue setup
- Services - every field on the rule and what it does
- People and places - time off, and switching somebody off when they leave
- Calendar sync - block busy times from outside calendars
- Bookings and Troubleshoot - the screen that says which of the two was busy