Events
Manage club events with support for multiple types, paid/free bookings, QR check-in, and results tracking.
Event Types
| Type | Description |
|---|---|
SOCIAL | Social gatherings, meetups |
RACING | Competitive racing (with asset assignment) |
MEETING | Club meetings, AGMs |
TRAINING | Training sessions, workshops |
Event Lifecycle
DRAFT → PUBLISHED → ONGOING → COMPLETED
→ CANCELLED| Status | Description |
|---|---|
DRAFT | Being created, not visible to members |
PUBLISHED | Visible, accepting bookings |
ONGOING | Currently happening |
COMPLETED | Finished, results can be added |
CANCELLED | Cancelled, bookings refunded |
Creating an Event
- Navigate to Events → Create Event
- Fill in title, description, date/time
- Pick a location from the dropdown — the list comes from Settings → Event Locations. Choose Other / type below to enter a one-off venue that won’t be saved to your reusable list.
- Select event type
- Set capacity (optional)
- Set ticket price (0 for free events)
- For racing events: set racing fee, configure asset assignment, and pick which pre-race disclaimers apply (defaults to all active — see Settings → Racing Disclaimers)
- Save as Draft or Publish immediately
Bookings
Free Events
Members can book directly. Confirmation email is sent automatically.
Paid Events
Members are redirected to Stripe Checkout. Booking is confirmed after payment via webhook.
Guest Bookings
If enabled, non-members can register with name and email, verify via OTP, then complete booking.
Racing Events
Racing events allow asset assignment per booking. Each participant can be assigned a specific asset (e.g., kart, plane) for the session.
When a driver books a racing event, they are also asked:
- Will you have pit crew/guest? Y/N — if Yes, the pit crew/guest name is required (covered by the club’s personal accident insurance).
- Pre-race disclaimers — one answer per disclaimer attached to the event. Y/N disclaimers render as Yes/No radios; Text disclaimers accept a short free-text answer (max 500 chars).
Answers are stored on the booking and shown to admins on the booking detail.
Booking Statuses
| Status | Description |
|---|---|
PENDING | Awaiting payment or confirmation |
CONFIRMED | Booking confirmed |
CANCELLED | Cancelled by user or admin |
CHECKED_IN | Checked in at the event |
QR Check-In
Each confirmed booking generates a QR code. At the event:
- Admin scans the QR code
- System validates the booking
- Status changes to
CHECKED_IN - Prevents duplicate check-ins
Event Results
After an event is completed, admins can add results:
- Go to the completed event
- Click Add Results
- Enter participant positions, times, or scores
- Results are visible to all members
Calendar View
Events can be viewed in a calendar layout showing all upcoming and past events by Week, Month, or Year.
A second toggle switches the layout between:
- Calendar — the traditional grid (Week/Month) or month overview (Year).
- Agenda — a chronological list of days that have events, using the same event card styling as the Week view. Useful for scanning everything in a period at a glance.
Both toggles are independent: pick any view (Week/Month/Year) and any layout (Calendar/Agenda).
WordPress Display
Published events are automatically available via the [clubms_events] WordPress shortcode. See WordPress Shortcodes.
Sending Email Updates
From any event detail page, admins can send a one-off email blast to keep members in the loop — perfect for reschedules, last-minute changes, or hyping up upcoming races.
- Open the event detail page
- Click the mail icon in the action bar — a side panel slides in
- Enter a subject and message body
- Pick the audience:
- Attendees only — everyone with an active booking on this event (registered members + try-driver guests who opted in)
- All members — every active member, donor, and collector across the club
- Click Send update
Each blast is recorded with the recipient count and the number that delivered successfully. The same panel shows a chronological list of every previous email sent for this event so you can see what’s already gone out and avoid duplicate messages.
Privacy: every recipient is sent their own individual email — no one ever sees another member’s address in the To: or CC fields, even when the audience is “All members”. This protects member contact info and avoids accidental reply-all chains.
Try-driver guests who have unsubscribed or opted out of marketing emails are excluded automatically. Members are emailed via the normal transactional channel and can manage delivery from their account.
Activity History
Every event has a complete audit trail. Click the clock icon in the action bar to open the history panel — it lists every change in reverse-chronological order:
| Activity | When it’s logged |
|---|---|
| Created | The moment the event is first saved (Draft or Published) |
| Updated | Any field edit (title, date, capacity, price, etc.) |
| Status change | DRAFT → PUBLISHED → ONGOING → COMPLETED transitions |
| Email sent | Every “Send update” blast, with the audience and recipient count |
| Cancelled | When the event is cancelled |
Each entry shows who performed the action, what changed, and the time. The history is read-only and is preserved even if the event is later deleted from the dashboard.