Events

Events and venues

Occurrences, ticket tiers and QR check-in — with availability drawn at runtime, never cached.
The question a visitor arrives withIs Friday sold out?
Modules usedTickets · Selling · Forms
PublishedAug 23, 2026

Selling a ticket is not selling a mug. A ticket is for a specific night, in a specific tier, and it stops existing when the doors close.

Events, occurrences, tiers

An event is the thing with a name. Occurrences are the nights it happens — generate a run of them at once rather than making twelve events. Ticket types are the tiers on sale for those nights, each with its own price and its own allocation.

Availability is drawn, never cached

The ticket picker renders nothing about stock on the server. The published markup carries the title and the date and price list, and every tier says it is checking until the widget has asked the server. That is deliberate: the page around it is cached for up to half an hour, and a seat count in cached HTML is a lie within minutes.

Which is also why the copy on this page never promises a ticket is available.

On the door

Each issued ticket carries a code that renders as a QR, and check-in is its own service — so the door list is the same record as the sale, not a spreadsheet somebody exported.

Keep reading

The other three.

Every one of these is a different job for a website, and most businesses are a mix of two.

Start

Build the version of this that is yours.

Nothing above needs deciding in advance. Turn a module on when the business actually needs it.