Event Registration & Ticketing
At a glance
Event Registration & Ticketing turns every championship, festival, and open day into a self-service marketplace for the whole event audience. Spectators buy tickets, delegations declare squads, journalists request press passes, volunteers sign up for shifts, and supporters pre-order merchandise — all from one branded event portal that feeds straight into the major-event operations workspace and accreditation pipeline.
How it works
Each event gets a public storefront with multiple ticket SKUs: single-day passes, full-event passes, family bundles, and tiered VIP packages with hospitality add-ons such as catering, parking, and meet-and-greets. Pricing supports early-bird windows, member discounts validated against federation licence numbers, and currency localisation per host country. Spectator checkout uses Stripe for cards and regional methods (Klarna, iDEAL, Bancontact, Swish) and issues mobile tickets with rotating QR codes that scan at the gate via the volunteer app.
Delegation registration is a separate flow where national-team managers declare players, coaches, and support staff, upload passports for accreditation, and confirm rooming preferences inherited by the accommodation module. Media accreditation collects outlet, beat, equipment list, and prior coverage, and routes requests to the press chief for approval. Volunteer registration captures availability, languages, certifications (first aid, drivers licence), and t-shirt size; the shift scheduler then auto-assigns slots across roles (gate, catering, transport, scoring, hospitality) with conflict detection and re-confirmation reminders.
Volunteers receive their personal schedule in the app with check-in QR. Merchandise pre-orders run on the same checkout so supporters can collect official jerseys, caps, and event programmes at the venue or have them shipped. All flows post into a unified event roster used by accreditation, ceremony, and transport.
Key capabilities
- Multi-tier ticket SKUs with early-bird, member, and currency-localised pricing
- Mobile tickets with rotating QR codes scanned by the volunteer app
- Delegation registration with passport upload feeding accreditation
- Media accreditation workflow with press-chief approval and outlet history
- Volunteer signup with shift scheduler, conflict detection, and reminders
- Event merchandise pre-order with venue pickup or shipping
- Unified event roster shared with accreditation, ceremony, and transport
In practice
A spectator finds the event from the public events feed, picks a two-day pass plus a hospitality lounge add-on, pays in local currency, and receives QR tickets in Apple Wallet. A national-team manager opens the delegation portal, declares the squad, uploads passports, and selects rooming preferences. A photographer requests media accreditation describing assignment and gear; the press chief approves within a day.
A retired teacher signs up as a volunteer, marks weekend availability and French-English-Italian skills, and is auto-assigned three shifts at the welcome desk. Two weeks before the event everyone receives a personalised pre-event email with ticket, schedule, venue map, and merchandise pickup instructions.
Features in this subsystem
10| ID | Status | Features |
|---|---|---|
| F13.02.01 | Shipped | Spectator ticket sales (online) — publikt, oautentiserat köp med engångs-token + kvitto, serverberäknat pris, atomisk kapacitet och fall 2-betalkedja (arrangörens eget konto) ✅ 767f53a2.m-2 (t-2) |
| F13.02.02 | Shipped | Ticket types (day pass, full event) — event_ticket_type-katalogen med pris/valuta som heltal, kapacitet, försäljningsfönster, max_per_order, publicerings-flagga och pris-frysning när typen bär en betald anmälan ✅ 767f53a2.m-2 (t-1/t-2) |
| F13.02.03 | Shipped | Delegation registration (national teams) — subject_kind='delegation' skapar en F1-6-begäran av typen delegation (ingen egen FSM); beslut fattas på de generiska steg-endpointerna ✅ 767f53a2.m-2 (t-2) |
| F13.02.04 | Shipped | Media accreditation requests — ägs av D-COMM, inte av D-EVENTS (raden var FELRIKTAD): media_credential med publik ansökan, F1-6-beslut, QR-kort och egen grind ligger i 040878a9.m-6. D-EVENTS m-8 bygger därför varken tabell, ansökan, beslut, QR eller grind för media och rör aldrig D-COMM:s rader — category='media' på ackrediteringsrutten svarar 422 validation_failed med en detail som pekar på POST /v1/public/media-credentials/apply ✅ 040878a9.m-6 (D-COMM; se även m-8:s avvisning i specs/api/endpoints/accreditation.md § *media — känt men avvisat*) |
| F13.02.05 | Shipped | Volunteer registration and management — subject_kind='volunteer' öppnad på m-2:s BÅDA anmälningsdörrar (autentiserad + publik, m-2:s ordning verbatim): UTAN biljettyp (ticket_type_id ⇒ 422), utan belopp, utan att ta en åskådarplats och med reserved_until = null — hållningssvepet rör henne aldrig. Formulärfälten (role_preference mot skiftens egen slutna rollmängd, availability, message) bor i event_volunteer_profile (1—1) skriven i SAMMA transaktion, och gästkvittot bär hennes EGNA pass (volunteer_shifts) utan att m-2:s whitelist luckras upp ✅ 767f53a2.m-8 (t-1 backend + fixtur; kontrakt specs/api/endpoints/volunteers.md; adminfliken *Volunteers* och den publika volontärsektionen levereras i t-2) |
| F13.02.06 | Shipped | Volunteer shift scheduling — volunteer_shift (sluten rollmängd, fönster, kapacitet, is_open_for_signup) + volunteer_assignment som EGEN rad: bemanningen MÄTS (count(*) under for update på skiftraden i samma transaktion), lagras aldrig, och tilldelningens ordning är kontrakt — radlås → anmälan → dubblett → överlapp → kapacitet → insert ⇒ 409 volunteer_shift_full|…_overlap|volunteer_assignment_exists. Den FÖRSTA accepterade tilldelningen flippar anmälan reserved → confirmed genom m-2:s EGEN övergång; en avbokning STÄNGER raden (withdrawn), den raderas aldrig, och ett pass med levande tilldelningar går inte att ta bort (409 volunteer_shift_in_use) ✅ 767f53a2.m-8 (t-1 backend + fixtur; kontrakt specs/api/endpoints/volunteers.md) |
| F13.02.07 | Planned | Event merchandise pre-orders ⊘ ingen ägare — m-9 byggde VIP-hospitality och INTE merch; varken D-KIOSK eller BILL har en förbeställningsmodell (m-2:s spec §2 faktum 16) |
| F13.02.08 | Shipped | Kapacitet som databasen avgör: två villkorade UPDATE:ar (typ → event), noll rader ⇒ 422 event_sold_out — sista platsen kan inte översäljas under samtidighet ✅ 767f53a2.m-2 (t-1/t-2) |
| F13.02.09 | Shipped | Hållningens TTL + F1-7-svepet event_registration_hold_expiry: en förfallen obetald reservation avbokas och SLÄPPER sin plats; en sen betalning återtar platsen om den finns, annars flaggas den för återbetalning ✅ 767f53a2.m-2 (t-2) |
| F13.02.10 | Shipped | Arrangörens anmälningslista + kapacitetsöversikt (allt räknat i SQL) och avbokning som släpper platsen; en betald anmälan avbokas aldrig tyst utan pengaflöde ✅ 767f53a2.m-2 (t-2) |