Skip to main content
This is the complete public outbound-event catalogue. Event names are stable, dotted, lowercase strings. New optional fields may be added without a version change; existing fields are not repurposed. Every example below shows the event-specific data object. Perkstar wraps it in the common envelope documented in Receive webhooks.

Field conventions

  • IDs are opaque strings. Store and compare them exactly.
  • occurredAt, scheduledStart, scheduledEnd, attendedAt, and resolvedAt are ISO 8601 UTC timestamps.
  • created in the outer envelope is Unix seconds.
  • Money fields ending in Pence are integer minor units.
  • Nullable fields are sent as JSON null; optional fields may be absent.
  • testMode: true identifies a transaction generated with test credentials.

Customer lifecycle

Loyalty activity

transaction.created.type is normally STAMP, REDEEM, or ADJUST. tier.changed.kind is status, cashback, or discount.

Tickets, gifts, and multipasses

Memberships

Engagement

Bookings

All booking events use the same schema. Only the event name and resulting status differ. Required fields are id, provider, providerBookingId, status, scheduledStart, loyaltyCredited, source, and occurredAt. The fields customerId, cardId, scheduledEnd, attendedAt, and resolvedAt are nullable. serviceLabel and staffLabel contain the provider labels saved on the booking.

Diagnostics

The targeted test ignores the endpoint’s subscription filter, but the webhook must be active.