7. Events & workshops¶
Concept¶
Event (e.g. "ASCE+ training")
└── Sessions
├── 12 June 2026, Stockholm, 10 seats
└── 19 June 2026, Göteborg, 8 seats
└── Registrations
├── Nina (paid)
├── Mari (free token used)
└── ...
- An event is the workshop/training topic itself.
- An event session is a specific date+location instance of it.
- A registration is a single customer's spot in a session.
Customers register sessions from the storefront. Free tokens (granted to a customer in their profile) let them attend without paying.
Creating an event¶
Marketing → Events → New event.
| Field | What it does |
|---|---|
| Handle | URL slug (/sv/events/<handle>). |
| Title | Customer-facing name. |
| Description | Long-form copy. Markdown. |
| Cover image | Hero on the event page. |
| Price (öre) | Default per-seat price. Free events: set to 0. |
| Currency | The price's currency. |
| Region | Which market this event is visible in. |
| Capacity per session | Default max attendees per session (overridable per session). |
| Active | Master switch. |
Save, then add sessions on the Sessions tab.
Adding a session¶
Sessions → New session:
- Starts at + Ends at - date/time.
- Location - freeform string ("Kavel HQ, Stockholm").
- Capacity - overrides the event default for this session.
- Status - Open / Closed / Sold out / Cancelled.
When customers register, the count increments. When it hits capacity, the storefront flips the button to "Fully booked".
Registrations¶
Marketing → Events → Registrations lists every registration across all events. Filter by event / session / status.
Statuses:
- Pending - registered, not yet paid.
- Paid - paid (card via storefront, or token used, or admin marked).
- Cancelled - customer or admin cancelled.
- Attended - admin marked after the session.
Attendance tracking¶
After a session runs, mark attendance:
- Filter by session.
- For each registration, click Mark attended (or No-show).
- The "Attendance history" view (Sidebar → Events → "Attendance history") shows the rollup of attended events per customer - handy for partner-tier qualification.
Cancelling a registration¶
Customer-side: from their account page (refund handled manually).
Admin-side: open registration → Cancel. Pick whether to refund. The seat is freed.
Free event tokens¶
A customer with free tokens can register for paid events at no cost. On the storefront event page, they see two buttons:
- Pay 1 500 SEK - normal card checkout.
- Use free token (2 remaining) - debits one token, registration immediately marked paid.
You manage their token balance from their customer profile → Perks. See chapter 5.
Common gotchas¶
- Sessions can't change date after registrations exist. Cancel + recreate if you need to move.
- Capacity is enforced atomically. Two simultaneous registrations at the last seat won't both succeed - one gets a 409 and a "Fully booked" message.
- Free tokens debit on REGISTRATION, not on attendance. A no-show doesn't refund the token. If you want to refund manually, bump their token count in the profile.
- The event page in storefront fetches sessions on load. A session you add in KCMS shows up after the next storefront page load (cache TTL is short, ~30s).