Listeo Booking Plus turns Listeo’s Event listing type into a real ticketing system. You can define multiple ticket types per event, set capacity per type, control sale rules, and (optionally) collect attendee details at checkout.

Defining ticket types

  1. Edit an Event listing.
  2. Scroll to the Ticket Types meta box.
  3. Click Add ticket type for each tier — for example: Adult, Child, VIP, Early Bird.
  4. For each tier set:
    • Label — what customers see (“Adult”, “VIP”).
    • Price — per-ticket price in your store currency.
    • Capacity — how many of this ticket type are available. Leave blank for “as many as the event capacity allows”.
    • Min & Max – set how many tickets user could buy at once.
    • Sales Start and Sales End date – when tickets will be available

How capacity works

Booking Plus respects two capacity limits at the same time: the per-ticket-type capacity (the cap you set on each tier) and the event total capacity (Core’s listing-level field). Whichever is reached first stops sales for that tier.

Example: an event with total capacity 100 and a “VIP — 20 tickets” tier. Once 20 VIP tickets are sold, the VIP tier shows as sold out even if total ticket sales are well below 100.

The front-end ticket selector

Customers see a quantity selector per ticket type. They can mix tiers in a single booking (2 Adult + 1 Child + 1 VIP), and the booking summary breaks each line out for transparency.

Collecting attendee names and emails

Toggle Collect attendee names and / or Collect attendee emails in Listeo Core  → Listeo Booking Plus Settings. When on, the confirmation step shows one name (and / or email) field per ticket. Names appear on the individual e-tickets; emails are stored against the booking so each attendee can be contacted directly.

 

Reservation holds

When a customer clicks “Book” and lands on the confirmation step, Booking Plus puts a temporary hold on the tickets they’ve selected. While the hold is active, those tickets are invisible to other customers — the inventory shows fewer seats, and the ticket selector won’t let anyone else buy them.

If the customer completes checkout, the hold becomes a real booking. If they abandon the page (or the timer runs out), the hold expires and the seats go back into inventory.

Configuration

  • Reservation hold time (minutes) — Listeo → Settings → Booking. Default: 15.
  • Raise it if your checkout requires a slow third-party step (a complex payment redirect, a manual approval).
  • Lower it on high-demand events where seats need to recycle quickly when checkout is abandoned.

What happens when a hold expires

The customer doesn’t get an aggressive error — when they submit the form, the system re-checks availability and tells them politely that their hold expired and to pick again. No silent overselling.

Individual ticket codes

When Generate individual ticket codes is on (default), Booking Plus creates one unique scannable code per ticket — not per booking. A family that buys 4 tickets gets 4 codes.

Where customers see their codes

  • In the booking confirmation email.
  • On the booking detail page in their dashboard.
  • Each code includes a QR for the door scanner.

Why per-ticket and not per-booking

Door scanning works ticket-by-ticket: each attendee can arrive separately, get their own code scanned, and the system marks just that ticket as used. With one code per booking, a single scan would either let the whole family in (no count) or block subsequent scans (annoying).

If you really do want per-booking codes (small private event, you trust the headcount), switch the setting off and the legacy single-code-per-booking behaviour comes back.