Webhook events and payloads
Every webhook delivery is a JSON HTTP POST with an event name and a versioned payload envelope. This reference lists the 11 supported event types, the envelope fields, and how registrations and waitlist entries appear in the data.
Event types
Each endpoint subscribes to one or more of these events. The UI label is shown next to each event identifier.
Event identifier | UI label | Fires when |
|---|---|---|
| New registration | A registration becomes active (payment confirmed for paid events) |
| Attendee info completed | The attendee finished filling in their info |
| Registration refunded | A registration was refunded |
| Attendee checked in | An attendee was checked in (bulk check-ins fire one event per attendee) |
| Registration moved | A host moved a registration to another event |
| Registration exchanged | A registration was exchanged |
| Registration transferred | A guest transferred their ticket to someone else |
| Joined waitlist | Someone joined a waitlist |
| Waitlist spot offered | A waitlist spot was offered |
| Waitlist spot accepted | A waitlist offer was accepted |
| Waitlist offer expired | A waitlist offer expired |
The Send test event button delivers a ping event with an empty data object.
Payload envelope
Every delivery shares one envelope:
{
"event": "registration.created",
"payload_version": 1,
"occurred_at": "2026-08-27T10:15:00Z",
"backfill": false,
"site_id": 42,
"team_id": 7,
"data": { }
}event— The event identifier that fired.payload_version— Currently 1. Check this to handle future format changes.occurred_at— When the event happened, as an ISO 8601 timestamp.backfill—truemarks a historical replay (for example after connecting a new integration) rather than a live event.site_idandteam_id— The site and team the event belongs to.data— The event-specific payload.
Data objects
registration.* events carry a registration object in data with the attendee, event, ticket type, quantity, order ID, and currency. The currency field is the ISO currency used at purchase and should be read together with amount_paid rather than assumed to be USD. waitlist.* events carry the waitlist entry with the attendee, event, and position.
Orders
There is no separate order object. A multi-seat purchase arrives as one registration.created per registration, all sharing the same data.order_id. Group on that field to reconstruct the order.
Cancellations
Host-initiated cancellations do not currently emit an event — there is no registration.cancelled type. Refunds do emit registration.refunded. If you need cancellation signals, contact us; adding the event type is on the roadmap.