Easy Tickets & Events docs

Tickets, seats and pricing

Reserved seating: sell seats from a seat map

Sell assigned seats on Shopify: attach a seat map to an event, price each area, and let shoppers pick seats that are held while they check out.

Updated September 24, 2026

Reserved seating lets shoppers choose their own seats, tables or standing places on a map of your venue, then pay through the normal Shopify cart and checkout. You draw the venue once in the seat map editor and attach it to any event at a physical venue.

Each seat becomes one ticket with the seat printed on it. Seated tickets count toward your monthly ticket allowance like any other ticket.

Create a seated event

  1. Click Create event on the home page or the events list.
  2. In the popup, choose Reserved seating.
  3. Fill in the event details as usual. In the Reserved seating section, pick a map with Choose a saved map, or click Create seat map to draw one.
  4. Under Ticket types, check the ticket type for each price area. The form proposes one type per area, named after the area and priced at the area's default price.
  5. Choose What customers buy: Individual seats or Whole tables.
  6. Create the event.

The app creates the Shopify product, adds its seat checkout rule and opens seat sales. If Shopify's checkout validation permission is missing, the Reserved seating tab shows Enable checkout validation access.

Seat maps only work for events at a physical venue. An online event shows "Seat maps are for events at a physical venue."

Add a map to an existing event

  1. Open the event's settings and go to the Reserved seating tab.
  2. Pick a map under Choose a saved map and click Use this map.
  3. If a price area has no ticket type yet, a popup asks which ticket types it sells. Tick them and confirm.

Tickets sold before the map was added do not get seats automatically. Seat sales stay closed until every active ticket has a seat, which you assign on the Attendees tab.

The Reserved seating tab

  • Seat map shows the map this date sells from and its version, with Preview seat selection, Edit this map and Change map.
  • The Seat sales switch pauses or reopens seat sales for this date. While sales are closed, the product page shows "Seats not on sale yet".
  • Ticket prices by area lists each price area with its ticket types, prices and number of seats.
  • Don't allow a single empty seat stops a booking from leaving one empty seat next to a taken seat or the row end. It is off by default.
  • Hold time in minutes sets how long chosen seats are held, from 5 to 30. The default is 20.
  • Remove seating, a small red button at the bottom, turns the date back into general admission.

The sections below Seat map appear once the date sells from a map. On a series, the main event's tab has a Choose a date select that opens each date's own tab. Every change saves with one save bar, Save or Discard.

Price areas and ticket types

A price area is a colour-coded group of seats. Each area sells through one or more ticket types, and each type is a Shopify variant with one price.

With several types in one area, the shopper picks one per seat, for example Adult or Child. Add ticket type on this tab adds a type with a title and price.

On a seated event the Tickets tab turns read-only, and the map sets the stock: one seat is one admission. A price area's default price from the editor only pre-fills prices when you create the event.

Whole tables

With What customers buy set to Whole tables, one click takes a whole table. Every seat at the table still gets its own ticket. The price is the ticket type's price per seat times the seats at that table.

Whole tables needs a map with only tables, plus a stage or other landmark if you like. Each table must sit in one price area and have 100 seats or fewer.

What the shopper sees

Your theme's buy button is hidden and the app puts a button that looks the same in its place, labelled "Choose seats". The quantity selector and ticket type pickers are hidden too, because the seats chosen are the tickets. The optional Seat picker theme block adds a second "Choose seats" button wherever you place it.

"Choose seats" opens the seat chooser in a popup, full screen on phones. It shows:

  • a timer box, "Your tickets will be reserved for" the hold time, which "Starts when you continue"
  • the map, with Date, Floor and Section selects when there is more than one
  • "Show seat list", a list of every seat that helps with large halls on a phone
  • "Show price areas" when the map uses more than one price area
  • a legend of "Available", "Selected" and "Unavailable", plus "Accessible", "Companion seat" and "Restricted view" when the map has them

The shopper clicks seats, and the summary lists each one, such as "Row A, seat 12", with its price. The chooser states the cap up front, for example "You can choose up to 10 seats."

"Continue" starts the hold and opens "Enter ticket details", with one card per seat for name, email, phone, your custom questions and any add-ons. With two or more seats, "Book all seats under one name" appears when your one-name booking switch is on. "Continue to checkout" adds the tickets to the cart and opens Shopify's checkout.

Prices follow the shopper's currency when your store sells in several currencies. If one price cannot be shown in that currency, every price shows in your store currency with a note that checkout may use another one.

Holds and checkout

  • The hold starts when the shopper clicks "Continue" and lasts your hold time, 20 minutes by default.
  • While the guest form is open, the hold renews itself. It never lasts more than three times the hold time, so 60 minutes at the default.
  • Each shopper has one hold per date. Choosing seats again releases the earlier hold.
  • The cart gets one line per ticket type, with a "Seats" line listing the seats. Discount codes, payment methods and currencies work as in any checkout.

If the timer runs out before payment, the shopper sees "Your seat reservation expired. Your details are kept here. Choose your seats again to continue." The seats go back on sale at once.

Two shoppers can never book the same seat. If another shopper takes a seat first, the chooser says so, for example "Row C, seat 6 just got taken. Choose other seats."

