Documentation

Events overview

The standalone events module — public ticketed events, sessions, check-in, and participant management.

The Events module is AppEngine's ticketed-event platform: create an event, define ticket types, sell them through the Storefront, run sessions on a schedule, scan QR codes at the door, and manage the participant roster. It lives at /events/* (staff) and /client/events/* (customer/public) and ships its own data model.

Not the same as CRM events

CRM also has an EventService under /crm/events/*. That one is for internal calendar events — appointments, reservations, internal scheduling. The standalone Events module documented here is for public-facing ticketed events with payment, badges, multi-session schedules and check-in. They share no code and address different needs:

CRM eventsEvents module
AudienceInternal staff + contactsGeneral public
SaleNone — internal schedulingTickets sold via Storefront
Check-inNoneQR scanning, zone occupancy
ScheduleSingle appointmentMulti-day, multi-track sessions
Path prefix/crm/events/*/events/*, /client/events/*

If your case is "schedule a sales call with a contact" → CRM. If it's "sell tickets to a conference" → this module.

Concepts

ConceptOwns
EventThe event record — venue, dates, scan points, ticket types, status (draft, published, live, ended)
TicketTypeA purchasable tier — name, price, capacity, perks, allowed scan points, re-entry rules
TicketAn issued ticket — holder email, QR code, status (active, used, cancelled, refunded), check-in history
BookingA purchase that grouped one or more tickets, tied to a payment ref
SessionA scheduled item on the agenda — title, room/track, start/end, type (talk, workshop, break)
ParticipantSomeone with a role at the event — speaker, sponsor, organiser, attendee — independent from ticketing
CheckInAn entry/exit scan record. Drives zone occupancy
CredentialA pre-printed badge/wristband/NFC code that can be assigned to a ticket
PerkAn add-on bundled with a ticket type (swag, meals) — claimable at fulfillment desks

What's in each page

  • Event creationPOST /events/create, event shape, venue, capacity.
  • Ticketing — ticket types, sales via Storefront, ticket as a Storefront product.
  • Sessions and scheduling — multi-track agendas, day-grouped schedule.
  • Check-in — QR scan workflow, zone occupancy, re-entry.
  • Participants — roster, RSVP, communications, late registration.

Three controllers

ControllerPath prefixPrincipalWhat for
EventsController/eventsUser (staff)Create events, issue/refund tickets, run check-in, manage participants
EventsClientController/client/eventsCustomer / publicBrowse events, purchase tickets, view schedule, RSVP
(event repository)/data/eventUserDirect CRUD on the event record (used by admin UI)

The split is the same pattern as the rest of AppEngine: staff endpoints carry @Roles(RoleType.User), customer endpoints accept the customer JWT, and a few public reads (event list, ticket types, schedule) are decorated @PublicRoute() so a marketing site can render the event page without auth.

How a ticket becomes money

Ticket sales are handled by the Events module on top of the Storefront's payment gateways. The customer endpoint POST /client/events/tickets/purchase creates a booking and a Stripe payment intent (or a PayPal order), and POST /client/events/tickets/confirm-order finalises it after the gateway callback. Each ticket type maps to a Storefront product variant under the hood, so fees, taxes, gift-card use and discount codes all run through the same pricing pipeline as a regular order.