Reservations & availability
The reservation book lives at /reservations — the Concierge view.
It shows one day at a time (use the arrows or the date button to move days)
and has two views, toggled at the top right:
- Manifest — the day's bookings as a list. This is the book.
- Availability — every experience's time slots for the day, with how full each one is.
The header keeps score for the day: ARRIVALS counts parties still expected or checking in against all non-canceled bookings, and PENDING counts no-shows.

The reservation book — the day's manifest, with search, grouping, and the Manifest / Availability toggle.
Who can use it
- See the book —
reservations.read; every standard role has it. - Create bookings —
reservations.create; also held by every standard role, from Manager down to Viewer. Without it, the Add button is disabled ("Your role doesn't allow creating reservations") and the create page shows "Permission required". - Edit and cancel —
reservations.update/reservations.cancel: Manager, Concierge, and Ambassador (and Admins). - Experiences, slots, and capacity (
/admin/experiences, the builder) — Admins and Managers only (experiences.update,availability.generate, and friends). Everyone else sees availability read-only.
Read the manifest
Columns: Experience, Guest, Time & Party, Location, Status. Each row shows the experience (or General), the guest (VIP star and badges when they apply), the time and "Size N", the location and table, and a status badge. Ad-hoc bookings carry an extra AD HOC badge.
The seven statuses you'll see, in lifecycle order:
| Badge | Meaning |
|---|---|
| CONFIRMED | Booked, not yet arrived. |
| CHECKING-IN | Checked in — the party is in the queue, seatable. |
| SEATED | At a table with an open visit. |
| PAID | Settled. |
| REFUNDED | Payment returned. |
| NO SHOW | Never arrived (counts in the PENDING badge). |
| CANCELED | Canceled — the slot was released. |
Find things with the search box ("Search by name, table, or experience..."). Tapping a row opens the reservation's detail.
Grouped view and the tabs workspace
- Grouped (on by default) folds related bookings — same guest cluster — into one row with a +N count badge; expand it to see each child. All Locations widens grouping across your whole company.
- Groups where every child is confirmed, on a single experience, can be merged into one party (Merge / Unmerge). Groups that span locations are labeled "Cross-location groups are display only. Merge is not supported."
- Open All on an expanded group opens each booking in the tabs workspace — a split panel on the right where multiple reservations stay open side by side. (Past ten tabs Avero warns "You have more than 10 reservation tabs open. Performance may degrade.")
Check in and cancel from the book
- Rows with status CONFIRMED show a Check In button — it drops the party into the arrivals queue, same as checking in from the Visitors page.
- The row's kebab menu holds Cancel reservation (disabled for canceled, paid, or refunded bookings). Avero confirms — "Cancel reservation?" — "Cancel reservation for [guest] at [time]? This frees the slot and notifies the guest." — with Keep reservation / Cancel reservation.
Cancel releases the booked capacity immediately and sends the guest a cancellation notice. There's no undo — rebook if it was a mistake.
No-shows
Marking no-show also releases capacity, but sends no cancellation email. If your reservation policy sets an auto no-show grace period (configurable at company, brand, experience, or event scope), Avero sweeps every 5 minutes and marks still-unarrived confirmed reservations that are past their start time plus the grace period.
The Actions menu
| Action | What it does |
|---|---|
| Print Reservations | Opens the day on the Daily Sheet — the run-of-day view. |
| Export Reservations | The Export Reservations dialog — "Download a CSV of reservations. Choose a date range or export all time." |
| Hold Time | The Hold Time Block dialog — "Block a time range from appearing as available…" Pick location, start/end, and a reason ("Private event, maintenance, staff meeting…"). Existing holds are listed with delete. |
| Ad Hoc Reservation | An off-the-books booking — "Capacity limits are not enforced for ad hoc reservations." Party size up to 200. Hidden without reservations.create. |
A time hold rejects new bookings in its window ("Time slot is blocked by an active hold"), but the Availability grid doesn't gray held slots out — the block lands when someone tries to book.
Create a reservation
Add in the header (or New Reservation on the Visitors page) opens
/reservations/new — one scrolling form.

