Claim your comp invite and name your plus-ones

Turn an invite link into a real $0 ticket and a door pass, with your guests named.

Owned by Customer (Guest) · 9 steps · about 12 minutes

Why this exists

A comp invite is designed for the person who has never heard of your platform. The link contains a token, and the token is the credential — no account, no password, no app. That is a deliberate trade: guest-list conversion dies at the login screen, and an invite that cannot be forwarded is an invite that gets forwarded as a screenshot instead. The token is scoped to one entry and expires, so its blast radius is one seat.

What claiming actually does is more than reserving a name. It mints a real $0 ticket through the same inventory guard as a paid one, on its own zero-value order, and issues a real door pass. Comp inventory is real inventory — a sold-out tier makes a claim fail, which is exactly the behaviour you want when a promoter is quietly giving away the room.

Plus-ones are named, not counted. Each named guest becomes their own ticket and their own credential, so the door admits people rather than a number, and a guest who does not turn up does not silently become a spare entry for someone else. You can rename and remove your guests up to the cutoff, which defaults to when doors open.

Two consequences of comps being real tickets: they can never be resold (zero face value is rejected by the exchange), and revoking one returns its seat to the tier.

Before you start

  • An invite link with a live token. The seed ships one — the entry named Gala Guest on the demo event.
  • For the member path: an account that the invite was addressed to.
  • For the door steps: an employee session.

Practise with

PersonaEmailPasswordNote
vip_membervip@club.test vip123has a directly-issued comp visible on the member comps page
door_staffdoor@club.test door123checks the guest in on the night

Steps 1–4 — Customer (Guest)

their manual →
  1. 1
    Open the invite link exactly as a guest would: no account, on a phone.
    /guestlist/claim/{token} guestlist
    Expected result A styled page naming the event and who put you down, with a form for your name and your plus-one slots.
    Watch out for The four failure pages are distinct and they mean different things: not found, expired, no longer valid (revoked), and temporarily paused (the bucket is frozen). Only the last one is worth waiting on.
  2. 2
    Claim your spot. Enter your name and the full names of your guests.
    /api/guestlist/claim/{token} POST guestlist
    Expected result The entry moves to claimed and — when the bucket issues on claim — a $0 ticket and a pass serial come back immediately.
    Watch out for Some buckets are set to manual issue: you will be claimed but not ticketed until staff release it. The page says so. Do not claim twice trying to force it.
  3. 3
    Change your mind about a guest: add, rename or remove until the cutoff.
    /api/guestlist/claim/{token}/plus-ones POST guestlist
    Expected result The plus-one list updated, each named guest holding their own ticket.
    Watch out for Past the cutoff (doors open, unless the bucket sets its own) this is refused. So is exceeding the allowance you were given, and so is removing a guest who has already walked in.
  4. 4
    Understand the credential you now hold. Claiming with no account creates a shadow user behind the scenes, because a ticket and a pass must have an owner — your pass serial comes back on the claim page and that page stays your way back to it.
    Expected result A comp pass with the bucket's tier zones, issued the moment the ticket was.
    Watch out for Keep the link. With no account there is no wallet page to fall back on — this page is the only route to the pass. It does NOT expire once claimed: `_expire_entry_if_stale` returns early for any status other than `invited`, so the claim URL is permanent. It is the UNCLAIMED invite that expires, one step earlier.

Steps 5–7 — Member

their manual →

The same invite addressed to an account is claimed from the member portal instead of a token link.

  1. 5
    Now the member path: log in as the account the invite was addressed to and open your comps.
    /me/comps guestlist
    Expected result Your entries with flags for whether you can still claim them and still manage plus-ones.
    Watch out for An invite addressed to a member account is claimed here with your session — you do not need the emailed token at all, and the token path would still work if you did.
  2. 6
    Claim it from your session.
    /api/guestlist/my/entries/{entry_id}/claim POST guestlist
    Expected result The same result as the token path: a ticket and a pass.
    Watch out for Claiming someone else's entry is a 403, even with a valid session. The entry has to be addressed to you.
  3. 7
    Open your wallet, where a claimed comp lands alongside anything you paid for.
    Expected result A comp pass with the bucket's tier zones and the same rotating code as a bought ticket.
    Watch out for A comp pass is an ordinary pass in every respect except one: it can never be listed for sale, because its face value is zero and the exchange rejects it.

Steps 8–9 — Door Staff

their manual →

Finds the guest by name on the night and checks them in with their plus-ones.

  1. 8
    On the night, search the list by the name on the invite.
    /api/guestlist/door/{event_id}/search guestlist
    Expected result Matching entries with their bucket, plus-one allowance and whether they are already in.
    Watch out for Search by the name the promoter wrote down, not the name on the ID. Comps are listed by whoever invited them.
  2. 9
    Check the guest in, and each named plus-one as they arrive.
    /api/guestlist/door/{event_id}/entries/{entry_id}/checkin POST guestlist
    Expected result The entry flips to checked in and the named guest is marked individually.
    Watch out for A door check-in still runs the real scan pipeline underneath. Only two refusals are waived here — the doors-not-open-yet window and the manual reader's zone. A revoked, refunded or suspended guest is refused with the scanner's own reason and no green row is written.