If you run a venue, an escape room, a museum or a club with a WooCommerce shop, you have probably looked at ticketing services. They work, but they take a fee on every ticket, they put someone else's brand in the middle of your checkout, and your customer list ends up on their platform.
I wrote Tickets & Passes for WooCommerce for shops where the sale already happens in WooCommerce and the only missing piece is: how does a person get in the door? Here is how it works from sale to scan.
Three product types, one dropdown
After you activate the plugin and turn on the types you need, three new options appear in the same Product data dropdown that holds Simple and Variable:
- Ticket: plain admission with a validity window and a set number of uses. Day tickets, entry tickets, gift admission.
- Timeslot Ticket: admission for a specific date and time, with a capacity per slot.
- Pass: valid across a period rather than one visit. Season passes, memberships, annual cards.
All three can sit in the same cart and the same order as your normal products, so selling a ticket and a T-shirt together just works.
What the customer gets
Every purchase issues a QR code. Customers see it in the order confirmation email, on a new Tickets or Passes tab in WooCommerce My Account, and as a printable PDF. Each ticket shows its live status (active, used, expired, cancelled or not valid yet) and how many uses are left. Timeslot tickets include an Add to Calendar file.
The QR codes and PDFs are not stored at a guessable public URL. They are served through the plugin, which checks the request is coming from a signed link in the customer's email or from the signed-in owner. That also means a page cache or CDN will not hand one customer's ticket to another visitor.
Timeslots without building next month by hand
For anything with a limited capacity per session, Timeslot Tickets let you generate slots on a repeating schedule. Capacity is checked when the item goes into the cart, not only after payment. Reservations that are never paid for are released automatically, so an abandoned checkout does not hold a seat.
Passes, guest passes and photo check
A Pass can include guest passes that the holder hands out from their account page, collect a cardholder photo at purchase, and enforce a cooldown between scans. At the door, staff see the photo next to the scan result and can compare it with the person standing there.
Scanning at the door
This is the part people expect to need an app. It does not:
- The scanner is a full-screen page on your own domain, at
/check-in/. - Door staff open it in a phone browser and point the camera at the QR code. It needs HTTPS, because phone browsers only give camera access to secure pages.
- Results are colour-coded and you choose the colours: valid, already used, expired, on cooldown or not found.
- Give staff the Scanner user role and they can check people in without seeing anything else in wp-admin.
Every decision is made on your server, not on the phone. A cancelled ticket cannot be waved through by putting the phone in airplane mode, because the check has to reach your site. If there is no camera, a code can be typed in, and manual check-in is available from the dashboard.
What it costs
The plugin is free, and there is no fee per ticket. You sell through your own WooCommerce checkout, so what you charge is what you keep. You still pay your payment processor's normal fees, as with any WooCommerce sale. There is no pro version, no telemetry, and the code is readable and unminified.
Setup in five steps
- Install and activate the plugin with WooCommerce already active.
- Go to Ticket & Passes → Settings and enable the product types you need.
- On the Scanner / API tab, turn on the scanner. The tab shows your scanner URL.
- Create a product and pick Ticket, Timeslot Ticket or Pass from the Product data dropdown.
- Set door staff to the Scanner role.
Where a hosted service is still better
If you need a marketplace where strangers discover your event, or you do not already run a WooCommerce shop, a hosted ticketing service gives you that audience and the setup for free. This plugin is for the case where people already come to your own site and you would rather keep the fee and the customer relationship.
Tickets & Passes is on WordPress.org. Support is in the public forums, where the next person with your question can read the answer.
Originally published on pluginlab.dev.
Top comments (0)