The New Reservation form — guest search on top, then date, party, experience, time slot, and table.
- Guest — search "Search by name, phone, or email...". No match?
Quick Add captures name/email/phone inline (with duplicate
detection); Full Intake opens the full guest form. Both need
guests.create. A newsletter subscription toggle lets you opt the guest in as part of booking. - Date and Party Size (1–12 in the select).
- Location, then Experience — the experience select unlocks once a location is chosen. "No specific experience" books free-form time instead.
- Time — the slot picker shows the experience's bookable slots for that date; full or closed slots are disabled. If nothing shows: "No available times for [date]. Try selecting a different date or contact a manager for assistance." With no experience selected, you get plain half-hour times inside the location's operating hours.
- Floor and Table (optional) — tables show "(seats N)", and unavailable ones say why ("— reserved", "— held for [event]").
- Notes ("Special requests, dietary restrictions...") and Allergies & Dietary Restrictions — tag allergies and add notes that follow the visit.
- Tap Create Reservation. You'll get "Reservation created successfully" and land back on the book with the new row highlighted.
Take payment at booking
Create & Collect Payment creates the booking and opens the Collect Payment dialog — "How would you like to collect payment?":
- Send Payment Link — a Stripe checkout link to share with the guest
(needs
payment_links.create). - Card Present / Terminal — a card reader at this location.
- Open POS Payment — opens the POS with the reservation charge
pre-loaded — "supports cash, card, gift card, and more" (needs
checks.create).
The same dialog is reachable later from the detail page's Payments panel.
When the slot is nearly full
If the experience limits how many separate groups can share a slot and that limit is hit, staff get an override: "Group Capacity Reached" — "The maximum number of groups for this time slot has been reached. As a staff member, you can override this limit to proceed with the booking." — Cancel / Override & Book. (Online guests are simply blocked.)
If the people capacity is exhausted, there is no override — see Troubleshooting.
Reservation detail
Tapping any booking opens /reservations/:id — the same form, in edit
mode, plus three panels:
- Payments — the booking's payment state (Unpaid, Pending, Awaiting Payment, Paid, Expired, Failed, Canceled, Refunded), with Collect Payment / Copy Payment Link actions.
- Guest Insights — VIP/club/spend badges, visit history, alerts, wine
club status, preferences, and a Quick Note box. Read-only without
guests.update. - Merged reservations — the group, when the booking is part of one.
Edits save with Update Reservation (needs reservations.update). A red
Cancel Reservation button runs the same confirmation as the manifest.
Canceled bookings become read-only: "This reservation has been canceled and
is read-only."
Check-in doesn't live on the detail page — check parties in from the book row, the Visitors page, or the floor's Arrivals drawer. From the floor, an occupied table's detail panel also links each seated party back to its reservation — see Floor & seating.
The Availability view
The Availability toggle swaps the manifest for the day's capacity grid: one row per active experience (Experience, Location, Dur., Price, Available Time Slots).

