Get into a member-only drop

How tier releases actually work here, what 'member-only' really means, and what VIP does and does not buy you.

Owned by Member · 11 steps · about 15 minutes

Why this exists

Read this one before you promise anything to a customer, because the built platform and the phrase "member-only drop" do not line up the way most people assume.

What a drop is here. A drop is a tier release. A tier either opens on a schedule (it sits in a countdown until its sale start) or it cascades (it stays locked until the tier before it has sold a configured percentage), and the release fires from the scheduler tick, which also runs lazily whenever anyone loads the catalogue or reads availability. So a drop happens on time without a cron job, and the first person to look is the person who triggers the check.

What "member-only" actually is. There is no group restriction on a tier. Tiers have no audience field, so nobody is ever refused a tier for the groups they hold — and "becoming a member" is a 30-second registration rather than an approval. If you need a genuinely restricted allocation — a real invite-only release — the built tool for that is a guest-list comp bucket, not a tier flag.

But the purchase path does read your groups, for one thing: when. A group can carry an early-access head start, and the gate that applies it sits inside the reservation itself, not in the page. early_access_minutes on the membership-benefits table is joined to your groups; if it is greater than zero, a scheduled tier becomes buyable for you that many minutes before its sale start, and for nobody else. The tier's status never flips — a flip would be global, which is the exact opposite of a benefit — so the same tier is buyable for you and refused for the next person, in the same second. Everyone else waits for the scheduler to open it at sale start. Early access widens exactly one gate: locked stays locked and sold out stays sold out.

What VIP changes. The sale window, if the venue has configured it — see above; that is the one place a group changes what you can buy and when. It is a setting on the benefits table, not a property of being VIP, so check the row rather than assuming: a build with every early-access value at zero behaves exactly as though the feature were absent — and that is what ships. Measured 2026-08-27: member, lama_family and vip_member all carry early_access_minutes = 0, so on a stock install nobody has a head start and every buyer meets the same sale start. Somebody has to set the number before any of this is visible. Beyond that, VIP does not buy a lower price on a ticket. CORRECTED 2026-08-30 — it does buy a reduced FEE. VIP carries a 50% discount on the resale venue fee, and house and vendor discounts of 20% and 10%; Lama Family carries a house discount of its own. Those are rows in membership_tier_benefits, read by live consumers, and shown on the tier card. What VIP does not buy is a lower ticket price or a head start. Beyond the fees it buys Zone B on the door credential, a tab that can fund an instant purchase when a drop is a race, and the venue's own comp and announcement targeting. A tier named "VIP Lounge" is an ordinary tier whose zone mapping happens to include Zone B — the name is marketing, the zone is the mechanism.

The one genuinely audience-aware feature is site announcements, which are targeted at an audience: public, member, VIP, host or staff. That is how a drop is announced to members only, even though the sale itself is open to anyone with an account.

Before you start

  • A member session for the buying half.
  • An admin session for the setup half.
  • An event with a tier that is scheduled or cascade-locked (the seeded demo event has both).

Practise with

PersonaEmailPasswordNote
membermember@club.test member123the buyer waiting on the drop
vip_membervip@club.test vip123for the side-by-side: same sale window, different zones and a tab
adminadmin@club.test admin123schedules the tier and targets the announcement

Steps 1–4 — Admin

their manual →

Creates the tier release and is the only persona who can target an announcement at members.

  1. 1
    As an admin, open the event and read the tier ladder in sort order. The order is the cascade order.
    /admin/events/{event_id} events
    Expected result Each tier with its unlock mode, sale window, cap and counts.
    Watch out for The first tier can never be a cascade tier — it has nothing to cascade from, and the API refuses it.
  2. 2
    Create the drop: either a scheduled tier with a sale start at the drop time, or a cascade tier that unlocks when the previous one is a given percentage sold.
    /api/events/{event_id}/tiers POST events
    Expected result A tier in scheduled or locked state, visible to the public but not buyable.
    Watch out for A scheduled tier needs a sale start; a cascade tier needs a predecessor. Both are 422s with named reasons rather than silent defaults.
  3. 3
    Open the announcements editor — this is the only place the platform is audience-aware.
    Expected result The list of announcements with their level, audience and window.
  4. 4
    Publish the drop notice targeted at members (or VIPs) rather than the public.
    /admin/announcements POST frontend
    Expected result The announcement renders for that audience and is simply absent for everyone else.
    Watch out for This targets who sees the message, not who may buy. Anyone with an account can still purchase the tier when it opens — do not write copy that promises otherwise.

Steps 5–8 — Member

their manual →
  1. 5
    As a member, open the hub and read the announcement aimed at you.
    /my frontend
    Expected result The member-targeted notice with the drop time.
    Watch out for If you cannot see a notice a colleague can, compare groups before you suspect a bug. Audience targeting is doing its job.
  2. 6
    Open the event and watch the tier you are waiting for.
    /events/{event_id} events
    Expected result An amber countdown for a scheduled tier, or Locked with the name of the tier it is waiting on for a cascade tier.
    Watch out for A locked tier deliberately publishes no availability number. You cannot tell how many are behind it, and neither can a bot.
  3. 7
    Poll availability as the drop time approaches, and notice what opens the tier.
    /api/events/{event_id}/availability events
    Expected result Availability null while locked, then a real number the moment it opens.
    Watch out for Reading this runs the scheduler check. The tier opens because someone looked — there is no background thread, and a drop nobody is watching opens on the first visit after its time.
  4. 8
    At the drop, go straight to checkout, add your quantity and check out immediately.
    /events/{event_id}/checkout payments
    Expected result A hold, and an order with a countdown.
    Watch out for In a real drop the cart is your enemy: a cart holds nothing. The seconds that matter are between checkout and payment, not between browsing and adding.

Steps 9–10 — VIP Member

their manual →

Shows precisely which VIP differences are real and which are folklore.

  1. 9
    Log in as the VIP and open the same page at the same moment.
    /events/{event_id} events
    Expected result Exactly the same tiers, the same countdown and the same prices.
    Watch out for This is the point of the exercise. There is no VIP presale window in this build. If the venue wants one, the honest implementation today is a separate event or a comp bucket, not a promise about VIP.
  2. 10
    Pay from the tab to see the one advantage that is real in a race: instant settlement without reaching for a card.
    /checkout/{order_id} payments
    Expected result The order settles from promo, then prepaid, then earned, then tab headroom.
    Watch out for The tab is a limit on what you may owe and it is settled monthly. Winning a drop on the tab still means paying for it.

Steps 11 — Admin

their manual →

Creates the tier release and is the only persona who can target an announcement at members.

  1. 11
    Rehearse the drop before the night: force the cascade and watch the next tier open.
    /debug/events/tiers/{tier_id}/force-cascade POST events
    Expected result The locked tier opens and the release event is emitted, flagged as forced.
    Watch out for Marketing rules listen for that release event, so a rehearsal on a live database can genuinely publish a social post. Rehearse on a scratch database, not on production.