/settings/developer/webhooks
and proceed to enter the following details:
Subscriber URL
Event triggers
Booking Cancelled
Booking Created
Booking Rescheduled
Booking Rejected
Booking Requested
Booking Payment Initiated
Booking Paid
Meeting Started
Recording Ready
Form Submitted
Meeting Ended
Instant Meeting Created
Secret
Custom Payload
Add a new secret key to your webhook
Wait for the webhook to be triggered
Create an HMAC using the secret key
Verify the payload authenticity
(x-cal-signature-256)
with the one you created using the secret key and the body of the payload. If they don’t match, the received payload has been adulterated and cannot be trusted.{{type}}
represents the event type slug and {{title}}
represents the title of the event type. Note that the variables should be added with a double parenthesis as shown above. Here’s a breakdown of the payload that you would receive via an incoming webhook, with an exhaustive list of all the supported variables provided below:
Variable | Type | Description |
---|---|---|
triggerEvent | String | The name of the trigger event [BOOKING_CREATED, BOOKING_RESCHEDULED, BOOKING_CANCELLED, MEETING_ENDED, BOOKING_REJECTED, BOOKING_REQUESTED, BOOKING_PAYMENT_INITIATED, BOOKING_PAID, MEETING_STARTED, RECORDING_READY, FORM_SUBMITTED] |
createdAt | Datetime | The time of the webhook |
type | String | The event type slug |
title | String | The event type name |
startTime | Datetime | The event’s start time |
endTime | Datetime | The event’s end time |
description | String | The event’s description as described in the event type settings |
location | String | Location of the event |
organizer | Person | The organizer of the event |
attendees | Person[] | The event booker & any guests |
uid | String | The UID of the booking |
rescheduleUid | String | The UID for rescheduling |
cancellationReason | String | Reason for cancellation |
rejectionReason | String | Reason for rejection |
team.name | String | Name of the team booked |
team.members | String[] | Members of the team booked |
metadata | JSON | Contains metadata of the booking, including the meeting URL (videoCallUrl) in case of Google Meet and Cal Video |
Variable | Type | Description |
---|---|---|
name | String | Name of the individual |
Email of the individual | ||
timezone | String | Timezone of the individual (e.g., “America/New_York”, “Asia/Kolkata”) |
language?.locale | String | Locale of the individual (e.g., “en”, “fr”) |