Monitor live sales on the night

Read the sales dashboard, the open holds and the order list without being able to touch prices.

Owned by Venue Manager · 10 steps · about 14 minutes

Why this exists

The sales board is a read surface for a manager, and that is a deliberate design decision rather than an oversight. You are the person who has to answer 'are we going to fill it', 'how many are inside', and 'why is that tier still showing available when the room is full' — and you can answer all three from here. What you cannot do from here is change a price, move a tier, or transition an event's status, because those decisions change what customers have already been sold.

The number that confuses people is reserved. Inventory is held during checkout: when a customer starts paying, their seats are moved out of available and into reserved for the hold's lifetime, and only converted to sold on payment. Holds exist so that two people cannot buy the last ticket simultaneously, and they expire on their own. So a tier can read zero available with nothing actually sold, simply because fifteen people are mid-checkout — and five minutes later it opens back up. Do not announce a sell-out off the availability figure alone.

The other thing to hold in your head is that a comp is a sale as far as capacity is concerned. Guest-list entries and door overrides both spend real inventory, so the sold figure includes people who paid nothing. That is intentional: capacity is a physical fact and the room does not care how anyone got in.

Pair this screen with the door. Sold tells you how many could come; the scan log tells you how many did. The gap between them is the single most useful operational number a venue manager has, and neither screen shows it on its own.

Before you start

  • A venue manager or admin session.
  • An event that is on sale or in progress. The seed ships demo-event-0001.

Practise with

PersonaEmailPasswordNote
venue_managermanager@club.test manager123shift lead: implies door_staff, plus intake, sales, guest list, marketing
adminadmin@club.test admin123the only account that can touch money, identity and contracts
door_staffdoor@club.test door123door shift account: scanner + guest list, nothing else

Steps 1–8 — Venue Manager

their manual →
  1. 1
    Open the events list. This is your board for the week — every event with its status and its headline sales figures.
    /admin/events events
    Expected result Events with status chips and sales columns.
    Watch out for Loading this page runs the event lifecycle tick, so statuses you see here are current rather than stale. That is also why it is a slightly heavier page than it looks.
  2. 2
    Open tonight's event. Read the dashboard block: per-tier sold, reserved and available, plus the totals.
    /admin/events/{event_id} events
    Expected result A tier table and a sales summary.
    Watch out for The edit controls are absent for you. The page computes an edit flag that is true only for admins, so you get the numbers without the levers — deliberately.
  3. 3
    Refresh the sales figures directly when you want the numbers without the page furniture — useful on a phone behind the bar.
    /api/admin/events/{event_id}/sales events
    Expected result The same dashboard payload as JSON.
    Watch out for This endpoint is also readable by the event's own scoped host, which is why a promoter can watch their night without you sending screenshots.
  4. 4
    When available looks wrong, list the active holds. Each is a customer part-way through checkout with an expiry.
    /api/admin/events/{event_id}/reservations events
    Expected result Open reservations with their items and expiry times.
    Watch out for This one is manager-and-admin only, unlike the sales figures — a promoter cannot see who is mid-checkout. Holds expiring is normal and self-healing; do not go hunting for a bug because a number moved.
  5. 5
    Move to the order list when a specific customer is the question rather than a specific tier.
    /admin/orders payments
    Expected result Orders with status, totals and customer.
    Watch out for Read-only for you. Refunds, refund policy and the dispute resolution controls are admin-only — you can see a chargeback, you cannot resolve it.
  6. 6
    Open a single order to answer a door question — did this person actually pay, and are these the tickets they are holding.
    /admin/orders/{order_id} payments
    Expected result The order, its tickets and its payment history.
    Watch out for This is the screen that resolves a Ticket Not Paid red at the door. A fully refunded order is exactly what that reason code means.
  7. 7
    Look at the public event page once before doors, the way a customer sees it.
    /events/{event_id} events
    Expected result The live catalogue page with what is actually on sale.
    Watch out for If a tier looks wrong to a customer it is wrong here too. Report it to an admin with the tier name — do not try to route around it.
  8. 8
    Understand the boundary you are about to bump into. Transitioning an event — announcing it, putting it on sale, cancelling it — and editing tiers, prices and zones are admin-only writes. So is refunding everybody after a cancellation.
    Expected result A clear escalation path rather than a 403 at 11pm.
    Watch out for If an event needs cancelling on the night, the manager job is to get an admin and to stop the door. Do not start checking people in on a cancelled event — the guest-list check-in refuses it anyway, with event_not_active.

Steps 9 — Door Staff

their manual →

Supplies the other half of the picture — how many of the sold tickets actually walked in.

  1. 9
    From the door, report the actual admitted count — green in scans for the event — so the manager can compare it against sold.
    Expected result The scan stats block with green and red counts.
    Watch out for Green out scans are people leaving, not entering. Count entries, not scans, or you will double-count everyone who stepped outside for air.

Steps 10 — Admin

their manual →

Owns every write on this page: transitions, tiers, prices and refunds.

  1. 10
    As an admin, make the status change the manager cannot: announce, open sales, mark in progress, complete or cancel.
    /api/events/{event_id}/transition POST events
    Expected result The event moves, and the change emits outbox events that marketing and resale react to.
    Watch out for Transitions are not just labels. Cancelling emits an event that downstream refund and exchange logic listens for — never fake one by editing a row.