Webhooks
Send real-time HTTP notifications to your endpoints when events happen in SchedulingKit.
Updated 2 min read
title: Webhooks category: Integrations order: 11 description: Send real-time HTTP notifications to your endpoints when events happen in SchedulingKit.
Webhooks
Webhooks let you receive real-time notifications at your own server endpoints whenever something happens in SchedulingKit — a booking is created, a payment is completed, an event is cancelled, and more.
Where to find it
- Settings → Webhooks.
- Routes:
/settings/webhooks(list),/settings/webhooks/create,/settings/webhooks/{id}/edit.
Creating a webhook
- Go to Settings → Webhooks.
- Click Create Webhook.
- Fill in the details:
- Name — A label for this webhook (e.g. "CRM sync", "Zapier trigger").
- URL — The endpoint that receives the POST requests (must be HTTPS).
- Events — Select which events trigger this webhook.
- Timeout — How long to wait for a response (1–300 seconds, default 30).
- Retry attempts — How many times to retry on failure (0–10, default 3).
- Click Save. A signing secret is automatically generated.
Events
| Event | When it fires |
|---|---|
event.created | A new event/booking is created |
event.updated | An event is updated (details changed) |
event.cancelled | An event is cancelled |
event.rescheduled | An event is rescheduled to a new time |
event.reminder | A reminder is triggered before the event |
event.follow_up | A follow-up is triggered after the event |
booking.created | A booking is created (customer side) |
booking.confirmed | A booking is confirmed |
booking.cancelled | A booking is cancelled |
payment.completed | A payment is successfully processed |
payment.failed | A payment attempt failed |
payment.refunded | A payment is refunded |
webhook.test | Test event for verifying your endpoint |
Payload format
Each webhook sends a JSON POST request:
json
{
"event": "booking.created",
"timestamp": "2025-01-15T10:30:00Z",
"data": {
"id": 123,
"event_type": "30-min-consultation",
"date": "2025-01-20",
"time": "14:00",
"duration": 30,
"invitee": {
"name": "Jane Smith",
"email": "jane@example.com"
},
"location": "Zoom",
"meeting_link": "https://zoom.us/j/..."
}
}Headers
| Header | Description |
|---|---|
Content-Type | application/json |
X-Webhook-Event | The event type (e.g. booking.created) |
X-Webhook-Signature | HMAC-SHA256 signature for verifying authenticity |
X-Webhook-Delivery-Id | Unique ID for this delivery |
Verifying signatures
Each webhook includes an X-Webhook-Signature header computed using your signing secret:
signature = HMAC-SHA256(signing_secret, request_body)Compare this with your own computed signature to verify the request is genuine.
Testing
- On the webhook list or edit page, click Test.
- A test payload (
webhook.testevent) is sent to your endpoint. - Check the response status and verify your endpoint received the data.
Delivery log
Each webhook tracks its deliveries:
- Status code — The HTTP response code from your endpoint.
- Response — The response body (truncated).
- Delivered at — Timestamp of successful delivery.
- Error — Error message if delivery failed.
- Attempt — Which retry attempt this was.
Retries
If your endpoint returns a non-2xx status code (or times out), the webhook is retried up to the configured number of attempts.
Managing webhooks
- Edit — Change the URL, events, timeout, or retry settings.
- Toggle — Enable/disable a webhook without deleting it.
- Delete — Permanently remove the webhook.
Use cases
- Sync bookings to your CRM (Salesforce, HubSpot).
- Trigger automations in Zapier or Make.
- Update your internal database when payments are processed.
- Send custom notifications via your own systems.
- Track analytics on booking patterns.
Was this article helpful?
More in Integrations
- ZoomConnect Zoom to automatically create meeting links when customers book video calls.
- StripeAccept payments for bookings and invoices with Stripe Connect.
- SlackGet booking notifications in Slack, manage your schedule with slash commands, and book from Slack.
- Apple CalendarSync with Apple iCloud Calendar using CalDAV for conflict checking.
Questions about this? Bella answers from these articles.