Skip to content

Sales channels

Split one event into sales channels and allocations — partner allocations, presale access, sponsor blocks, box office — without splitting the seat count.

Updated View as Markdown

A sales channel is an allocation label on inventory you already have. It answers one question and no others: which buyers are allowed to select this seat before it sells?

Everything else stays exactly where it was. One event, one chart, one authoritative seat count.

The one-minute model

Take a 1,000-seat event:

Allocation Seats Who may select them
Public sale 800 Anyone on the ordinary event page
Travel Agency A 120 Buyers carrying an Agency A buyer access session
Sponsor guests 50 Sponsor invitees
Box office 30 Your own staff selling flow

All four audiences read the same event, the same chart geometry, and the same inventory. Selling A-12 through Travel Agency A makes A-12 booked everywhere, immediately — on the public page, in your reports, and in every open buyer session. There is no reconciliation step and no second source of truth, because there is no second inventory.

flowchart LR
    E["One event and chart"] --> P["Public sale"]
    E --> A["Travel Agency A"]
    E --> S["Sponsor guests"]
    E --> B["Box office"]
    P --> I["One authoritative inventory"]
    A --> I
    S --> I
    B --> I

Assignment is not status

A seat’s channel and a seat’s status are independent. Every seat always has both.

Status free, held, booked, blocked — what is physically true
Channel Public sale, or exactly one private channel — who may select it

Assigning a seat to a channel never changes its status. A free seat in a private channel is still free; it is simply invisible to buyers who are not eligible for that channel. This is why assignment is safe to run on a live, selling event.

It is also why a channel is not a way to take a seat off sale. If nobody should sell it, block it.

What a channel is not

The five things that get confused with channels, and the feature that actually does each job:

What you want Use
Nobody may sell this seat Block
Reserve it during checkout Hold
Open or close a section for everyone Section availability
Change price or visual treatment Category and pricing
Let only a particular audience select it Sales channel

One seat, one channel

A seat belongs to Public sale or to exactly one private channel. Never two.

Overlapping membership was considered and rejected: it makes “how many seats does the sponsor have?” unanswerable, and it makes every allocation edit a question about precedence. The property you actually want — this buyer may see several allocations — belongs on the buyer, not on the seat. A buyer access session can name several channels at once, so a sponsor who is also an agency customer sees both allocations without either seat being in two places.

That keeps every allocation total exact and every seat’s answer to “whose is this?” a single value.

Public sale is a real allocation, not an absence

Seats not assigned to a private channel are Public sale. It behaves like any other allocation in reports and in the API — it has counts, it has sell-through, and inventory moves in and out of it — with two differences:

  • it is the default, so every event you already have is entirely Public sale and stays that way until you say otherwise. There is no migration;
  • it needs no grant. A buyer with no session at all sees Public sale, exactly as today.

In the API, Public sale is the reserved channel id public, and a seat on public sale reports channelId: null. A buyer access session must say includePublic explicitly — there is no default, in either direction.

A channel id is not authorization

This is the part worth reading twice.

A channel id is a label, not a key. Sending one from a browser grants nothing, and a browser cannot select private inventory by naming a channel it guessed, was told, or read out of your page source. The server derives what a caller may select from the credential the caller presents, and ignores any channel the client claims.

What actually grants access:

  • a buyer access session (bse_…), minted by your backend for one buyer, one event, one origin, and a named set of channels;
  • a hosted access link, which a buyer exchanges for one of those sessions;
  • a secret key that explicitly names the channel it is acting for — see the behavior change on booking.

An unauthorized buyer does not receive a private seat’s real state at all. Private inventory reads as one flat unavailable state, whatever is really happening inside it, and a public map receives no updates from activity it is not allowed to observe.

Where to go next

Navigation

Type to search…

↑↓ navigate↵ selectEsc close