Productivity
Calendly Webhooks
Scheduling and meeting booking platform. Receive events when invitees book, cancel, no-show, or submit routing forms.
Connecting Calendly to Hookbase
Create a source in Hookbase first — it gives you an ingest URL to paste into Calendly. Then:
- 1Create a Personal Access Token in Calendly → Integrations & apps → API and webhooks
- 2Call POST https://api.calendly.com/webhook_subscriptions with url set to your Hookbase ingest URL, plus your events, organization and scope
- 3Include "signing_key": "<the Signing Key Hookbase generated>" in that request body. Calendly does not return the key in the response
- 4OAuth apps: Calendly generates a webhook signing key for your app, so paste that key into Hookbase instead
Signature verification
Set the source's provider to calendly and paste the signing secret. Every request is checked before the event is stored, and anything that fails is rejected rather than quietly recorded.
- Algorithm
- HMAC-SHA256 with timestamp
- Header
- Calendly-Webhook-Signature
- Where to find the secret
- Personal access token: you set it, by sending "signing_key" in the POST /webhook_subscriptions request body (use the value Hookbase generated). OAuth app: Calendly generates one webhook signing key per app; recover a lost one via support+developer@calendly.com.
Calendly event types
5 of the events people route most often. Hookbase accepts every event Calendly sends, whether or not it is listed here.
invitee.created
A new invitee scheduled an event
invitee.canceled
An invitee or host canceled a scheduled event
invitee_no_show.created
A host marked an invitee as a no-show
invitee_no_show.deleted
A no-show marking was removed from an invitee
routing_form_submission.created
Someone submitted a routing form, whether or not they went on to book
What a Calendly webhook looks like
A invitee.created payload. Hookbase stores the raw body exactly as it arrived, so this is also what you get back on a replay.
{
"created_at": "2024-01-15T10:30:00.000000Z",
"created_by": "https://api.calendly.com/users/AAAAAAAAAAAAAAAA",
"event": "invitee.created",
"payload": {
"cancel_url": "https://calendly.com/cancellations/BBBBBBBBBBBBBBBB",
"created_at": "2024-01-15T10:30:00.000000Z",
"email": "jane@example.com",
"event": "https://api.calendly.com/scheduled_events/CCCCCCCCCCCCCCCC",
"name": "Jane Doe",
"new_invitee": null,
"old_invitee": null,
"questions_and_answers": [
{
"question": "What would you like to discuss?",
"answer": "Onboarding walkthrough",
"position": 0
}
],
"reschedule_url": "https://calendly.com/reschedulings/BBBBBBBBBBBBBBBB",
"rescheduled": false,
"status": "active",
"text_reminder_number": null,
"timezone": "America/New_York",
"tracking": {
"utm_source": null,
"utm_campaign": null,
"salesforce_uuid": null
},
"updated_at": "2024-01-15T10:30:00.000000Z",
"uri": "https://api.calendly.com/scheduled_events/CCCCCCCCCCCCCCCC/invitees/BBBBBBBBBBBBBBBB"
}
}Start receiving Calendly webhooks
Create a source, paste the URL into Calendly, and watch the first event arrive. The free tier includes 1,000 events a month.
Get Started Free