Channels are a way to make a selection of seats available to specific ticket buyers only.
This allows you to pre-assign a selection of seats to e.g. a sponsor, or a guest list: these seats will be unavailable for regular ticket buyers, but they can be made available on more restricted pages, for example on a specific ticketing site on the sponsor's intranet.
Let's start with an example: We want to sell tickets for an event in a 5000 seat theatre, via our regular, public, ticketing website. However, a deal we have with one of our sponsors entitles them to 100 premium seats. Moreover, that sponsor will be distributing these 100 seats amongst their employees via a separate, for-employees-only page.
Creating a Channel
First things first: you'll have to create a channel for our sponsor. This is done through the channels tab on your event detail page.
To create a new channel, simply click Manage channels and Create channel. To rename, click the channel name and type the new name.
Each channel has the following properties:
a unique name
Channel names and colors are only used to make it easy to identify the channel in the Event Manager. This means your ticket buyers will never get to see those names or colors.
Channel keys are public information (they are exposed when rendering the floor plan, see below), but they are simple UUIDs and so contain no human readable information about the channel.
Note: Of course, you can programatically manage channels via the API as well. However, if you intend to give your users the possibility to manage channels from your backoffice application, consider embedding the Event Manager in
manageChannels mode instead as a far easier approach.
Assigning seats to channels
Once you set up your channels, it's time to assign seats or other bookable objects to them. To do so, simply:
select some objects.
click the appropriate channel button. The selected seats will get the channel color.
click Apply to confirm. As of now, your seats have been assigned to the specified channels, and are unavailable for selection by default. (see below how to make them selectable).
To un-assign seats from a channel, follow the same procedure, but click the "No Channel" button instead.
You can programatically assign seats to channels via the API as well. However, if your intention is to give your users the possibility to manage channels from your backoffice web application, it's far easier to embed the Event Manager in
manageChannels mode, rather than calling the API.
Note: Assigning a seat to a channel will be considered as usage for pricing purposes.
Rendering the seating chart for one or more channels
Now that some of your seats have been assigned to our channel, they are unavailable for selection on our regular online ticketing page. So in our example, at least regular ticket buyers will not be able to select/book any of the 100 seats assigned to our sponsor.
However, the sponsor also wants to be able to distribute the seats amongst their employees, and so need a floor plan where those 100 seats - and not any others - are selectable and bookable.
To do this, we'll have to render render the floor plan for our sponsor channel, by using the
channels configuration parameter, passing in the key of the channel(s) you want to be available (docs here).
workspaceKey: 'your workspace key',
event: 'your event key',
// some other configuration here
With this configuration, only the seats within the specified channels will be available (provided they are not booked or made unavailable in some other way of course!).
Booking seats that are assigned to a channel
Seats that belong to a channel cannot be booked like regular seats. The reason is security: it is not enough to simply prevent people from selecting a seat in their browser. A somewhat tech savvy user can always programatically select unavailable seats, e.g. by POST-ing unselectable seat labels to your server.
To prevent those malicious users from actually booking unselectable seats, the seats.io API makes sure to check the channels as seats get booked. So it's important you pass in the correct channel key, when booking seats that belong to a channel.
Note: passing channel key(s) is required on any API endpoint that changes object statuses: not just when booking objects, but also when releasing, holding or setting a custom status.
To start using channels, you need to:
set up the channels.
assign seats or other objects to the channels, so they become unselectable for regular end users.
render the floor plan for specific channels on pages that are only accessible for special users, who should have exclusive access to those seats.
be sure to pass in the correct channel key when booking objects (or changing their status in general).
That's all you need to know. Don't hesitate to drop us a line in case of questions!