Skip to content

Powered by Grav CMS + Helios Theme

Settings reference

Manage plugin settings under Plugins → KahunaCart Bookings, Bookings → Settings, or in user/config/plugins/kahunacart-bookings.yaml.

These settings provide store-wide defaults and control features such as temporary holds. Service-specific rules belong on the service.

Before you begin

  • kahunacart.settings to open the form and save it.
  • A text editor and a deploy step, if you would rather write the YAML.

Booking defaults

These values apply when the service has no override for its interval, notice period, booking window or buffers.

An explicit zero overrides the store default; an empty value inherits it.

Setting Key Default What it does
Slot interval booking.slot_interval 30 Minutes between offered start times, measured from the start of each opening interval.
Minimum notice booking.minimum_notice_hours 2 Hours of warning you want before an appointment. Anything sooner is not offered
Booking window booking.window_days 60 How far ahead a customer may book, in days. Zero means as far ahead as they like
Buffer before booking.buffer_before 0 Minutes of setup time kept free ahead of every appointment
Buffer after booking.buffer_after 0 Minutes of clean-up time kept free after every appointment
Week starts on booking.week_starts_on mon Which day a week begins on in the calendars and the pickers
How times are written time_format 12 Display 6:00pm in 12-hour format or 18:00 in 24-hour format throughout the store.

Add the clean-up buffer after the earlier appointment to the setup buffer before the next. Fifteen minutes of clean-up with no setup leaves a fifteen-minute gap; fifteen minutes of each leaves thirty minutes.

Temporary holds

Setting Key Default What it does
Hold in the cart hold_minutes 15 Minutes a picked time is held while the customer is still shopping
Hold on the payment page payment_hold_minutes 60 Minutes a picked time is held once the payment page opens

Cart holds and payment holds use separate durations. A hosted payment page may need more time than the cart hold allows.

The payment hold is always at least as long as the cart hold, regardless of the configured values.

Taking payment

Setting Key Default What it does
When you are paid payment online Whether the store asks for the money when the booking is made or when the customer turns up
Reference prefix reference_prefix BK What every booking reference starts with, so BK-7K3M9Q reads as yours

A single service can say it takes payment on the day when the store normally charges up front — a consultation, a first visit, a quote. It cannot say the opposite: a store set to take payment on the day takes payment on the day. See Taking payment.

The reference prefix accepts up to eight letters or numbers. Choose a value staff can recognise when customers quote a reference.

Calendar sync

Setting Key Default What it does
What a published calendar says feed_privacy full How much of a booking goes into a person's own calendar link
Recheck other calendars every busy_feed_minutes 15 Minutes before an outside calendar is fetched again

Set feed_privacy to full, initials or busy. A resource can override the default. Use busy to publish occupied times without appointment details.

busy_feed_minutes is how long a fetched copy counts as fresh, and it is a cost question rather than a correctness one: every availability question is answered from the cached copy until it goes stale. A calendar that will not load never closes the diary. See Calendar sync.

Storefront picker

Setting Key Default What it does
Other sites that may book public.allowed_origins empty Other sites that may book against this store

Public booking endpoints check the request origin before accepting writes. Requests from your own store are allowed automatically.

Add an origin such as https://shop.example.com only when booking forms run on another site. Include the scheme and host, without a path.

Messages

Setting Key Default What it does
Manage page manage_route /booking Where a guest changes their own appointment
Reminders reminders.lead_hours 24, 1 Hours before the start a reminder goes out, separated by a comma
Send a thank-you followup.enabled on Whether to say thank you after an appointment
Thank-you delay followup.after_hours 2 Hours after the appointment ends
Keep finished bookings for retention_days 0 Days after which a finished booking is thrown away. Zero keeps everything

Manage page defaults to /booking, which the plugin serves automatically. To customise it, create a page at the same route with [kahunacart-booking-manage /]; your page takes precedence. Choose another route if /booking is already in use. Clear the setting to disable the page and remove its link from messages.

Reminders specifies lead times in hours. Each reminder is sent once per appointment and lead time, even with multiple workers. Clear the field to disable them.

Keep finished bookings for defaults to zero, which disables pruning. A retention period removes old cancelled, rejected, expired and completed bookings. Pending and confirmed bookings are never pruned.

Enable or disable individual messages under KahunaCart → Settings → Notifications. See Emails and reminders.

Classes and waiting lists

Setting Key Default What it does
When a place comes free waitlist_promotion auto Offer it straight away, or By hand
How long an offer lasts waitlist_offer_hours 12 Hours a place is held for the person it was offered to while they pay for it

The offer window applies only to classes requiring online payment. For free classes and payment on the day, the next waiting customer receives the place directly.

Configure the timetable, capacity, waiting list and single-date or course purchase rules on each class. See Classes and waiting lists.

Front desk

Setting Key Default What it does
Front desk desk.enabled true Whether the staff app is served at all. Off, and the route is not there
Where it lives desk.route /desk The address staff open on the tablet

Anything starting with a slash works. See The front desk.

Complete configuration file

YAML
enabled: true

booking:
  slot_interval: 30
  minimum_notice_hours: 2
  window_days: 60
  buffer_before: 0
  buffer_after: 0
  week_starts_on: mon

time_format: '12'

hold_minutes: 15
payment_hold_minutes: 60

feed_privacy: full
busy_feed_minutes: 15

manage_route: /booking

reminders:
  lead_hours: '24, 1'

followup:
  enabled: true
  after_hours: 2

retention_days: 0

desk:
  enabled: true
  route: /desk

waitlist_offer_hours: 12
waitlist_promotion: auto

enabled is Grav’s plugin switch. Disabling it stops the booking storefront, desk and admin section. Existing bookings remain, and order-refund hooks continue to cancel linked bookings.

  • Services - where the per-service answers live, which is most of them
  • Taking payment - what the two hold lengths and the payment setting mean for the customer
  • Calendar sync - the two calendar settings in full
  • Configuration - the base plugin's own settings, where the currency, the shop's route and the job queue live
  • Notifications - which of the eighteen messages go out, which is not set here