Events
The events a webhook can subscribe to, and the fields in each payload
Payload format
Every webhook request body has the same envelope:
{
"id": "evt_order_created_k57d9x2q8n3m4p5r6s7t8u9v0w1x2y3z_1794185870123",
"type": "order.created",
"created": "2026-11-13T10:15:02.123Z",
"data": {
"orderId": "k57d9x2q8n3m4p5r6s7t8u9v0w1x2y3z",
"orderNumber": "ORD-3MZZPC",
"status": "pending",
"paymentStatus": "unpaid",
"total": 45,
"currency": "GBP",
"customerId": "jd7a1b2c3d4e5f6g7h8j9k0m1n2p3q4r",
"itemTypes": ["booking"],
"updatedAt": "2026-11-13T10:15:02.120Z"
}
}| Field | Description |
|---|---|
id | The event's unique ID. Every retry and replay of the event keeps this ID, and it matches the tiquo-event-id header. |
type | The event type. It matches the tiquo-event header. |
created | When the event happened, in ISO 8601 UTC. |
data | The event's fields, described below. |
Payloads carry IDs and key fields, not full records. Use the IDs to fetch the full record from the Admin API. Fields without a value are left out of data, so treat every field except the IDs as optional. Tiquo may add new fields; ignore any you don't recognise.
Events can arrive out of order. Compare updatedAt with the version you already hold, or fetch the latest record from the Admin API, rather than relying on arrival order.
Event types
These are the events you can choose in Settings > Webhooks.
| Event | When it is sent | Data |
|---|---|---|
customer.created | A customer profile is created. | Customer |
customer.updated | A customer profile changes. | Customer |
company.created | A company is created. | Company |
company.updated | A company changes. | Company |
order.created | An order is created. | Order |
order.updated | An order changes, for example its status or payment status. | Order |
order.completed | An order is completed. | Order |
order.cancelled | An order is cancelled. | Order |
order.refunded | An order is refunded. | Order |
booking.created | A booking is created that is not yet confirmed, for example while it waits for payment or approval. The dashboard calls this Tentative booking created. | Booking |
booking.confirmed | A booking is confirmed. | Booking |
booking.updated | A booking changes. | Booking |
booking.cancelled | A booking is cancelled. | Booking |
booking.completed | A booking is completed. | Booking |
enquiry.created | An enquiry is created, including website form submissions. | Enquiry |
enquiry.updated | An enquiry changes. | Enquiry |
membership.created | A membership is created for a customer or company. | Membership |
membership.updated | A membership changes. | Membership |
membership.paid | A membership payment, renewal or joining fee is paid. | Membership paid |
payment.succeeded | An order's payment succeeds. | Order |
payment.failed | An order's payment fails. | Order |
payment.refunded | An order's payment is refunded in full. | Order |
payment.partially_refunded | Part of an order's payment is refunded. | Order |
The Send test button sends a webhook.test event, which you can't subscribe to. See Add a webhook.
Customer events
customer.created and customer.updated.
| Field | Type | Description |
|---|---|---|
customerId | string | The customer's ID. |
customerNumber | string | The customer number, for example CUST-000001. |
status | string | The customer's status. |
source | string | Where the customer came from, for example the dashboard, a website form or an import. |
updatedAt | string | When the customer last changed, in ISO 8601 UTC. |
Company events
company.created and company.updated.
| Field | Type | Description |
|---|---|---|
companyId | string | The company's ID. |
companyNumber | string | The company number. |
name | string | The company name. |
status | string | The company's status. |
updatedAt | string | When the company last changed, in ISO 8601 UTC. |
Order and payment events
All order.* and payment.* events.
| Field | Type | Description |
|---|---|---|
orderId | string | The order's ID. |
orderNumber | string | The order number, for example ORD-3MZZPC. |
status | string | The order's status. |
paymentStatus | string | The order's payment status. |
total | number | The order total in the currency's major unit, for example 45.5 for £45.50. |
currency | string | The ISO 4217 currency code, for example GBP. |
customerId | string | The ID of the customer on the order. |
companyId | string | The ID of the company on the order. |
itemTypes | string[] | The kinds of item on the order: product, booking, membership or custom. |
updatedAt | string | When the order last changed, in ISO 8601 UTC. |
Refund events (order.refunded, payment.refunded and payment.partially_refunded) can also include:
| Field | Type | Description |
|---|---|---|
refundAmount | number | The total refunded so far, in the major unit. |
refundDeltaAmount | number | The amount refunded by this refund, in the major unit. |
refundReason | string | The reason entered for the refund. |
refundedItems | string[] | The IDs of the order items refunded. |
refundedAt | string | When the refund was made, in ISO 8601 UTC. |
stripeRefundId | string | The Stripe refund ID, for card payments. |
Booking events
All booking.* events.
| Field | Type | Description |
|---|---|---|
bookingId | string | The booking's ID. |
bookingNumber | string | The booking number. |
status | string | The booking's status. |
serviceId | string | The ID of the booked service. |
sublocationId | string | The ID of the sublocation the booking is at. |
customerId | string | The ID of the customer who made the booking. |
orderId | string | The ID of the order the booking belongs to. |
startsAt | string | When the booking starts, in ISO 8601 UTC. |
updatedAt | string | When the booking last changed, in ISO 8601 UTC. |
Enquiry events
enquiry.created and enquiry.updated.
| Field | Type | Description |
|---|---|---|
enquiryId | string | The enquiry's ID. |
enquiryNumber | string | The enquiry number. |
status | string | The enquiry's status. |
priority | string | The enquiry's priority. |
source | string | Where the enquiry came from, for example a website form or the dashboard. |
customerId | string | The ID of the customer linked to the enquiry. |
updatedAt | string | When the enquiry last changed, in ISO 8601 UTC. |
Membership events
membership.created and membership.updated.
| Field | Type | Description |
|---|---|---|
membershipId | string | The membership's ID. |
membershipPlanId | string | The ID of the membership plan. |
subjectType | string | customer or company: who holds the membership. |
customerId | string | The customer's ID, when a customer holds the membership. |
companyId | string | The company's ID, when a company holds the membership. |
status | string | The membership's status. |
paymentStatus | string | The membership's payment status. |
updatedAt | string | When the membership last changed, in ISO 8601 UTC. |
membership.paid
Includes every membership field above, with paymentStatus set to paid, plus:
| Field | Type | Description |
|---|---|---|
orderId | string | The ID of the order that paid for the membership. |
orderNumber | string | That order's number. |
sublocationId | string | The ID of the sublocation the order was placed at. |
amount | number | The amount paid, in the currency's major unit. |
currency | string | The ISO 4217 currency code. |
paymentKind | string | membership for a membership payment, or joining_fee for an order that only contains a joining fee. |
isRenewal | boolean | true when the payment renews an existing membership. |
renewalDate | string | The membership's next renewal date, in ISO 8601 UTC. |
paidAt | string | When the payment was made, in ISO 8601 UTC. |