The Availability view — solid slots are open, Limited means over 70% booked, Waitlist means full or closed.
Each slot chip is color-coded: solid = open, Limited = more than 70% booked, Waitlist = full or closed. Tapping an open slot jumps straight into the create form with date, time, experience, and location pre-filled. + CUSTOM starts a free-form booking, and a Time Holds section lists the day's holds with their reasons.
What makes a slot bookable
Behind the grid, availability is built from three things — all managed by
Admins and Managers at /admin/experiences (tabs: Experiences,
Templates, Slot Rules, Capacity):
- Experiences — the bookable products (a seated tasting, a tour). Each has a duration, per-person price, optional deposit, and guest limits.
- Slot templates + slot rules — reusable sets of times, assigned to an experience for a given location and day of week.
- Generated capacity — the actual bookable inventory, created for a date range.
Capacity is measured in people, not reservations — a slot with capacity
20 can hold one party of 20 or ten parties of 2. What's left is always
total − held − booked. An optional "Max Groups at One Time Slot" on
the experience additionally caps how many separate parties share a slot
(that's the staff-overridable gate above).
A date with no generated capacity takes no reservations — the Capacity tab says it plainly: "No capacity configured for this date" — "Bookings are closed by default until capacity is generated." If the book looks mysteriously empty of bookable times, generate capacity first.
The Experience builder
Open in Builder on any experience card opens
/admin/experiences/:experienceId/builder — a five-step wizard:
Basics, Location & Ops, Seating & Rules, Schedule, and
Review & Activate. The flow a manager actually runs:

The Experience builder — the five-step wizard, autosaved as you type.
- Basics — name, description, type, brand, Price ($) per person, SKU and tax settings.
- Location & Ops — location, Duration, Turnaround ("Buffer between reservations for cleanup."), optional Max Capacity, and Deposit ($) ("Default deposit amount per person in dollars.").
- Seating & Rules — min/max guests, Max Groups at One Time Slot, the Booking Window (start/end dates), and Capacity Window (days) ("How far ahead to generate capacity slots (rolling window from today).").
- Schedule — pick the days it runs, then Auto-Generate Slots builds the day's slot times from the location's opening hours and the experience's duration + turnaround (or add slots by hand). Each slot can Inherit the base per-person price or Override it; overrides sit in draft until you Publish Pricing ("Published prices will immediately take effect."). Finish with Apply Schedule — "Templates and slot rules have been created/updated." Until then a banner reminds you the draft isn't live yet.
- Review & Activate — a prerequisites check, then Activate (Internal Only) or Activate & Publish to Web. Activation kicks off capacity generation automatically ("Experience is now active. Generating capacity..."), and the page tracks it to "Capacity generated successfully" (with a Retry if it fails).
For dates beyond what activation generated, the Capacity tab's Generate Slots button opens "Generate Capacity Slots" — pick a start and end date and Generate; success reports "Generated N capacity slots." Individual slots can also be closed and reopened from that tab ("Time slot has been closed." / "Time slot has been reopened.").
Reference
| Control | Where | What it does |
|---|---|---|
| Date arrows / date button | Header | Move the book a day at a time, or pick a date. |
| ARRIVALS / PENDING | Header | Expected-arrivals count and no-show count for the day. |
| Manifest / Availability | Toolbar | Switch between the booking list and the capacity grid. |
| Grouped / All Locations | Toolbar | Fold related bookings; widen grouping company-wide. |
| Check In | Confirmed row | Puts the party in the arrivals queue. |
| Kebab → Cancel reservation | Row | Cancels with confirmation; frees the slot, notifies the guest. |
| Actions menu | Header | Print (Daily Sheet), CSV export, time holds, ad hoc booking. |
| Add | Header | Opens /reservations/new. |
| Create & Collect Payment | Create form | Books and opens the Collect Payment dialog. |
| Slot chip | Availability view | Pre-fills the create form; Limited / Waitlist show pressure. |
| Generate Slots | /admin/experiences → Capacity | Creates bookable inventory for a date range. |
Troubleshooting
- "No available times for [date]…" — the experience has no open capacity
that day. A manager should check
/admin/experiences→ Capacity for the date — if it says "No capacity configured for this date", generate capacity (or check the experience's booking window and days of week). - "Capacity not configured for this time slot. Please generate availability." — same cause, caught at booking time.
- "Insufficient capacity. Available: N people, requested: N people" — the party doesn't fit in what's left of the slot. Book a smaller party, another slot, or (deliberately) use an Ad Hoc Reservation.
- "Group Capacity Reached" — the slot's max-groups cap; staff can Override & Book.
- "Slot is closed for reservations" — the slot was closed on the Capacity tab; reopen it there.
- "Time slot is blocked by an active hold" — remove the hold via Actions → Hold Time, or book around it.
- "Table is already reserved from [time] to [time]" — table conflict; pick another table (the form clears the stale one and warns "That table is no longer available — please select another.").
Related
- Walk-ins & waitlist — check-in, the queue, and guests without a booking.
- Floor & seating — seat checked-in parties.
- Daily operations — the Daily Sheet the book's Print action opens.
- Events — ticketed events, as opposed to bookable experiences.