Event Tickets with Ticket Scanner


Selling event or party tickets, member entrance with any expiration date, multipass tickets, family tickets and more. Selling different kind of tickets and redeeming them was never so easy.
Optional create your own ticket look and feel with the ticket designer. The built-in anti-double-redeem-protection protects you for fake tickets beeing used.
Use the built-in browser-based ticket scanner or your own ticket scanner. Hand out badges as PDF to your customers and much more.

Quick start video

Sell tickets for your event or party and redeem the ticket at the entrance with the free Tickets with WooCommerce plugin, from the team behind the Serial Code Validator in WordPress.

You can make your tickets look unique by adding a banner, logo and background image. The same applies also for the event or party flyer.
You can offer event badges for your event. So your customer can wear them during the event. With the badge editor you can controll the look and fell.

The QR code on the ticket can be customized, so that you can use your own ticket scanner and software if needed.
Your third party solution can be informed once a ticket is redeemed by a webhook.
You can give other person access to your ticket scanner with Auth Token System.

This plugin makes it easy to sell tickets and redeem them at the event location entrance for you in-person or virtual events. It integrates easely with your WooCommerce products.

Install the plugin and set your products to be a event ticket product. That’s it.

The plugin will generate a secure ticket number and add them to the mail to your clients. It will also generate a PDF with the ticket information and QR code. The built-in ticket scanner allows you and your team to redeem the tickets by scanning the QR-code. You can also use an external keyboard scanner by using the text input field on the ticket scanner page.

You can even import your own ticket numbers, but it will generate them also on the fly. The freedom is in your hands.

The best is to try it out. So many options. Don’t be shy, give it a try – you have nothing to loose πŸ˜€

Shop: Sell event and party tickets with your normal products. The plugin will create the ticket number on the fly or use unused ticket numbers from your ticket number list for each sold item.

Validation of ticket numbers: You customer can validate a ticket number on your page. The ticket number generator gives you a flexible pattern to generate ticket numbers upfront. You can also import your existing codes.

Validation of tickets: You customer will get a link to a detail page and a PDF for each sold ticket.

Build your own stolen ticket number database: Support your customer and yourself to protect stolen ticket numbers to be sold or used to others. Mark reported ticket numbers as stolen and let others check the ticket numbers with the ticket number validator.

How can you setup the ticket numbers?
The ticket numbers will be generated by the plugin automatically, if you do not set up ticket numbers upfront.
You can enter your ticket numbers within the WP admin area in the ticket number section (a new menu point in the wordpress amdin area).
You can generate your own ticket numbers manually using the ticket number generator or import existing ticket numbers.
And you are also able to add your own ticket numbers by just entering them to the generated ticket numbers below the ticket number generator.
If needed you can assign the ticket (numbers) to a list which helps you to organize the tickets. The ticket list need to be assigned to a WooCommerce product.
Create one or more ticket lists to use the WooCommerce functionality.
Create bundle products – determine how many ticket numbers should be created with the sale of one product.

How the ticket number works
You define your look and feel for your ticket numbers. The generated ticket numbers will be unique. After you are satisfied with the generated ticket numbers, you can start the adding step.
The ticket adding step will check if the ticket number is unique on the server before adding it.
If the ticket number exists already on the server, it will not be added.

The ticket number generator provides a lot of features:

  • Ticket number prefix – you can enter a fixed prefix to each ticket number
  • Length of ticket number
  • Only letters
  • Uppercase, Lowercase or both
  • Exclusion of letters that are easy to missread (i,l,o,q,p)
  • Delimiter possible: [None, -, :, SPACE] – you decide after how many letters within the ticket number
  • CVV code generation (only numbers)

Yes, this is a fork of the serial code validator plugin. We decided to make it an own plugin out of it. So to add more and more features that are not related to serial codes but to event tickets.


