Add an address
- In Zapier, start a Zap with “Webhooks by Zapier”, Catch Hook, and copy its address. In Make, add a “Custom webhook” and copy its address.
- In HQ, go to Integrations, open Webhooks, paste the address, tick the events you want and press “Add webhook”.
- Press “Send test”. Zapier or Make should show a test event.
Addresses must start with https:// and be on the public internet. You can have up to 10.
The events
| Event | When |
|---|---|
| booking.created | A booking is made (once any payment it needs is done) |
| booking.updated | A booking changes: moved, marked attended, a note added |
| booking.cancelled | A booking is cancelled |
| customer.created | A new client |
| sale.paid | A payment is taken: a booking, a pack or membership, a gift card, a card-reader sale |
Events are sent within about a minute. Each one is sent once per address.
What we send
Every event is JSON with an id, the type, when it was made, your business and the data. For example, booking.created:
{
"id": "01a2…",
"type": "booking.created",
"createdAt": "2026-10-15T09:00:12.000Z",
"business": { "id": "01a1…", "name": "Ash Barbers" },
"data": {
"id": "01a3…",
"status": "confirmed",
"startsAt": "2026-10-17T09:00:00.000Z",
"endsAt": "2026-10-17T09:30:00.000Z",
"service": { "id": "01a4…", "name": "Skin fade" },
"staff": { "id": "01a5…", "name": "Rae" },
"customer": { "id": "01a6…", "firstName": "Ivy", "lastName": "Client", "email": "ivy@example.com" },
"source": "customer_web",
"priceGrossMinor": 2200,
"currency": "GBP"
}
}customer.created sends the client’s id, name, email, whether they agreed to news and offers, and when they were added. sale.paid sends the payment’s id, kind, amount in pence, currency, booking (if any), client (if any) and when it was paid. Phone numbers, notes, allergies and health information are never sent.
Checking it came from us
Each request has a Venakis-Signature header: t=<time>,v1=<signature>. The signature is an HMAC-SHA256 of the time, a full stop and the exact body, using your address’s signing secret (shown when you add it, and under “Show secret”). Reject requests whose time is more than 5 minutes old.
Retries and pausing
- If your address doesn’t answer with a 2xx, we try again after 1, 5 and 15 minutes, then 1, 3, 6 and 12 hours, then give up.
- After 20 failures in a row we pause the address and email you. Check it works, then press Resume.
- Redirects aren’t followed: give us the final address.
- The delivery log shows the last 100 deliveries and what your address answered.