A shopper who pays after the hold ran out still gets tickets when the seats are free. If any seat was sold meanwhile, no tickets are made and the order goes to review.

The seat checkout guard

Easy Tickets seat checkout is a Shopify checkout rule the app adds for you. It blocks checkout for any seated ticket that reached the cart without a seat, for example from a cart link, a re-order or a theme's quick-add button. The shopper is asked to choose seats on the event's page or remove the tickets.

How many seats one shopper can pick

If the event has a Max tickets per order limit for All tickets combined, that number is the seat cap. Otherwise the cap is 10 seats. On whole tables the default is 10 or the biggest table, whichever is larger, up to 100. A limit per ticket type also caps seats of that type. See ticket limits per order.

After the sale

Each seated ticket owns one seat. The seat is printed on the ticket email, the PDF ticket and the online ticket page. It also shows in the Seat column of the Attendees tab and its CSV export.

On the Attendees tab of a seated date you can:

  • use Assign seat, Change seat or Release seat from a ticket's row
  • move up to 100 tickets at once with Assign or move seats
  • add a guest on a chosen seat with Add attendee, which uses one ticket of your allowance
  • open Manage reserved seating to Block seats on this date only, undo that with Make available, or set seats aside for a private code of at least 16 characters

Seat changes do not email the guest. Use Email ticket on the guest's row to send an updated copy. The guest list article covers the rest of the tab.

Moving a seated ticket to another date of the same series asks for a seat on the new date. That date must also be seated and sell a ticket type with the same title.

Refunds and cancellations

  • Refunding a whole ticket line in Shopify marks those tickets refunded, puts their seats back on sale and returns the ticket credits.
  • Refunding only part of a line frees nothing. The order goes to review, because the app does not guess which seat you meant.
  • Cancelling the Shopify order cancels its tickets and puts the seats back on sale.
  • Cancelling a ticket in the app keeps its seat reserved. Use Release seat when the seat is safe to sell again.

Releasing a seat never refunds money and never emails anyone.

Seat orders that need review

A seated order that does not settle cleanly appears in the Seat orders that need attention card on the Attendees tab, with the reason. The home page shows "Seat bookings need review", and you get one email per order.

Each row offers Open the order in Shopify, Check Shopify payment and Review seat release. The usual fix is to refund the order in Shopify or add the guest on a free seat.

Seated series

A seated series needs one Shopify product per date, so its Storefront display must be Separate product page per date. Each date has its own copy of the map, its own availability and its own Seat sales switch.

The series keeps a starting map for new dates. Dates added later wait for their own setup, shown as "Finish seating setup" with Set up next date. Checkout stays closed on those dates until their map and prices are published.

On the main event, Use the latest version on all upcoming dates moves dates with no sold or held seats at once. Dates with sold seats are listed for you to confirm one by one. Dates can also use different maps.

Changing the map after tickets are sold

Editing a map never changes a date that already sells from it. The date's tab offers Use the latest version, and Change map switches it to another map.

Before anything changes, a popup shows what will happen:

  • When no sold seat is lost, sold tickets keep their seats and sales keep running.
  • When sold tickets sit on seats the new map does not have, the popup gives their number. Confirming takes those seats back, and the tickets keep their code, QR and answers without a seat.
  • Seat sales then close until every active ticket has a seat again. You reseat them on the Attendees tab.

Seats are matched by their identity in the map, not their name. A different map usually shares no seats, so on a date with sales almost every ticket would lose its seat.

A sold or held seat that stays on the map cannot change its name, price area, row or table, or its Unavailable in this layout setting. Moving it on the drawing is fine. Prices never change with a map switch.

Remove seating only works when no seat on the date is held, in checkout or sold. It turns Shopify stock tracking back on for the ticket types before the map is removed.

What reserved seating does not do

  • No sales at the POS till. POS check-in works.
  • No best-available or seats-together picking, and no zoom on the shopper's map. The seat list helps on large halls.
  • No free registration on seated events. Free seated tickets go through the normal checkout.
  • No per-seat prices. The price comes from the ticket type sold in the seat's price area.
  • No seat changes by shoppers, and no automatic email when a seat changes.
  • No translated map labels. Row, table, section and seat names show as typed in every language.
  • A map holds up to 5,000 places, seats and standing places together.

For a tour of what shoppers get, see the reserved seating feature page.

Frequently asked questions

How long are seats held while a shopper checks out?

20 minutes by default. You can set 5 to 30 minutes per date in Hold time in minutes on the Reserved seating tab. While the shopper fills in guest details the hold renews, up to three times the hold time in total.

Can I sell reserved seats at the Shopify POS till?

No. The till refuses tickets for a seated event with "This event is not on sale right now." Checking in seated tickets at POS works, and the POS check-in list shows the seat.

What happens to sold seats when I edit the seat map?

Nothing until you switch the date to the new version. When you do, tickets on seats that still exist keep them. Tickets on removed seats lose their seat, and you give them a new one on the Attendees tab.

Can shoppers have the best available seats picked for them?

No. Shoppers always click their own seats on the map or in the seat list. There is no best-available or seats-together button.