Skip to content

Powered by Grav CMS + Helios Theme

Getting started: a shooting range

Set up ten interchangeable lanes for hourly hire, a classroom and a Saturday safety course. This example books equipment and space without assigning staff.

Run bin/plugin kahunacart-bookings seed range 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), and kahunacart.products.manage for the two products.

1. Set opening hours

Bookings → Schedules → New hours, called Range hours:

Day Hours
Monday to Thursday 10:00–21:00
Friday 10:00–22:00
Saturday 09:00–22:00
Sunday 11:00–18:00

2. Add the range location

Under Bookings → Locations, create The range, add its address and select Range hours.

3. Add a pool of ten lanes

Bookings → People and places → Add somebody or something, set What kind to Equipment, call it Lanes, and set How many of them to 10.

Use one record with a capacity of ten for interchangeable lanes. Use separate records only when customers or staff need to select a specific named lane.

Ten units allow ten simultaneous lane reservations.

4. Add the classroom

Add somebody or something again, this time a Room or space, called The classroom, How many rooms 1.

The safety course reserves the classroom. Keeping it separate from the lanes leaves lane capacity available during the course.

5. Create the lane hire service

Make the product — KahunaCart → Products → Add — called Lane hire, type Booking, with two options: One hour at $25 and Two hours at $45.

Bookings → Services, Set it up:

Field What to put
How long it takes 60 minutes
Start times every 60 minutes — a range books on the hour
How many at once 1
Party size up to 4
Notice you want 0
How far ahead 30 days
Cancelling shuts 2 hours
Paying On the day
Hours to fall back on Range hours

Set Notice you want to 0 to allow short-notice bookings.

Add a Lane requirement containing Lanes, with customer choice disabled.

Give the Two hours option its own rule with a 120-minute duration. Keep the same requirement, party size and other settings.

Take payment on the day

With payment set to On the day, the customer enters a name and email to confirm the booking. There is no cart, checkout or order. Collect payment when they arrive.

Set party size and lane capacity

Configure booking capacity separately from the number of people sharing a lane.

How many at once counts simultaneous bookings, not people. Leave it at 1 for this setup, where each booking uses one lane. Use Party size up to for the group size.

Set Party size up to to 4. The storefront asks How many people before the customer chooses a time. The booking, receipt, email and counter view record that number, while the booking still reserves one lane from the pool of ten.

Party size does not change the lane price. Per-person appointment pricing is not supported.

6. Create the safety course

Make a product called Saturday safety course at $60, type Booking.

Set it up, and change How it is booked to It runs on a timetable:

Field What to put
The first one The next Saturday, at 09:00
How it repeats FREQ=WEEKLY;BYDAY=SA — every Saturday, for ever
Registration shuts 12 hours before
One purchase buys One date
A full date takes names on
Places on each date 12
How long it takes 120 minutes
Cancelling shuts 24 hours
Paying In the basket — you want this one paid for before they turn up

Then one need: Room, pool of The classroom, no choice.

Use Dates that are different for exceptions. Mark a date is off to cancel that occurrence, or use runs at to change its local start time. Exceptions follow local time through clock changes.

7. Test availability

Test Lane hire by making ten bookings for the same Saturday afternoon slot. The eleventh should be unavailable.

Add [kahunacart-sessions /] to a page to display upcoming Saturdays, remaining places and booking links. The timetable remains visible without JavaScript.

8. Manage the waiting list

After twelve places are booked, the course offers its free waiting list. Joining reserves no place.

When a place opens, the next customer receives a twelve-hour offer to pay for it. The place remains held during that period.

Customers can pay through the offer link. If you collect payment separately, use Give them the place on the register. See Classes and waiting lists.

9. Use the front desk

Use the front desk on a counter tablet to view lane bookings, create walk-ins, check customers in and mark appointments complete.

Walk-ins bypass notice and booking-window limits. Lane availability is still checked.

Continue setup

  • Products - the product, its options and its price
  • Payments - the cart and the providers, for the course
  • Shortcodes - the other blocks a page's Markdown can carry