Table of Contents
Overview
Purchase allowance codes let you require a valid code before a product can be bought. Two situations use the very same mechanism:
- Presale and access codes — you generate a list of codes and hand them to the people who are allowed to buy (members, sponsors, a mailing list).
- A ticket from an earlier event — the required list is simply the ticket list of that earlier event. Example: only someone holding a group-stage ticket may buy a ticket for the final.
The feature is included in the free version.
How it works
- You pick which list a product requires.
- In the cart, the buyer enters a code or ticket number.
- The plugin checks that the code exists, is active, belongs to that list, and has not been used yet.
- Only then can the order be placed.
Until you assign a list to a product, nothing changes anywhere in your shop.
Step 1: Create the list of allowed codes
Go to WordPress Admin → Event Tickets and create a list, or use an existing one.
- For presale or access codes, create a new list and generate the codes in it.
- To require a ticket from an earlier event, no new list is needed — use the ticket list of that event.
Step 2: Require the list on a product
Edit the WooCommerce product and open the Event Tickets tab.
- Set Required ticket / access code to the list you want to require.
- Leave it on — No restriction — for every product that should stay freely purchasable.
The product does not have to be a ticket product itself. You can protect merchandise, workshops or any other product this way.
Single use or multiple use
Per product you decide how often a code may be used, with the checkbox Allow the same code for several purchases:
- Off (default) — each code unlocks exactly one purchase. Right for personal presale codes.
- On — the same code stays valid for further purchases. Right for a shared code, or a season ticket that entitles its holder to buy several times.
Switching it on only skips the used check. A code that is inactive or from a different list stays invalid either way.
What the buyer sees
A restricted product shows an input field in the cart. As soon as a code is entered, the cart replies immediately:
- Code accepted.
- This code has already been used.
- This code is not valid for this product.
Without a valid code the order cannot be completed, and the cart names the product that is missing one.
Wording and display settings
Under Event Tickets → Settings you can adjust the texts:
- Cart label above the required code field — the line shown above the input.
- Placeholder inside the required code field — the grey hint inside the input.
- Label for the used code in orders and emails — printed in front of the code the buyer used.
- Do not print the used ticket / access code on the PDF — leaves the code off the PDF ticket.
Switching the feature off globally
The setting Allow requiring a ticket or access code to purchase is on by default and acts as a global off switch.
- While it is on, nothing happens until a product actually has a list assigned.
- Switching it off disables the feature everywhere at once — including on products that still have a list assigned. Those products become freely purchasable again, and the cart field disappears.
This is the fastest way to react if something is misconfigured shortly before a sale starts, without editing every product.
Frequently asked questions
Does the product have to be a ticket product?
No. Any WooCommerce product can require a code, whether or not it generates tickets itself.
Can a customer use somebody else's code?
Yes — the check is about the code, not about the account. A code is valid for whoever enters it, so treat presale codes as you would a voucher. With single use (the default), the first person to use a code consumes it.
What happens to the code after the purchase?
The used code is stored on the order and can be shown in the order view, in emails and on the PDF ticket. With single use, it cannot unlock a second purchase.
The buyer gets "not valid" although the code exists
Three things are checked besides existence:
- the code is active,
- it belongs to the list required by this product,
- and, unless multiple use is on, it has not been used yet.
A code from a different list is the most common cause.
Can I require a code only for some variations?
No. The requirement is set on the product, so it applies to all of its variations.