Webhooks

Webhooks Overview

What Booklink webhooks are, which events they cover, and what you need before you set one up.

Last updated

Webhooks let Booklink push booking and enrollment events to your own systems the moment they happen. Instead of you polling Booklink for changes, Booklink sends an HTTPS POST request to a URL you control, with the full details of what changed in the request body.

What you can build with them

Anything that needs to react to a booking. Common uses:

  • Push new bookings into your own CRM or spreadsheet.
  • Trigger a Zapier, Make, or n8n scenario that posts to Slack or WhatsApp.
  • Sync completed bookings into your accounting or loyalty system.
  • Update an in-house roster or kitchen display when someone cancels.

Every payload is a complete snapshot of the booking or enrollment, so no-code tools work out of the box. You do not need to call an API afterwards to fetch the details.

Pro feature

Webhooks are available on Pro. On a free account the Webhooks page shows an upgrade prompt, and no events are sent. You also need the Settings: manage permission to view or change webhook endpoints.

The events Booklink sends

There are seven event types. You choose which ones each endpoint receives.

EventSent when
booking.createdA booking is created, whether by you in the app or by a client on your booking page.
booking.confirmedA booking becomes confirmed, either manually or automatically after payment.
booking.cancelledA booking is cancelled by you, by the client, or automatically.
booking.rescheduledA booking is moved to a new date or time.
booking.completedA confirmed booking’s end time passes. Sent by a background sweep, so it arrives shortly after the booking ends rather than exactly on the minute.
enrollment.createdA client is enrolled into a group or cohort.
enrollment.cancelledAn enrollment is cancelled.

Some actions send more than one event. Creating a booking on a service with auto-confirm turned on sends booking.created followed immediately by booking.confirmed. Cancelling an enrollment sends booking.cancelled for each of its remaining session bookings, then enrollment.cancelled.

What every request looks like

Booklink sends an HTTP POST with a JSON body and these headers:

HeaderValue
Content-Typeapplication/json
X-Booklink-Signaturet=<unix timestamp>,v1=<hex signature>

The body always uses the same outer shape, called the envelope:

{
  "id": "evt_8HgT2kQm9vLxRp4c",
  "type": "booking.created",
  "created": "2026-08-29T09:12:04.512Z",
  "data": { }
}

id is unique per event, type is one of the seven event names, created is when Booklink generated the event, and data holds the full booking or enrollment. See the event reference for a worked example of each one.

Requirements for your endpoint

  • The URL must use https. Plain http is rejected.
  • It must be reachable on the public internet. Local addresses such as localhost, private network ranges, and cloud metadata addresses are blocked.
  • The URL must not contain a username or password.
  • Your endpoint must answer within 10 seconds with a 2xx status code. Anything else counts as a failure and Booklink retries.

You can register up to 5 endpoints per account, each with its own event list and its own signing secret.

Testing without a server

Services such as webhook.site or a Zapier catch hook give you an https URL in seconds. Paste it in as your endpoint, hit Test, and you can inspect real payloads before you write any code.

Was this article helpful?

Still need help?

Our support team is happy to help you get the most out of Booklink.

Contact support