Reservation
canonical term:reservation | reference format: RSV_{YYMMDD}_NNNN
This document explains what a Reservation is, what data it captures about a guest’s booking, and how it relates to events, payments, and offers.
What Is a Reservation?
A Reservation is a guest’s booking for a specific event. It captures:- Who is coming — name, email, phone
- When — which event (show + date)
- How many — guest count
- What they bought — booking path, offers selected
- How much — all pricing computed by backend
- Payment status — paid, pending, refunded
- Check-in status — arrived, seated, not yet arrived
Reservation vs. Booking Draft
There are two states before a reservation is confirmed:| Term | Meaning |
|---|---|
bookingDraft | The in-progress reservation while the guest is still in the booking flow. Not yet submitted. |
reservation | A confirmed booking — guest has submitted and (usually) paid. |
bookingDraft is an ephemeral object in the booking flow. The reservation is a persisted database record that survives after the show.
The Two Booking Paths
Every reservation is on one of two paths:| Path | Meaning | Offers available in Choose Experience |
|---|---|---|
DINNER_SHOW | Show + dinner included | Dinner Show Packs |
TICKETS_ONLY | Show only, no dinner | Ticket Only Bundles |
- What appears in Choose Experience (offers)
- What is included in the base ticket price
- What the guest sees on the confirmation
What Happens in the Booking Flow
The guest moves through the conditional booking flow:| Section | What happens | Doc |
|---|---|---|
| 1 | Select event — choose show + date | Select Date |
| 2 | Guest count — total attending guests | Guest Count |
| 3 | Experience — select offers (bundles, packs, add-ons) | Choose Experience |
| 4 | Menu review — confirm the active menu PDF | Menu Review |
| 5 | Conditional add-ons — Tickets Only + No Extra Bundle | Add-ons |
| 6 | Guest details and personal requests | Guest Details |
| 7 | Medical and dietary notes | Guest Details |
| 8 | Payment — redirect to OnePay | Payment |
| 9 | Confirmation — reservation confirmed, payment recorded | Confirmation |
bookingDraft becomes a reservation.
What a Reservation Records
Guest Information
The primary guest’s contact details — used for confirmation email, WhatsApp updates, and operational contact.Booking Details
Offer Selections
What the guest added in Choose Experience. These are stored asofferSelections on the reservation:
Pricing Summary
All pricing is computed by the backend. The frontend displays it but never recalculates.Payment Status
Check-in Status
The Three Identifiers of a Reservation
| Identifier | Example | Purpose |
|---|---|---|
id (ULID) | 01ARZ3NDEKTSV4RRFFQ69G5FAV | Machine identity — joins, API |
reference | RSV_260603_0001 | Internal ops identifier |
guestReference | HOL_260603_0001 | Guest-facing identifier — shown on confirmation, used for support |
guestReference (e.g. HOL_260603_0001) is what the guest uses to identify their booking — it is shorter and more memorable than the internal reference.
Reservation Status Lifecycle
DRAFT reservation is abandoned if the guest leaves mid-flow. A CONFIRMED reservation has been submitted. Once payment is recorded, it becomes PAID.
Key Fields
| Field | Type | Notes |
|---|---|---|
id | ULID | Machine identity |
reference | string | e.g. RSV_260603_0001 |
guestReference | string | Guest-facing, e.g. HOL_260603_0001 |
showEventId | ULID | FK to the event |
guestName | string | Primary guest |
guestEmail | string | Contact |
guestPhone | string | Contact |
guestCount | number | Seats reserved |
bookingPath | enum | DINNER_SHOW or TICKETS_ONLY — see Pricing Model for the full decision matrix |
status | enum | DRAFT, CONFIRMED, CANCELLED |
paymentStatus | enum | PENDING, PAID, REFUNDED |
checkInStatus | enum | NOT_CHECKED_IN, CHECKED_IN, SEATED |
specialRequests | string | Dietary, accessibility, occasion |
offerSelections | array | Offers chosen in Choose Experience |
priceSummary | JSON | Backend-computed pricing breakdown |
See Also
- Event — the showEvent this reservation is for
- Payment — the financial record for this reservation
- Offer — what was selected in Choose Experience
- Fulfillment — what the guest will receive
- Booking Flow Overview — the current conditional journey from event selection to confirmation
- Choose Experience — where offers are selected
- Payment — where payment is initiated via OnePay
- Confirmation — the confirmed booking receipt
