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 retries within 60 minutes – prevent brute force
  • One time usage overuled by list settings
  • Enter expiration date for tickets
  • Enter expiration date for ticket number lists (ticket number overrule list expiration date)

Try it out first, before you go Premium. “Here you can find the premium plugin”.

Build your own Stolen products database

You can set the status of a ticket number to be marked as stolen. This way you can offer your customers a way to report a stolen product. Other buyers of used products can validate the ticket number on your website and will be notified with a “Product is stolen” warning.
This could increase sales and help reducing theft of your products.
The check behaviour will be like “inactive codes” but with the stolen message. You can change the stolen message within the options area of the serial code admin.

Protection with CVV

You can set a code verification value (CVV) to protect your tickets. The validation check will ask the user to enter both for a valid check.
That way you increase the security of your ticket numbers and prevent stealing the numbers (If you are able hide the CVV on your packaging).
If you use a CVV on a ticket number, then the user will be asked to enter this CVV too during the validation. If the CVV on your ticket number is not set or empty it will be ignored and your customer is not asked for it.

Woocommerce support for auto-generating tickets

Supports version 6+
You can use this plugin to auto-generate tickets and codes for your woocommerce products
* Create a code list
* Go to your WooCommerce product and edit the product which should receive a ticket
* Go to your WooCommerce product and edit the product which should receive a code – if needed
* Click on “Event Tickets” in the attribute area of your product
* Choose the “List” that will be used for this product

Everytime this product is sold, it will get a new generated ticket number/code or use an unused one within your list (This need to be activated within the option settings). The new code will be added to the code list you set on your WooCommerce product and to the product sale too.
If the sold product quantity in the order is more than 1, then a ticket number/code will be generated for each element. The code will be generated after the purchase. In case of a refund the code will be recovered and marked as unused, so that it can be reused.

E.g.: Your customer bought 2 of the same product within one order, then 2 tickets will be generated and stored to the product item within this order.

WooCommerce Ticket Features

  • Automatically create and assign tickets for physical products and digital products
  • Recover tickets assigned to refunded orders
  • Option to reuse the recovered tickets with the latest orders
  • Automatically deliver the tickets with the complete order email
  • Automatically a ticket as PDF for download and add the download link to the complete order email.
  • Automatically deliver the tickets and download URL with the optional PDF invoice “WooCommerce PDF Invoices”
  • Download a flyer for your event or party

WooCommerce Code Features

  • Automatically create and assign codes for physical products and digital products
  • Recover code assigned to refunded orders
  • Option to reuse the recovered codes with the latest orders
  • Automatically deliver the codes with the complete order email
  • Automatically deliver the codes with the optional PDF invoice “WooCommerce PDF Invoices”

Please note:
If you exceed your limit (no limits for premium user) of the amount of possible tickets/codes, then the ticket/code added to the sold product will be a text information: “Please contact our support for the code”.
This way your business is not harmed and your customer can contact you to get a code manually. The format of the code will be 12345-12345-12345-12345 if you do not set a generation format within the options.

WooCommerce PDF Invoices support to display the ticket numbers on the PDFs

If you use “WooCommerce PDF Invoices”, then the generated ticket numbers/codes are displayed on the generated PDFs too!
The supported PDF plugin is from Ewout Fernhout.

WooCommer Ticket Sale

You can add a list to your product and sell tickets. The ticket will be added to the sale informations for you and your client.
The client will also have a link to check the ticket and mark the ticket as used, only if the order is set to completed. This will mark the ticket as redeemed.
You can check the entrance by letting your customer show the confirmation page and hit on the “redeem”-button.
Or you scan the QR code of the ticket with the ticket scanner (included). The ticket is also available as PDF for download to your customers.
Checkout the video, how it works


We have different frontend elements. Just to sell tickets and scan them, you do not need to add any shortcodes to your pages.

Frontend event tickets

Your customer will receive a specific URL to the ticket detail page. You can control which information to display. additional they can download the ticket as a PDF.
The ticket will contain a QR code, that can be scanned by you or your team (no loggin to WordPress needed) and redeem the ticket.
Watch the video for it

Frontent to validate the ticket number

  • Use the shortcode [sasoEventTicketsValidator]
  • Create a page or use an existing one and add the shortcode to the page
  • The shortcode will be replaced for your users by a form to enter the ticket number and a button to validate the ticket. This allows you to surround the form with your own heading and instruction.
  • Each ticket number has a display version (e.g. XYZXYZ -> XYZ-XYZ), so it is easier for your user to read the ticket number.
  • The check will remove the …


  • 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


apríl 12, 2024
Smooth installation, incredible features, just open wp-admin on phone and scan ticket to redeem.After a whole day fighting with other WooCommerce extensions, this plugin was a ray of sunshine 🙂
februar 26, 2024 1 reply
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.
februar 12, 2024 1 reply
Sehr Gutes Event Ticket Plugin mit Super Support. Saso ist da auch recht Flott bei Hilfestellungen. Danke Dafür Alle 5* verdient !!!
januar 19, 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!
Read all 16 reviews

Contributors & Developers

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



2.2.8 -2024-04-06

  • Fix for variant ticket amount
  • Added new section to have an FAQ – starting with some most experienced issues

2.2.7 – 2024-04-23

  • Hot fix border on PDF – the full fix will be with next release

2.2.6 – 2024-03-22

  • New option to display the add ons of a purchased ticket on the ticket – wcTicketDisplayProductAddons
  • Adjusted the default template to display the add ons of a ticket
  • Fix of the ticket URL of the test orders if you switched the compatibility mode – you need to reload the options once you change the value to have the new URL for the ticket designer preview
  • Fix too early expiration message for premium serial
  • Added WPDB to the twig editor, so you can make SQL statements within the ticket designer – but NOT recommended, you have to know what you are doing
  • Ticket scanner authtoken can be set to allow only specific product ids to be retrieved and redeemed – great for events like movies or so
  • The amount of tickets per product sale can now also be set on the variant product

2.2.5 – 2024-03-16

  • Support for non-ansi codes in the ticket number like Umlaute added
  • Check for the expiration of the support for premium license added
  • Bugfix orderview is now finding the ticket number
  • Opening the order ticket details tab on the order view is default now

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