At the bottom of this page you will find a complete list of all features.

  • Sell event tickets as PDF with WooCommerce
  • Single entrance, mulitpass, family pass, member card with expiration date and more
  • Add QR, tickets, badges, additional PDF pages to the purchase order emails.
  • Download PDF of ticket to print it as a badge for your customers
  • Attach your own PDF to the ticket PDF (will be added as additional pages)
  • Also for professional usage – use your QR and barcode scanner to verify the tickets
  • WooCommerce product variants supported
  • Generate flyer for your party or event
  • Redeem event tickets at the entrance using the included ticket scanner page (mobile ready)
  • Add ICS calendar file or a ticket to the purhcase email and ticket detail page
  • Store WooCommerce orderid, itemid and productid to a ticket that was generated or used for a product sale
  • You can now set a unique ticket number format for all WooCommerce product that are using a ticket number
  • You can now set the ticket number format directly also on the WooCommerce product detail page if needed
  • Use your codes to restrict purchases that allow a purchase of this product only if the buyer has a code for it (purchase allowance code)
  • Add your own messages for the ticket number validation form for your customers
  • Add your own message for the “product stolen” validation message
  • Disable the validation form for not logged in wordpress user
  • User can register to a ticket (with the wordpress user id if needed) after the ticket number is checked – this makes your code one-time usable
  • Display registered user information of a ticket number during the validation if you need this
  • One time check can have a maximum check amount based on ticket list or based on the global settings
  • The user can be forwared (redirected) to an URL after the ticket number was checked – to show more details
  • Webhooks – you can inform other systems about ticket redeemed status and validation steps
  • Display assigned tickets to your user with a shortcode [sasoEventTickets_code]
  • Add images to the ticket (header, background and Footer)
  • Adopt font size for the PDF ticket
  • Forcing responsive design for the ticket scanner for better experience
  • Allow multiple redeem times for multi usage tickets
  • Ticket badge designer for maximum control of the look and feel


A Quick start is shown in this video.
A good first start is to open the event ticket admin area and create a list first, if not already done or if you do not want to use the default ticket list.
Go to your WooCommerce product and activate the ticket sale option and set the list.
Check out all the possible options in the event ticket admin area to understand, how to tweak your usages of plugin.
Optional: Then add your ticket number by importing (add button at the ticket table) or assign the ticket list to your products.
Optional: If you need a validation form for your users, to check the ticket number, then please add the shortcode [sasoEventTicketsValidator] to a page.

Steps to start

  • Go to the admin area and click on menu “Event Tickets”.
  • Click on button “Add” next to the heading “List”.
  • Go to your “ticket” product and set the option with in the product settings “Event Tickets”
    To scan the QR code of the sold tickets at the entrance:
  • Go to the admin area and click on menu “Event Tickets”.
  • Click on the button “Ticket Scanner” at the top area
  • Scan tickets and redeem them

Premium Features

  • Unlimited ticket numbers (the basic allows you 50 tickets)
  • Unlimited Lists
  • Save IP address of user using the ticket number validation check on your page
  • De- and re-activate tickets
  • Block IPs after x …


  • Ticket Details Mobile The ticket details are also optimized for mobile devices.
  • Ticket Details Desktop You can define what will be shown on the ticket.
  • Ticket PDF Your customer can download the ticket as a PDF.
  • Ticket scanner Scan and redeem the tickets at the entrance on mobile and desktop devices.
  • Ticket Badge Print out your ticket badge with customer name on it.
  • Options 1 Ticket options.
  • Options 3 Created tickets backend admin area.
  • Options 4 Ticket numbers can be pre generated if needed.
  • Flyer example You can also adjust your event or party flyer.
  • Ticket example You can adjust different areas of the PDF ticket.
  • Product settings You overwrite the format of the ticket number and activate the ticket sale.
  • Options 5 Adjust the information on the flyer.
  • Order Ticket Detail View Quick ticket scan possible with the order ticket detail view.


  • WordPress 5.0 or greater
  • PHP version 7.0 or greater
  • MySQL version 5.0 or greater


  1. Install the pluging using the WordPress built-in Plugin installer.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress.
  3. Click on the menu “Event Tickets” and browse the options – optional.
  4. Edit your product to generate a event ticket.

Quick Setup

This plugin extend WooCommerce to be able to setup your product as a ticket. Go to the product. Open the Event Tickets tab and activate the checkbox. Set the ticket list and fill out the other details if needed.
The default is to generate the ticket if the order is “completed”. For automatically order status set to “completed” set up the ticket as a virtual product and/or download product – add a flyer or so as a download.
To test the ticket. Create an order within the order backend, set the order status to “completed” – this will assign the ticket numbers. Check the order email. Click on the ticket detail link to check the ticket detail page.
Create a real test purchase (with coupon code or wire transfer), check the order email.
If you have a 404 page for ticket detail page or ticket scanner page, then set up the compatibility options.

