PS PrestaShop Intermediate

Event Tickets & Seating — Complete Guide

Install, configure and run event ticketing: general-admission or assigned-seating events, price zones linked to product combinations, visual seating chart, QR/PDF tickets and scan-based entry control for PrestaShop 8 and 9.

Updated Module version 1.0.0

Overview

DataFirefly Event Tickets & Seating turns any PrestaShop product into an event ticket. The module handles two event types (general admission or assigned seating), a visual seating chart, QR ticket generation downloadable as PDF, and a scan-based entry-control screen. The key idea: each seat category is a product combination, so PrestaShop natively handles prices, taxes and invoicing.

No external dependency: QR and PDF generation is bundled inside the module. No Composer is required, and the module works on PrestaShop 8 and 9, in multistore.

Installation

  1. Download the dfeventtickets.zip archive from your DataFirefly account.
  2. In the back office, go to Modules > Module Manager, click Upload a module and drop the ZIP.
  3. The module installs automatically: it creates its tables, its menu tabs (under Customers > DataFirefly Ticketing) and registers its hooks.
  4. Clear the PrestaShop cache (Advanced Parameters > Performance > Clear cache) after installation.

When updating, overwrite the files then clear the cache to purge PrestaShop’s class index.

Key concepts

Product = ticket

You first create a standard PrestaShop product (the “ticket”), then associate an event with it. Everything related to price, VAT and invoicing stays handled by PrestaShop.

Price zone = combination

Each zone (Gold Circle, Balcony, Pit…) points to a product combination (id_product_attribute) or to the base price. This guarantees correct totals and invoices, with no parallel calculation.

Two event types

  • General admission (general): the customer picks a category and a quantity via the native add-to-cart block.
  • Assigned seating (seated): the customer picks their seat on an interactive seating chart.

Creating an event

Go to Customers > DataFirefly Ticketing > Events then click Add an event. Fill in:

  • the associated product;
  • the type (general admission or assigned seating);
  • the start and end dates (format YYYY-MM-DD HH:MM:SS) and the timezone;
  • the capacity (for general admission);
  • the hold duration (minutes during which a selected seat stays locked, 15 by default);
  • the active status.

You can also reach event creation/editing directly from the Ticketing & Event tab on the product page.

Defining price zones

Once the event is saved, the Price zones panel appears below the form. For each zone, set a name, the matching product combination (or the base price) and a display color. The actual price is read from the PrestaShop combination.

Create at least one zone before drawing the seating chart: every seat must be attached to a zone.

Drawing the seating chart

For seated events, open Draw the seating chart. The visual editor lets you:

  • generate a block of seats (rows × columns, with configurable first row and first number) attached to a zone;
  • reposition a seat by drag-and-drop;
  • enable/disable a seat (click) — a disabled seat is not sold;
  • delete a seat (double-click);
  • clear all to start over.

The “STAGE / ENTRANCE” bar provides an orientation cue for your customers.

Storefront: buying a ticket

On the product page, the module automatically injects the right widget:

  • Assigned seating: an interactive chart where zones are color-coded, taken seats greyed out and available seats clickable. The customer selects one or more seats; each selection adds the matching combination to the cart and holds the seat temporarily.
  • General admission: an availability box; the purchase goes through the native quantity block.

If a seat has just been taken by another customer, the chart refreshes and prompts them to pick another one — no double-selling.

QR & PDF tickets

As soon as the order is validated and paid, the module generates one ticket per actually-paid seat, each carrying a unique random token encoded as a QR code. The customer downloads their tickets as a PDF (one ticket per page) from the order detail or their customer account. If TCPDF is unavailable, a printable HTML fallback is provided.

Entry control (scan)

On the day, open Customers > DataFirefly Ticketing > Scan. Two modes:

  • Camera: start the camera and present the ticket QR;
  • Manual entry: paste or type the ticket code.

The result is shown in color (valid, already used, cancelled, invalid) and a log of the latest scans helps the front-desk staff. A validated ticket switches to used and can no longer be reused.

Ticket life cycle

  • reserved: seat selected, locked until the hold expires;
  • valid: order paid and reconciled (only actually-paid seats become valid);
  • used: ticket scanned at the door;
  • cancelled: order cancelled or refunded;
  • expired: an unconfirmed hold that reached its expiry.

Managing tickets in the back office

The Tickets tab lists every ticket with its event, seat, customer, order, status and issue date. The list is filterable and supports bulk cancellation. A per-event filter is available from the zones panel.

Compatibility & technical notes

  • PrestaShop 8.0 to 9.x, multistore, multilingual (FR, EN, ES, DE, IT);
  • PHP 7.4 to 8.3;
  • ModuleAdminController controllers (PS8/9 compatibility, no Symfony controllers);
  • QR (MIT library) and PDF (native TCPDF) bundled, no Composer dependency.

Troubleshooting

The selection widget does not show on the product page

Check that the event is active, associated with the right product, and that the module is properly hooked on the product-page hooks. Clear the cache.

A blank page appears after install or update

Clear the PrestaShop cache to rebuild the class index, then reload the screen.

The camera does not start on the scan screen

Camera scanning requires a secure context (HTTPS) and camera-access permission. Otherwise, use manual code entry.

Prices or taxes look wrong

Make sure each zone points to the correct product combination: PrestaShop computes price and VAT from that combination.

Was this page helpful?

Still stuck? Contact support