Event Ticketing: When Agents Buy Seats on Behalf of Fans
Event ticketing platforms sell tickets for live music, theatre, and comedy across many venues. The core of the booking experience is usually an interactive seat map: a visual representation of the venue where users click on individual seats or sections to select them.
It is a good experience for humans. For agents, it is often an impenetrable barrier.
The Typical Starting Point
A seat map like this is commonly built with a combination of SVG and canvas rendering. Each venue has a custom-drawn map with sections, rows, and individual seats represented as clickable elements. Seat availability is indicated by colour: blue for available, grey for sold, yellow for restricted view. Pricing shows on hover. Selecting a seat highlights it in green and adds it to a basket sidebar.
The SVG elements typically have no semantic attributes. Each seat is a circle element with an ID like "s-A12-34" and no text content, no ARIA label, and no title. An agent viewing the seat map sees hundreds of unlabelled circles. Even if an agent can determine that a particular circle represents a seat, it cannot determine the section, row, seat number, price, or view quality without triggering hover events that most agents cannot simulate.
The venue information pages are often slightly better. Event listings show the date, time, venue name, and artist in readable HTML. But the critical link between "this event is happening" and "here are the available tickets" goes through the seat map, and that link is broken for agents. In an audit, the seat map alone is usually enough to stop every agent before purchase.
What to Change
The right approach is to add an alternative selection method alongside the map, not replace it.
List-based seat selection. Add a "List view" tab to the booking page, alongside the existing "Map view." Display available seats in an HTML table with columns for section, row, seat number, price, and view quality (Standard, Restricted, or Premium). Give each row a checkbox to select the seat and an "Add to basket" button. Let the table be sorted by price, section, or row, and allow filters to narrow by price range, section, or view quality.
Use proper semantic HTML for the table: thead, tbody, th with scope attributes, and td elements. Include a data attribute on each row with a JSON-encoded summary of the seat details for easy agent extraction.
Structured event data. Give each event page Schema.org Event markup with the event name, date, time, venue (as Schema.org Place), performer, ticket price range, and availability. This lets agents answer basic questions ("Are there tickets available for this artist at this venue on Saturday?") without needing to interact with the seat map or list view at all.
Direct booking URLs. Support constructing booking URLs with seat selections: /book/event-123?seats=A12-34,A12-35. An agent that has identified available seats from the list view can add them to the basket in a single URL request, bypassing the interactive selection entirely. Validate seat availability on the URL before proceeding to checkout.
Accessible checkout flow. Replace any custom-styled quantity selector (plus/minus buttons with a display div) with a native number input, and use a redirect to the payment provider rather than an iframe.
What Improves
Once a list view exists, agents can complete ticket purchases that the seat map made impossible, finding and buying the specific seats a fan asked for. Direct booking URLs tend to become the most-used path for agents that can parse the table: they identify seats, construct the URL, and complete the purchase in a single flow, which is faster and more reliable than interacting with the list sequentially.
There is a common, useful side effect: the list view often gets used by human visitors too, particularly on mobile devices where the seat map is fiddly on a small screen. The agent-friendly alternative ends up improving the experience for a subset of human users as well. The heaviest agent use tends to come from season ticket holders and frequent buyers who already know which venues and seating areas they prefer and delegate the mechanical task of finding and buying specific seats.
Lessons for Ticketing Platforms
The seat map problem is similar to the floor plan problem in coworking spaces: visual spatial interfaces that work for humans but are meaningless to agents. The solution is the same: provide an alternative text-based selection method alongside the visual interface.
The list view does not have to replace the seat map. Most human users will continue to prefer the map because it gives spatial context (how close am I to the stage? Am I near the aisle?). But agents need a data-driven path to the same outcome. A table with sortable, filterable seat data provides this.
For any platform that depends on interactive visual selection, whether seats, tables at a restaurant, or parking spaces, the pattern is: keep the visual tool for humans, add a structured text alternative for agents, and provide direct URLs that bypass the interactive selection entirely. Each layer increases the percentage of agents that can complete the task.
If you run a ticketing platform and want to see where agents struggle on your site, run an audit to identify the specific failure points. The seat map is likely your biggest issue, but there may be others in the checkout flow that are easier to fix first.