Payloads
Every webhook is one JSON envelope with the event's id, type and time, and a data object shaped for its kind: a ticket, an order, a gift or a contact.
Every delivery is a JSON body with the same envelope. Its data object depends on the event's kind. Amounts are dollars as decimals, with currency beside them, and times are ISO 8601 in UTC. Send test delivers samples of these exact shapes, with obviously fake values.
The envelope
{
"id": "6f1c2a9e-3b7d-4f0a-9d1e-2c8b5a4f7e10",
"type": "order.completed",
"sequence": 48211,
"occurred_at": "2026-10-25T23:04:11Z",
"api_version": "2026-08-09",
"data": { }
}| Field | What it is |
|---|---|
id | The event's id. The same value arrives as the Idempotency-Key header. Dedupe on it. |
type | One of the webhook events |
sequence | A number that only grows. Use it to order events; it skips values. |
occurred_at | When it happened |
api_version | The payload format's version |
data | The objects below. A sample also has "sample": true here. |
Shared objects
| Object | Fields |
|---|---|
org | id, name, slug |
event | id, name, slug, starts_at, starts_at_local (the start written out in the event's zone), ends_at, timezone, mode (paid or free), access_mode, is_published, location_format, location_name, location_address, location, online_url, image_url, url (the public page, on your own domain if you have one) |
host | id, name, referral_code, or null when no host brought the guest |
payment | id, processor (offline for money you collected yourself), status, method_type, wallet, card_brand, card_last4, or null |
Ticket events
registration.created, attendee.checked_in, attendee.checkin_undone and registration.revoked send org, event, attendee, purchaser (name, email), host, currency and _links (attendee, the event's guest list in Ovante; order, the guest's ticket page).
The attendee object, which order events also use for each ticket:
| Field | What it is |
|---|---|
registration_id | The ticket's id |
name, email, phone, guest_name | The holder's details. phone is null when the connection leaves out phone numbers. |
holder_known | False for a ticket nobody has named. Its name and email are the buyer's, copied so the ticket has somewhere to go. |
ticket_level_id, ticket_level_name | The ticket type |
price, discount | What the ticket cost after the discount, and the discount |
qr_code_data | What the ticket's QR code holds |
checked_in, checked_in_at | The door |
custom_fields | Answers to your checkout questions, or null when the connection leaves them out |
payment_status, order_id, created_at | The ticket's payment state, its order, and when it was made |
Order events
order.completed and order.refunded send:
| Field | What it is |
|---|---|
org, event, host, payment | As above |
order_id | The order's id |
purchaser | name, email, phone |
tickets, ticket_count | Every ticket on the order, as attendee objects |
totals | subtotal, discount, tickets, donation, amount_charged, platform_fee, processor_fee, currency, and on a refund refunded |
promo_code | id, code, discount_type, discount_value, applies_to, or null |
donations | Each gift on the order: id, amount, is_tax_deductible, source |
created_at, refunded_at | When the order was placed, and on a refund when it was refunded |
_links | order, the buyer's ticket page |
totals lists the parts and doesn't add them into one revenue figure; add what your books need.
Donation events
donation.received sends org, event, payment and donation: id, amount, currency, donor_name, donor_email, is_tax_deductible, registration_id, order_id, created_at, source (where the gift came from, such as checkout, sponsorship or journal_ad) and description ("Sponsorship: Gold", or "Donation").
Contact events
contact.created and contact.updated send org, currency and contact:
| Field | What it is |
|---|---|
id, email, first_name, last_name, phone | Who they are. phone follows the connection's choice. |
company, job_title, status, tags, source | From the contact record |
opt_in_marketing | Whether they opted into marketing |
verified | Whether the contact is marked verified |
address | line1, line2, city, state, postal_code, country |
social | instagram, twitter, linkedin, website |
stats | total_spent, total_donated, total_events, lifetime_value, average_ticket_price, lead_score |
last_event_name, last_event_date, first_seen_at, created_at, updated_at | Their history with you |