Promo codes
Promo codes let sellers discount tickets and add-ons at checkout. You can create codes in bulk from a CSV, manage them from a paginated list, and customise the promo field copy on each event.
This guide is for sellers and ops.
Bulk upload
On /dashboard/promo-codes, open the promo upload dialog and use preview, then confirm.
- Download the template from
public/templates/promo-codes-import.csv - The client parses the CSV; the server creates codes in bulk (editors and above)
- Cap: 1,000 rows per upload — split larger files
- Duplicate codes in the upload are skipped, never overwritten
- The server revalidates after the client parse
- Date-only values (
YYYY-MM-DD) are treated as end-of-day UTC
Manage codes
The promo list is sortable and paginated (15 per page). You can activate or deactivate codes, and use bulk targeting helpers such as:
- All tickets
- All add-ons
- No add-ons
- Reset
- Custom targets
Custom promo field on the event
Each event can customise how the promo box appears at checkout via a promo field with optional:
- label
- placeholder
- description
Edit this in the event’s promo codes section. Copy edits use a dedicated update path and do not re-run code validation. When you change payments/promo codes more broadly, only newly added codes are validated.
What buyers see
Checkout shows your label, placeholder (or the default PROMO CODE if blank), and description. Leaving the custom field blank keeps the previous default behaviour. Typed codes are uppercased for matching.
Removed: membership-number checkout
Checkout by membership number (typing an external membership ID for a discount) was removed. Do not expect that field at checkout. Member pricing for signed-in members still uses normal membership / sign-in flows.
Good to know
- Stay within the 1,000-row upload cap
- Exact character limits on promo-field copy, full CSV column lists beyond the template, partial-fail rollback behaviour, and which usage/expiry columns appear in CSV are not spelled out here