For more help and your first steps, please visit our website


26 februarja, 2024
I've been looking for the right plugin to be used for selling event tickets and vouchers and this is the best one yet! I even bought premium version, which offers PDF ticket with QR code to be attached to customer emails after successfull purchase. Lots of custumzations available.
12 februarja, 2024
Sehr Gutes Event Ticket Plugin mit Super Support. Saso ist da auch recht Flott bei Hilfestellungen. Danke DafΓΌr Alle 5* verdient !!!
19 januarja, 2024
This is a super tool. Really what we need for selling tickets to our fundraiser event. Incredible amount of configuration options. It takes a bit of time to learn what is all possible, but unbelievable what is all possible.Nevertheless, it is fairly easy to set up with the good help video's. Also, very fair price!
6 decembra, 2023
We are a small-scale performance art promoter, and need to work within small budgets. Seeking to avoid yet another commercial ticketservice that need subscription fee and take sale percentages - we took it up to establish our own webshop with ticketservice. This app delivers exactly what we need and more: easy integration with our WooCommerce product sale, easy delivery of PDF tickets to our guests and integrated ticket scanning at the front door. It all works like a charm. We did one show on Basic to see what's what - but became very satisfied very fast and are now on Premium to scale up and to support development. Top job all the best
Read all 14 reviews

Contributors & Developers

“Event Tickets with Ticket Scanner” is open source software. The following people have contributed to this plugin.



2.2.4 – 2024-02-29

  • New search option to search for the customer (billing lastname and first_name). Use CUSTOMER:xyz to search for tickets
  • Dropdown to show you the possible magic search commands for the ticket search – it will prefill the filter keyword and you enter the search value after the command
  • The order view is now displaying the names and products in the first box (Order Ticket Infos)
  • Ticket scanner handles order view QR code and allows to redeem all tickets of an order at once or single tickets of the order
  • New option to have additional text after the ticket number at the bottom of the default template – wcTicketAdditionalTextBottom

2.2.3 – 2024-02-18

  • Add check for the allowed email status to prevent error with a wrong or not set configuration
  • Adjusted the time and timestamp calculaton to use the datetime objekt – fix for the support info area
  • New option to add a Rest service path for the ticket scanner – wcTicketCompatibilityModeRestURL

2.2.2 – 2024-02-09

  • New option to hide ticket products if the event end date is passed – wcTicketHideTicketAfterEventEnd
  • Date fix (again – sorry – the date with timezone is killing me) for the start date of an event

2.2.1 – 2024-01-24

  • Display ticket infos (within the product) you will see also the order id for each QR code
  • Add CUSTOMER variable for the ticket designer
  • If product is missing, then the product name will not be retrieved for the preview orders
  • Ticket scanner output shows the product information – ID, name + variants, SKU

2.2.0 – 2024-01-16

  • Added new option for the ICS file to add the organizer tag – wcTicketICSOrganizerEmail
  • Changed the date of the ICS to display the UTC date
  • If no end time is added but the end date, then the end time will be 23:59:59
  • Change the position of the ticket label options
  • Ticket designer template values are now automatically saved
  • New option to change the order status with a successfully redeem operation – ticketScannerSetOrderStatusAfterRedeem
  • Change the search order to a deeplink to the order within the ticket admin detail view
  • New option to change the order status automatically to completed, if all purchased items are ticket products – wcTicketSetOrderToCompleteIfAllOrderItemsAreTickets

2.1.11 – 2024-01-15

  • Added the option to pass the CVV to the ticket number validator

