Skip to main content
Version: 2.0.0

Use Cases

Set up an appointment-based service

Under Booking Hub → Services → New service, set Type to Appointment Booking and fill in Name, Description, and Capacity (the maximum number of reservations allowed per time slot). Turn on Exclude holidays and/or Exclude weekends if the service should not be bookable on the dates configured under Settings → Business hours and availability or on weekends. Save, then add one or more slots — each slot has its own name, duration, break (gap before the next slot), price, color (used on the calendar), and whether it's cancellable (with an optional cancellation condition shown to the customer). Slots can repeat and can be reordered by drag/sort order.

Set up an event-based service

Same starting point, but with Type set to Event Booking. Instead of recurring slots, an event service has dated occurrences: each has a name, start date, duration, capacity, price, color, and the same cancellable/cancellation condition options as appointments. Use this for one-off or scheduled occurrences like a workshop, a conference session, or a concert — capacity limits how many reservations one occurrence accepts.

Keep an appointment service within business hours

Business hours and the lunch break (Settings → Business hours and availability) bound when appointment slots are generated. A slot that would fall outside opening/closing time or inside the lunch break is not offered to customers. This only applies to appointment services — event occurrences are dated manually and aren't generated against business hours.

Block out holidays and weekends

Add dates to the holiday table under Settings → Business hours and availability. A service's own Exclude holidays and Exclude weekends toggles decide whether that service's availability actually honors the list — and, as of this writing, only appointment services check these toggles when generating slots. Event occurrences stay bookable on a holiday or weekend date even with the toggles on.

Run the booking flow

The site-side flow (via the booking-hub/services/* site routes registered while the plugin is enabled, see Developer API → Frontend templates) is: the visitor picks a service and an available slot/date, POSTs to reserve (creating a pending reservation and landing on the summary page, which lists everything they're about to book), fills in their contact details and confirms (POST to confirm-reservation, which requires at least an email address), and lands on the success page. A reservation can also be removed from the summary before confirming via delete-reservation.

Without YSCP customer accounts enabled, a reservation is tracked against a guest identifier rather than a logged-in user — the visitor doesn't need an account to book. With both Enable YSCP support and Enable YSCP customer accounts on (see Settings → Customer accounts), the visitor must be logged in, and the reservation is tied to their customer record instead.

Manage reservations from the CP

Booking Hub → Reservations lists reservations with active, pending, and past filters, lets staff change a reservation's status, export a day's reservations, and resend the confirmation email if a customer didn't receive it. Booking Hub → Dashboard gives an overview, and the calendar view (Booking Hub → Reservations → Calendar) shows reservations by slot color.

Remind customers about upcoming reservations

Reminder emails aren't sent by a request — they're driven by the bookinghub/reservations/send-notifications (near-term reminder) and bookinghub/reservations/send-future-notifications (further-out "coming up" notice) console commands, which need a cron entry. See Developer API → Console commands for the exact commands and the Notifications settings that control their lead times.

Surface bookings in the customer's account

With YSCP support and customer accounts both enabled, the customer's account navigation shows an active-reservations count and a link into their reservations, and they can cancel an upcoming reservation from there. For event-type services, cancellation is subject to the service's cancellation window; for appointment-type services, this cancellation window is not currently enforced on this flow. Without YSCP, reservations are guest-only and not tied to any account page.

See Settings for the fields referenced above, and Developer API for routes, console commands, and the Twig helpers available in custom templates.