When I started on KahunaCart, the plan was a shop for things: downloads, licences, subscriptions, boxes in the post. But a lot of people who run small businesses on Grav don't sell things at all. They sell an hour in a chair, a spot in a Tuesday class, or a week at the beach. Until now they needed a separate booking service for that, with its own checkout, its own customer list and its own monthly bill. So we built two add-ons that do it inside your shop. KahunaCart Bookings and KahunaCart Rentals are available today.
Bookings: appointments and classes
Set a product's type to Booking and its page grows a calendar. Customers see the free days and times, pick a staff member if you allow it, and pay through the same cart and checkout as everything else in your store. Picking a time holds it for fifteen minutes while they finish. You can also take payment on the day, and free bookings skip the cart entirely.
The part I'm proudest of is how it handles what a service needs. A dog groom needs a groomer and a tub. A haircut needs a stylist and a chair. You list your people, rooms and equipment, tell each service what it needs, and the shop only offers times when everything is free. Ten identical axe lanes are one record with a capacity of ten, not ten records you have to keep in sync.
Also in the box:
- Classes and courses with a register for each date and a waiting list when a class fills up. When a place opens on a paid class, the next person is offered it and it's held while they pay.
- A diary with a row for each person, room and piece of equipment, working hours and time off behind the bookings, and conflicts in red.
- Troubleshoot, which tells you why a time isn't on offer, with reasons like Tub: booked.
- Emails and reminders: confirmations, a reminder a day and an hour before, a thank-you afterwards, and a link where customers can reschedule or cancel up to your cutoff.
- Calendar feeds so staff can see their appointments on their phones, and imported calendars to block time that's already taken.
A front desk for your staff
The front desk is the piece I'd show a salon owner first. Give your reception tablet a site account with front desk access and open /desk. Staff see the day in columns, tap to check someone in, press and hold to move an appointment, and use New booking for walk-ins and phone calls. Each appointment shows what's owed in plain words, like Deposit paid, $25.00 to pay today.
Desk staff never see the admin, your orders, your payment providers or refunds. You can give reception the whole diary or give a stylist just their own column.
Rentals: let it by the night
Rentals sits on top of Bookings and adds nightly stays for holiday lets, B&B rooms, cabins, pitches or anything else you rent by the day. Guests pick arrival and departure dates on a calendar that shows availability and changeover days, and they get an itemised quote before they pay.
You set the rules once per property:
- Check-in and check-out times, with same-day changeovers when check-out comes first
- Minimum and maximum stays, and which weekdays guests can arrive or leave
- A standard nightly rate, with dated seasonal bands on top (Christmas week can sit inside a winter season)
- Cleaning fees per stay and extra-guest fees per night, each shown on its own line
- A deposit at checkout, with the balance due a set number of days before arrival and a payment link sent to the guest
- A cancellation policy that works out the refund and hands you a request to approve
Rentals also swaps calendar links with Airbnb, VRBO and Booking.com, so a stay booked there blocks the nights on your site, and a stay booked on your site blocks them there. Only "Not available" and two dates go out. Guest names and prices never leave your server. Calendar sync runs on each site's refresh schedule, so two sites can still sell the same dates in between. The channel sync docs explain how to handle that when it happens.
Try all three demo businesses
The demo now runs three made-up businesses, each with its own look:
- Hollis & Fern, a hair salon, on Bookings
- Ironbark, an axe-throwing range with lanes and party sizes, on Bookings
- Saltmeadow, a beach house let by the night, on Bookings + Rentals
Book something, then open the front desk or the admin to see it from the owner's side. The sign-in details are on the demo page, nothing is charged, and every booking is wiped on the hour. The Bookings and Rentals pages have screenshots of every screen too.
Also new in the core
A few things went into KahunaCart itself while these were being built, and they're useful well beyond bookings:
- Pay what you want. Tick Let shoppers name their price on a product and the buy button gets a Name your price box, with a minimum, an optional suggested price and an optional maximum. See pay what you want.
- Deposits at checkout. Customers can now pay a deposit at checkout or from a pay link, and the store asks for the balance on its own when it's due. See deposits.
- Bundle suggestions. If a shopper has the parts of a bundle in the cart separately, the cart offers them the bundle instead.
- Customers in more than one group, and price lists that show their discount on the product page rather than only in the cart.
Get started
Bookings and Rentals need KahunaCart 1.2.11 or later.
- Bookings is $149.
- Rentals only is $149, for sites that already own Bookings.
- Bookings + Rentals is $249 for both.
Each one is a one-time purchase for your site, and updates are covered by your site's single renewal. If you buy the two separately in one cart, the store will offer you the bundle and save you $49. Add them to your licence in the store, install them through Grav's plugin manager, and follow the Bookings setup guide. The docs include ready-made examples for salons, groomers, personal trainers, massage therapists, ranges, holiday lets and a four-room B&B, each with a seed command that builds a working setup you can poke at.
If you run a salon, a studio, a range or a holiday let on Grav, I'd really like to hear how this fits your business. Come and tell us on Discord.
Andy