Waitlist and reservations

Host-stand workflows for walk-ins, quoted waits, reservations, and table matching.

Hosts can add walk-in parties, track quoted waits, record that a guest was contacted, and seat them at a table that fits. Reservations have their own page with a status lifecycle and table checks.

Waitlist

The waitlist page is at /dashboard/platform/waitlist. It is not in the sidebar, so open it by URL.

  • add a party with name, phone number, party size, quoted wait, and notes (createWaitlistGuest)
  • filter by status: waiting, notified, seated, cancelled, no show
  • mark a party notified after contacting them by hand
  • seat a party at an available table with enough seats
  • cancel a party or mark them as a no-show

Waitlist changes go through updateWaitlistStatus with an action: notify, seat, complete, cancel, or no_show. Both waitlist mutations check canManageKitchen, not a table or host permission.

Seating workflow

Add the party

Create an entry with name, phone, party size, quoted wait, and optional notes. It starts as waiting.

Contact the guest

Call or text the guest yourself. Then mark them notified. The server refuses unless you confirm that contact happened, and it logs a manual contact event.

Match a table

The seat dialog lists available tables with at least as many seats as the party, smallest first.

Seat the party

Seating sets the entry to seated, links the table, and marks the table occupied. Completing a seated entry releases the table if nothing else is using it.

Reservations

The reservations page is at /dashboard/platform/reservations and is in the sidebar. A reservation stores:

  • guest name, phone, and email
  • date and time, party size, and duration (default 90 minutes)
  • status: pending, confirmed, seated, completed, cancelled, no_show
  • special requests
  • assigned table

upsertReservation creates or edits a reservation. Name and phone are required. New reservations default to confirmed. Only pending and confirmed reservations can be edited. If a table is assigned, the server checks it is large enough and has no overlapping reservation.

updateReservationStatus moves a reservation with an action: pending, confirm, seat, complete, cancel, or no_show. Seating needs an assigned table that is free and large enough, and marks it occupied. Reservation mutations check canManageTables.

Guests cannot book or join the waitlist from the storefront. Hosts enter everything in the dashboard.

What is not wired

  • No SMS or email is sent to waitlist or reservation guests. Phone numbers are stored for manual contact.
  • There is no automatic quote calculation, no deposit, and no online booking widget.

On this page