Events
Events on a WordPress site: places, sign-up, a waiting list that moves
Appointments are for one person, events are for many: at an appointment somebody takes a time, at an event twenty people take the same date. Concert, course evening, tasting, open day, talk, guided tour. With places, a price, a location, and a sign-up that is done in one step — no account, no outside service, nobody but you knowing who is coming.

The event
- Date, time, place, price, picture and description
- A number of places — or none, where there is no limit
- Categories to narrow both the screen and the list on the site
- A page of its own at /event/its-name/, whether you build one or not
- A closing date, and whether sign-up is open at all
The sign-up
- One step, no account, no confirm-your-confirmation email
- How many people — a family signs up once
- Confirmation with a calendar file (.ics) and a link that cancels
- A reminder two days before, by itself and only once
- Six emails you can rewrite — or leave exactly as they are
What runs by itself
- The last place is given out under a lock
- The waiting list moves up when somebody cancels
- Whoever moves up can be given a deadline to confirm
- Raising places from 24 to 30 fills them from the list at once
- The list on the site drops what has been
Full means full
Two sign-ups in the same second do not both get the same chair.
The last place is handed out under a lock. Whoever is a second late lands on the waiting list — and when somebody cancels, the first who fits moves up and is told at once. The first who fits: a family of four does not move up into two free places, because that would be a promise you cannot keep. You can also move somebody up by hand where you know more than the order does; the places still have to be there.


A calendar the server draws
A list answers "what is next". A calendar answers "what is on the 14th".
That is the question of somebody with a date in mind: the free Saturday, the week before the holidays. The calendar is drawn on the server, so the month is there before any script is — and a search engine sees it too. Paging lives in the address, so a month can be linked. It opens on the first month that actually has something in it: an empty month looks like an empty calendar, and nobody pages on from that.
The sign-ups at a glance
Four figures first: signed up, free, waiting, cancelled.
Under them everybody with their contact, how many they are, when they signed up and what they wrote. The whole list goes out as Excel or CSV — the Excel file is written by the plugin itself; a library for one list would be a library too many. And if an event does not happen after all, the cancellation writes to everybody who was coming, the waiting list included, who would otherwise wait for something that is not happening.

Questions
How is this different from appointments?
At an appointment one person takes a time, and that time is then gone for everybody else — a consultation, a treatment, a test drive. At an event many people take the same date, and there is a number of places. Both modules exist separately; switch on whichever you need, or both.
Does the visitor need an account?
No. Name, address, how many people — done. The confirmation arrives by email, with a link that cancels and a file for the calendar.
What happens when somebody cancels?
The first person on the waiting list who fits into the places that came free moves up and is told at once. You do nothing. Optionally they get a deadline: if they do not confirm, the place goes to the next one and they go back to the end of the list, not the front.
Can I rewrite the emails?
All six of them: confirmation, waiting list, a place is free, the reminder, the cancellation and the message to yourself. Each with a switch, a subject, a text and fourteen placeholders. What you do not change goes out in the wording the plugin brings.
Is anything loaded from outside for the calendar?
No. The calendar is HTML from the server, and the .ics file is written by the plugin. No Google Calendar, no third-party script.
The WordPress theme builder has a name.

Built in Switzerland. Built for WordPress.
