docs: add automatic no show updated docs (#25507)

This commit is contained in:
Udit Takkar
2025-12-03 06:35:54 +00:00
committed by GitHub
parent a2185d9ee0
commit cbcd769f88
+153 -1
View File
@@ -34,6 +34,9 @@ To create a new webhook subscription, visit `/settings/developer/webhooks` and p
- `Form Submitted`
- `Meeting Ended`
- `Instant Meeting Created`
- `Booking No-show Updated`
- `After Hosts Didn't Join Cal Video`
- `After Guests Didn't Join Cal Video`
</Step>
<Step title="Secret">
You can provide a secret key with this webhook to [verify it](/docs/core-features/webhooks#verifying-the-authenticity-of-the-received-payload) on the subscriber URL when receiving a payload. This helps confirm whether the payload is authentic or has been tampered with. You can leave it blank if you don't wish to secure the webhook with a secret key.
@@ -144,6 +147,155 @@ To create a new webhook subscription, visit `/settings/developer/webhooks` and p
```
### Booking No-show Updated webhook payload
This webhook is triggered when an attendee is manually marked or unmarked as no-show on the `/bookings/past` page.
**Example payload when marking an attendee as no-show:**
```json
{
"triggerEvent": "BOOKING_NO_SHOW_UPDATED",
"createdAt": "2025-12-01T12:34:34.774Z",
"payload": {
"message": "test@example.com marked as no-show",
"attendees": [
{
"email": "test@example.com",
"noShow": true
}
],
"bookingUid": "5vQFqxDFMjdgKGMijqtqRw",
"bookingId": 31
}
}
```
**Example payload when unmarking an attendee as no-show:**
```json
{
"triggerEvent": "BOOKING_NO_SHOW_UPDATED",
"createdAt": "2025-12-01T12:38:31.663Z",
"payload": {
"message": "test@example.com unmarked as no-show",
"attendees": [
{
"email": "test@example.com",
"noShow": false
}
],
"bookingUid": "5vQFqxDFMjdgKGMijqtqRw",
"bookingId": 31
}
}
```
### Cal Video No-Show Detection webhooks
These webhooks are triggered **automatically** when hosts or guests don't join a Cal Video meeting within the configured time after the booking starts. Unlike `BOOKING_NO_SHOW_UPDATED` which requires manual action, these are detected automatically by checking Cal Video participant data.
<Note>
These webhooks only work for bookings that use Cal Video as the meeting location.
</Note>
**Example payload when host didn't join (`AFTER_HOSTS_CAL_VIDEO_NO_SHOW`):**
```json
{
"triggerEvent": "AFTER_HOSTS_CAL_VIDEO_NO_SHOW",
"createdAt": "2025-12-01T15:23:30.320Z",
"payload": {
"title": "30min between Owner 1 and test",
"bookingId": 32,
"bookingUid": "qVyXscm1ryg2QoQ4K8uHLW",
"startTime": "2025-12-02T04:00:00.000Z",
"attendees": [
{
"id": 32,
"email": "test@example.com",
"name": "test",
"timeZone": "Asia/Kolkata",
"phoneNumber": null,
"locale": "en",
"bookingId": 32,
"noShow": false
}
],
"endTime": "2025-12-02T04:30:00.000Z",
"participants": [],
"hostEmail": "owner1-dunder@example.com",
"eventType": {
"id": 50,
"teamId": null,
"parentId": null,
"calVideoSettings": null
},
"webhook": {
"id": "2bdfc20b-aa4a-4863-a499-932cb1d4e69a",
"subscriberUrl": "https://webhook.site/example",
"appId": null,
"time": 5,
"timeUnit": "MINUTE",
"eventTriggers": [
"AFTER_HOSTS_CAL_VIDEO_NO_SHOW",
"AFTER_GUESTS_CAL_VIDEO_NO_SHOW"
],
"payloadTemplate": null
},
"message": "Host with email owner1-dunder@example.com didn't join the call or didn't join before 2025-12-02 04:05:00 +00:00"
}
}
```
**Example payload when guest didn't join (`AFTER_GUESTS_CAL_VIDEO_NO_SHOW`):**
```json
{
"triggerEvent": "AFTER_GUESTS_CAL_VIDEO_NO_SHOW",
"createdAt": "2025-12-01T15:23:30.323Z",
"payload": {
"title": "30min between Owner 1 and test",
"bookingId": 32,
"bookingUid": "qVyXscm1ryg2QoQ4K8uHLW",
"startTime": "2025-12-02T04:00:00.000Z",
"attendees": [
{
"id": 32,
"email": "test@example.com",
"name": "test",
"timeZone": "Asia/Kolkata",
"phoneNumber": null,
"locale": "en",
"bookingId": 32,
"noShow": false
}
],
"endTime": "2025-12-02T04:30:00.000Z",
"participants": [],
"eventType": {
"id": 50,
"teamId": null,
"parentId": null,
"calVideoSettings": null
},
"webhook": {
"id": "2bdfc20b-aa4a-4863-a499-932cb1d4e69a",
"subscriberUrl": "https://webhook.site/example",
"appId": null,
"time": 5,
"timeUnit": "MINUTE",
"eventTriggers": [
"AFTER_HOSTS_CAL_VIDEO_NO_SHOW",
"AFTER_GUESTS_CAL_VIDEO_NO_SHOW"
],
"payloadTemplate": null
},
"message": "Guest didn't join the call or didn't join before 2025-12-02 04:05:00 +00:00"
}
}
```
### Verifying the authenticity of the received payload
<Steps>
<Step title="Add a new secret key to your webhook">
@@ -182,7 +334,7 @@ where `{{type}}` represents the event type slug and `{{title}}` represents the t
| 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] |
| 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, BOOKING_NO_SHOW_UPDATED, AFTER_HOSTS_CAL_VIDEO_NO_SHOW, AFTER_GUESTS_CAL_VIDEO_NO_SHOW] |
| createdAt | Datetime | The time of the webhook |
| type | String | The event type slug |
| title | String | The event type name |