Where do I find it?
Operations > Next Departures or Tickets & Bookings
What does it mean?
This guide outlines the best practices for managing bookings with seating charts and details the specific administrative actions available to your operations team.
What should I do?
If no seats have been allocated to a booking, please refer to this article for instructions on how to assign them.
After finalising a booking with assigned seats, manage and view seat allocations in two main areas within the Palisis Backoffice: the Booking Details view and the Manifest.
Booking details view
After a booking is completed, you can verify the assigned seat numbers directly within the booking record.
Note: Currently, seat assignments are visible exclusively when using the 'Simple Mode' view of the booking details.
Manifest view
The Manifest serves as your real-time operational hub for seat management. From here, you can identify bookings without assignments and make necessary adjustments.
Identifying unassigned seats: The Manifest clearly flags any bookings where seats have not yet been allocated, allowing for quick resolution.
Seating chart visualisation: You can open a visual representation of the entire seating chart to see a real-time "map" of occupancy.
Channel visualisation: You can toggle the view to show specific Channels (e.g., seats blocked for VIPs or specific partners). For example, you can easily verify if the first row has been successfully reserved for VIP ticket holders.
Editing seats and categories
If operational needs change, you can edit the seat categories directly from the seating chart interface.
Important: Adjusting a seat category within the chart editor will update the seat's properties, but it will not alter the underlying Capacity Template assigned to the product. This allows for tactical changes without disrupting your global settings.
Orphan seats configuration
Edit the orphan seat configuration for this departure here. For details, visit the support article Configuring orphan seat prevention.
Reallocate seats to a new channel or category
To learn how to reallocate seats to a different channel or category, please refer to the following article:
Managing seat categories and channel allocations for specific departures
Refunds
When a booking is cancelled and the tickets are refunded within Palisis, the system automatically communicates this change to Seats.io the specific seats associated with that booking are immediately released and returned to the "Available" pool.
No manual action required: You do not need to log into Seats.io to manually unblock seats after a refund.
Instant availability: Once the refund is processed, those seats become instantly bookable again on your Webshop, Box Office, and via partner channels.
In the Audit trail, you can verify that the seat have been released.
If you perform a partial refund (e.g., refunding 2 tickets out of a 4-ticket booking), the system will release only the specific seats associated with the refunded tickets.
Change the seating chart for a specific departure
How to change the seating chart for a specific departure
Seating information on the PDF tickets and emails
Previously, tickets would only show general product information. With the Seats.io integration, you can now pull exact seat coordinates into your customer communications.
New tokens available: Use these tokens to show seat information on your PDF tickets, invoices, and confirmation emails.
$entry.seatSection: Displays the seat section (e.g., “Central section”).$entry.seatRow: Displays the seat row (e.g., "Row 5").$entry.seatNumber: Displays the seat number (e.g., "17").
Add the following code snippets with these tokens to your PDF Ticket templates and Confirmation Emails under Configuration > Layouts to display seat information on PDF tickets and emails.
Seating information on device-printed tickets
Tickets printed directly from POS devices (e.g., Box Office thermal printers) can also display seat assignment details. This ensures customers receiving a physical ticket at the point of sale have clear information about their allocated section, row, and seat number.
To enable seating information on device-printed tickets, add the block ‘Seat selection’ to the ticket layout in Account > Templates > Ticket Templates.
Seat data in TourCMS/OTA channels
When a booking includes seat assignments, Palisis automatically shares the seating details — section, row, and seat number — with TourCMS and, by extension, with connected OTA partners.
How it works:
Upstream (Palisis → TourCMS → OTAs): When a booking is created in Palisis with assigned seats (via Box Office, Webshop, or Device), the seat information is automatically sent to TourCMS. TourCMS then exposes this data to OTAs through the Show Booking API, so distribution partners can access and display the assigned seat details to their customers.
Downstream (OTA → TourCMS → Palisis): When an OTA creates a booking through TourCMS, the system sends an inline webhook to Palisis, which triggers Seats.io to allocate the best available seats based on the configured assignment mode (e.g., best seats or category-only). The assigned seat data is then returned in the webhook response and stored in TourCMS for the OTA to retrieve.
Important: The API channel's seat assignment mode must be configured in the product's Seats.io Config tab (Setup > Products & Services > Products > Edit > Seats.io Config > API). You can choose between "No seat selection", "Automatic allocation (Best seats)", or allow the OTA to pass a specific seat category. For more details, refer to the Seat selection set up per channel article.
Block of Code for showing seating info in PDF Templates (Ticket & Receipt):
<div class="block2">
<div
class="passenger-categories">${entry.seatsAndPassengerCategoryInfo}</div>
#if({{ENTRY}}.seatSection || {{ENTRY}}.seatRow || {{ENTRY}}.seatNumber)
<div class="seat-info">
#if ({{ENTRY}}.seatSection)
<div class="seat-line">Section: ${entry.seatSection}</div>
#end
#if ({{ENTRY}}.seatRow)
<div class="seat-line">Row: ${entry.seatRow}</div>
#end
#if({{ENTRY}}.seatNumber)
<div class="seat-line">Number: ${entry.seatNumber}</div>
#end
</div>
#end
</div>
.seat-info {
margin-top: 10px;
padding: 10px;
background-color: #f5f5f5;
border-radius: 7px;
font-size: 1em;
}
.seat-info .seat-line {
margin-bottom: 3px;
}
.seat-info .seat-line:last-child {
margin-bottom: 0;
}
Block of code for showing seating info in booking info and cancel info email templates:
<tr>
<td style="font-size: 0px; padding: 10px 25px; word-break: break-word;"
align="left">#foreach( {{BOOKING_ENTRY}} in {{BOOKING_ENTRIES}} )
<div style="font-family: courier; font-size: 15px; line-height: 1.3;
text-align: left; color: #173557;"><strong>Ticket Number:
{{BOOKING_ENTRY}}.bookingEntryUid</strong><br>Operation Line:
{{BOOKING_ENTRY}}.opLineName<br>#if ({{BOOKING_ENTRY}}.seatSection) Seat
Section: {{BOOKING_ENTRY}}.seatSection<br>#end #if ({{BOOKING_ENTRY}}.seatRow)
Seat Row: {{BOOKING_ENTRY}}.seatRow<br>#end #if ({{BOOKING_ENTRY}}.seatNumber)
Seat Number: {{BOOKING_ENTRY}}.seatNumber<br>#end </div>
<br>#end</td>
</tr>
Block of Code for showing seating info in Email Templates: Ticket Online, Ticket BoxOffice, Reservation:
<tr>
<td>
<div style="font-family: courier; font-size: 15px; line-height: 1.3;
text-align: left; color: #173557;">Your seating info:</div>
</td>
</tr>
<tr>
<td style="font-size: 0px; padding: 10px 25px; word-break: break-word;"
align="left">#foreach( {{ENTRY}} in {{ENTRIES}} )
<div style="font-family: courier; font-size: 15px; line-height: 1.3;
text-align: left; color: #173557;">
<p dir="ltr">#if ({{ENTRY}}.seatSection)</p>
<p dir="ltr">Seat Section: {{ENTRY}}.seatSection</p>
<p dir="ltr">#end #if ({{ENTRY}}.seatRow) Seat Row: {{ENTRY}}.seatRow</p>
<p dir="ltr">#end #if ({{ENTRY}}.seatNumber) Seat Number:
{{ENTRY}}.seatNumber</p>
<p dir="ltr">#end</p>
<strong
id="docs-internal-guid-ab5b472f-7fff-682b-5f90-a321b7afbbdd"></strong></div>
<br>#end</td>
</tr>
API Vouchers display logic
When TourCMS generates a voucher for a booking that includes seat assignments, the seating details are rendered per ticket entry. The display behaviour depends on the number of tickets and the available seat data:
Single-ticket bookings: The voucher shows the section, row, and seat number directly beneath the product name — for example, "Central section · Row 5 · Seat 17".
Multi-ticket bookings: Each ticket entry on the voucher displays its own seat assignment individually, so every traveller can see exactly where they are seated.
Partially available data: If any seat field is missing (e.g., the seating chart does not use sections), that field is simply omitted from the voucher. For instance, a general-admission chart that only assigns a seat number would display just "Seat 17" without a section or row.
No seat data: If the booking has no seat assignments at all (e.g., the product does not use a seating chart), no seating information appears on the voucher — the standard product details are shown as usual.
For more information, please visit our support articles on these topics:
Good to know
Mandatory publishing of changes
Any modification made within the Seats.io designer (such as renaming a row, moving a focal point, or changing a seat category) is not live until it is published. You must click the 'Publish' button in Seats.io before these updates will be reflected in your Palisis Box Office, Webshop, or mobile devices.
Template and event matching
Every departure in Palisis requires a corresponding "Event" in Seats.io to act as a template. The first time you link a departure, you may encounter the "Default template not Found" alert.
The solution: Simply copy the exact template name provided in the Palisis alert, navigate to your Seats.io dashboard, and rename your event to match that string exactly. This establishes the link between the two systems.
Seat Category mapping lock
Consistency between the two platforms is vital for pricing accuracy:
Once a seat category is successfully mapped to a chart, the status in Palisis must display a green tick.
Validation errors: If you have "stray" seats in Seats.io that are not assigned to a category, the system will return a validation error. Ensure every seat on your chart is assigned to a category that exists in Palisis.
Pending bookings and "Held" seats
When a customer starts a booking the system places a temporary hold on those seats.
If the booking is not completed within the timeout period (typically 45 minutes), the seats are automatically released back into general inventory.
This prevents "double-booking" while a customer is entering their payment details.
If you try to book the best seats but enough bookings without seat selection fill the seating, you cannot book the best seats. However, you can select seats on the chart or book without seat selection.
Seat changes and category consistency
You can reassign a customer to a different seat via the Backoffice Manifest; however, the new seat must belong to the same price category as the original booking.
If you wish to move a customer to a higher-priced category (e.g., from Lateral to VIP), you must handle the price difference separately or perform a refund and re-booking to maintain financial integrity.