2.1.10 – 2024-01-14

  • The expiration date is not shown anymore on the ticket scanner if it is not set or 0
  • Save in woocommerce order the public ticket id too
  • Added a ticket PDF preview button to the Test Ticket Template Code option
  • Option text fields are now 90% of the screen width
  • Text editor for option wcTicketDesignerTemplateTest and the need to click on the save button for it
  • Added to the template variables TICKET.start_time and TICKET.start_date_timestamp
  • New function to ticket template available – getMediaData(media_id) – example {{ getMediaData(PRODUCT.get_image_id).url }} – [title, location, meta, url, suffix]
  • Bug fix for missing date entry fields on the variant product
  • Added test template chooser – it will load a template code into the test ticket template code area
  • Added default template to choose
  • Added one new ticket template to choose
  • Fix label for the dropdown option of the product at the checkout
  • Color on the ticket detail page for the label “wcTicketTransTicketRedeemed” will be green if still redeem operations are left
  • Color on the ticket scanner for the label “wcTicketTransTicketRedeemed” will be green if still redeem operations are left
  • QR image size for ticket badge added
  • Added background image for ticket badge – wcTicketBadgeBG
  • You can have now recurrent ticket product by just setting the time and not date part. This will calculate the entrance date to be today. If the end date is not set but the end time, then the start date will be used.
  • The redeem amount of the product will be displayed below the button within the ticket scanner, if option active.
  • Ticket admin detail view fix for the max redeem amount value – display
  • New button “Remove Ticket Placeholder” to remove non-tickets from an order. This is helpful, if the ticket number placeholder was added by the system.

2.1.9 – 2023-12-30

  • Emergency fix for the ticket generation – sorry

2.1.8 – 2023-12-28

  • Fix amount of tickets for basic free plugin

2.1.7 – 2023-12-07

  • Reverted to the old approach to render the QR Code image on the PDF with the default template. – not for QRCODE_INLINE, it stays like it is
  • New option to use always the default ticket template code – wcTicketTemplateUseDefault
  • Fix link to the Test PDF ticket
  • QR code is again at the right possition below a banner if set for the default ticket template
  • Default value of textarea options are now longer automatically added as a value of the textarea – makes it easier to understand if the default value is in place
  • Small default ticket template adjustments to use also the QRCODE_INLINE and other optimizations

2.1.6 – 2023-12-06

  • New option to hide the PDF download button on the ticket scanner – ticketScannerDontShowBtnPDF
  • New option to hide the Badge download button on the ticket scanner – ticketScannerDontShowBtnBadge
  • Fixed wrong start and end date display
  • Fixed redeem allowed before timezone differ on Javascript

2.1.5 – 2023-12-05

  • Fix time and date display
  • Reguser name property bug removed

2.1.3 – 2023-12-05

  • Timezone is not using default function anymore but the normal timezone setting – date and time changed to wordpress current_time
  • Bug fix for metaobj woocommerce order creation date – it was storing the timezone instead the time and displayed 1970
  • Change layout back for adding new tickets manually – again stacked layout for better support on smaller browser screen size
  • Fix bug for error logging during the checkout processing
  • Fix bug for the dropdown chooser default value of a product during the checkout processing

2.1.2 – 2023-11-28

  • Ticket designer template adjustments – inspect the default template for changes
  • Ticket designer template can now use the {QRCODE_INLINE} tag to place the QR-code anywhere
  • Button at the ticket designer template displays the default temlate code
  • PDF engine allows now TCPDF inline HTML tags – see more infos at https://tcpdf.org/examples/example_049/
  • Bug fix for premium plugin check PHP8 ready
  • Added a refresh table button for tickets
  • Bug fix for redeemed date display
  • New option to remove the margin on the PDF ticket – wcTicketPDFZeroMargin
  • New product option to let your customer choose from a dropdown list
  • New ticket bulk action to move several tickets into a ticket list

2.1.1 – 2023-11-20

  • Display of the timezone and times within the support option fixed
  • Timezone set with each file
  • Timezone will be stored to the date values
  • Bug fix default value for checkbox values
  • New option to hide the ticket scanner options on the ticket scanner and use the new presets as default – ticketScannerDontShowOptionControls
  • New ticket scanner option to start the cam immediately, overwrite the option setting just for the session
  • New option to start cam immediately after scan of ticket – ticketScannerScanAndRedeemImmediately
  • New option to hide the ticket information on the ticket scanner – ticketScannerHideTicketInformation

2.1.0 – 2023-11-16

  • Plugin settings for the product will now also be shown if the product type is external “show_if_external”
  • Fix bug that redeem immediately with the scan of the ticket
  • New option for error message too late to redeem – wcTicketTransTicketNotValidToLate
  • New option to allow a late redeem operation – wcTicketAllowRedeemTicketAfterEnd
  • New option to skip the scan-next-button within the ticket scanner – ticketScannerStartCamWithoutButtonClicked
  • Bug fix for the date placeholder on the ticket prefix
  • Timezone of WordPress or if not set from the PHP default will be set at the beginning