WEBHOOKS

Booking happens. Your systems know immediately.

Connect schedule.so to any external system with webhooks. A new booking fires a POST to your CRM. A cancellation fires an alert to your ops team. A reschedule updates your internal database. Custom headers, custom body, three trigger events. No Zapier required.

Three trigger events. Four things you can configure per webhook.

booking.created

Fires immediately when a new booking is confirmed. Create a CRM contact, add to a Notion database, post a Slack notification, or trigger any downstream process.

🔄

booking.rescheduled

Fires when an existing booking is moved to a new time. Update records in your CRM, notify the relevant team member, or log the change.

booking.cancelled

Fires when a booking is cancelled. Close a deal stage in your CRM, remove from a drip sequence, or trigger a win-back flow.

🔗

Any endpoint — GET or POST

Any publicly accessible URL. Your own API, a third-party service, or a serverless function. GET or POST — your choice.

📋

Custom request headers

Add authentication headers, API keys, or any custom header your receiving endpoint needs. Full control over auth.

📦

Custom request body

Send additional data fields alongside the booking payload. Add your own metadata, routing keys, or context.

Set up a webhook in under 2 minutes

No middleware, no Zapier account, no added latency. Fires directly to your endpoint.

Add your first webhook free
Step 01

Go to Developer Settings > Webhooks

Go to Developer Settings > Webhooks

Navigate to Settings > Developer > Webhooks and click Add Webhook.

Step 02

Enter Your Endpoint URL

Enter Your Endpoint URL

Paste the URL of your API endpoint, CRM webhook receiver, or serverless function. Choose GET or POST.

Step 03

Select Trigger Events & Add Headers

Select Trigger Events & Add Headers

Choose which events fire this webhook — booking.created, booking.rescheduled, booking.cancelled, or all three. Add any custom headers your endpoint needs.

Step 04

Save & Test

Save & Test

Save the webhook. Every matching event will now fire a request to your endpoint. Check the delivery log to confirm it's working.

Webhooks vs Zapier

Feature
schedule.so Webhooks
Zapier
SetupPaste URL + select triggersBuild a multi-step Zap
LatencyDirect — fires instantlyMiddleman delay (1-5 sec typical)
CostIncluded — no extra chargeSeparate Zapier subscription required
Custom headers✓ Full controlLimited per Zap structure
Delivery log✓ View + reattemptZap history (paid plans)

Frequently asked questions

Yes. You can configure each webhook to send either a GET request or a POST request, depending on what your receiving endpoint requires.

Yes. Add your authentication key or token as a custom request header — for example “Authorization: Bearer your-token” or a custom X-Auth header.

Yes. You can create multiple webhooks for the same trigger event. All configured webhooks will fire when that event occurs.

Yes. You can view recent webhook deliveries and their status from your webhook settings. Useful for debugging failed deliveries and redelivering missed events.

schedule.so will attempt to redeliver failed webhooks. Check your webhook delivery log for failures and reattempt status.

Your booking tool should talk to your other tools.

Set up webhooks in minutes. No Zapier required.

✓ 3 trigger events (created, rescheduled, cancelled)
✓ Custom headers + GET or POST support
✓ Delivery log with reattempt
Dashboard