Skip to content

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:

  1. Filter by session.
  2. For each registration, click Mark attended (or No-show).
  3. 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).