pass.* events

Time-limited pass access window lifecycle: opened, closed, cancelled, and what happened to each holder.

Time-limited pass access window lifecycle: opened, closed, cancelled, and what happened to each holder. Fires as a time-limited pass plan's scheduled access windows open, close and, when a creator postpones one, get cancelled. A pass sells access to one dated window rather than an ongoing membership, so most of these describe the window itself: use them to drive slate-level automation such as posting a line-up when access opens or a recap when it ends.

The holder_* events are the exception: each describes one buyer rather than the window. Cancelling a window resettles every buyer individually and the outcomes need different handling downstream (a move is a date change to push into a calendar or CRM, a stranding is money owed) so each holder gets its own event. holder_queued and holder_missed are the same idea applied to attendance: who is set up to be let in, and who never turned up.

If the plan is a Pass Series, the window-level events and holder_queued/holder_missed still fire for every underlying window, with the pass_series.* family firing alongside them to describe the slate. holder_moved and holder_stranded are the exception: a season-ticket holder gets pass_series.leg_substituted or pass_series.leg_dropped instead of, not alongside, those two.

For ordinary per-subscriber grants and revocations, use member.resource_added and member.resource_removed instead.

EventFires when
pass.window_scheduledA new access window came into existence.
pass.window_openedAn access window started and holders were admitted.
pass.window_closedAn access window ended and holders were removed.
pass.window_cancelledA creator cancelled a window and its holders were resettled.
pass.holder_queuedA holder tapped their invite link and is now queued.
pass.holder_movedOne holder was moved to the next available window.
pass.holder_missedA window closed and one holder never turned up.
pass.holder_strandedOne holder's pass ended with no replacement; a refund is owed.

What a cancellation emits

Cancelling one window produces several events in a single burst:

EventFires
pass.holder_movedOnce per holder who was moved (ordinary pass)
pass_series.leg_substitutedOnce per holder who was moved (season ticket)
pass.holder_strandedOnce per holder whose pass ended (ordinary pass)
pass_series.leg_droppedOnce per holder who lost that date (season ticket)
pass.window_cancelledOnce, last, carrying the two tallies

Which of each pair fires depends on what the holder bought: a single-window pass ends, whereas a season ticket loses one date and carries on.

A cancelled window never subsequently emits pass.window_opened or pass.window_closed; it is removed from the lifecycle entirely.

Timestamps are UTC

Every payload carries its window times in UTC. A pass schedule is authored in the creator's timezone, so convert before displaying: a window advertised as 9:00 AM in New York is 13:00+00:00 or 14:00+00:00 depending on daylight saving.

Example envelope

{
  "id": "evt_01HX...",
  "type": "pass.window_opened",
  "created_at": "2026-09-20T13:00:04Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "plan_id": "c4e82f16-93a7-4d5b-b81c-6e0f27a94d3b",
    "window_id": "3d5a8c72-b016-4e94-8fa7-61c209d4e738",
    "starts_at": "2026-09-20T13:00:00+00:00",
    "ends_at": "2026-09-21T03:00:00+00:00",
    "subscribers_affected": 47
  }
}

Required abilities

Tokens subscribing to a window-level event (window_scheduled, window_opened, window_closed, window_cancelled) must carry project-subscription-plan:view: a pass window belongs to the plan that sells it, so it is scoped with the plan rather than with the subscription that holds it.

The holder-level events (holder_queued, holder_moved, holder_missed, holder_stranded) describe a specific purchase and therefore require project-subscription:view instead.

Events

Compare with the current pages

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request