Skip to main content

Your first booking

Your first booking

How a customer books a spot on one of your events, from the widget to confirmation.

1. Open the booking widget

Customers reach the widget in two ways:

  • Embedded on the company's site via the generated snippet, or
  • Directly at /widget/calendar (the URL the snippet's iframe loads).

The widget lists the company's upcoming published events that are inside their booking window. (Inside the staff app, the Bookings nav link opens the bookings manager — not the widget.)

2. Pick an event

Each event shows its date and availability. When remaining capacity drops below the event's show_bookable_threshold, the exact count is hidden but booking still works. Sold-out events offer the waitlist when the event has waitlist_enabled.

3. Choose seats / time

Depends on the event's booking_mode:

  • Classic — pick a seat in an area, then a time slot (seat_time capacity).
  • Free time — pick a people count and a time window. If the event has seats, the customer also picks a seat (no fixed time slot); without seats the window is booked on the event itself.

When the bookable exposes several price rows (e.g. adult, child), the customer sets a quantity per price; the people total must equal the sum of the per-price quantities.

4. Confirm and pay

  • Free bookings (total 0) skip payment and confirm immediately — state Free.
  • Paid bookings redirect to Stripe Checkout on the company's connected account. A capacity hold (booking.hold_minutes, default 30 min) reserves the spot while paying; booking.max_hold_lifetime_minutes (default 90 min) is the hard cap on the whole flow.
  • The bookings:expire-holds sweeper (every 5 min) expires lapsed holds — and settles Checkout sessions Stripe already captured, so a slow payment still confirms instead of being lost.

5. Done

The finish page (/booking/{booking}/{outcome}/finish) shows the booking code and an .ics calendar download. Reminder emails go out 24 h and 1 h before the event start (bookings:send-reminders, hourly).

Event full? With waitlist_enabled on, customers join the queue and receive an offer link when a spot frees up.

Cookies and privacy

We use essential cookies to keep the application secure and working correctly. Optional cookies will only be used with your consent.

Read the privacy policy Read the cookie policy

Essential

Essential cookies are required for the website to function and cannot be switched off.

Always on

Functional

Functional cookies enable enhanced functionality and personalisation, such as remembering your language and preferences.

Analytics

Analytics cookies help us understand how visitors interact with the application so we can improve it.

Marketing

Marketing cookies are used to track visitors across websites to display relevant and engaging advertisements.