Webhook events
How to receive and verify them: Webhooks and Verifying signatures. Every delivery is a JSON POST with this envelope; data is per event and always starts with the org.
{ "id": "msg_2f1c0e9d8b7a4c6e9a3b5d7f1e2c4a6b", "type": "booking.created", "version": "2026-10-20", "timestamp": "2026-11-03T14:59:58.120Z", "data": { }}id is also the webhook-id header and is the same on every retry and redelivery, so a receiver can de-duplicate on it. The payload is rendered as the API version pinned on the endpoint when it was created (version; also sent as Quorum-Version).
Retries. A delivery that does not get a 2xx within 10 seconds is retried after 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, 10 hours, 10 hours: 8 tries over about 27 hours. Redirects are not followed. An endpoint that has accepted nothing for 5 days (or answers 410 Gone) is switched off and the org’s admins are emailed.
booking.created
Section titled “booking.created”Someone booked a team’s link. Sent when the time is reserved; a booking whose calendar event can’t be made follows with booking.cancelled (reason calendar_error).
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "booking": { "id": "8d9e0f1a-2b3c-4d5e-8f6a-7b8c9d0e1f2a", "linkId": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f", "start": "2026-11-03T15:00:00.000Z", "end": "2026-11-03T15:30:00.000Z", "timezone": "America/New_York", "status": "confirmed", "booker": { "name": "Alex Rivera", "email": "alex@example.com" }, "people": [ { "userId": "11111111-2222-4333-8444-555555555555", "role": "host" }, { "userId": "66666666-7777-4888-8999-aaaaaaaaaaaa", "role": "member" } ], "meetUrl": "https://meet.google.com/abc-defg-hij" } }}booking.rescheduled
Section titled “booking.rescheduled”A booking moved to a new time, by the booker or the team. A move the calendar refused is reverted and sent again with the original time.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "booking": { "id": "8d9e0f1a-2b3c-4d5e-8f6a-7b8c9d0e1f2a", "linkId": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f", "start": "2026-11-04T16:00:00.000Z", "end": "2026-11-04T16:30:00.000Z", "timezone": "America/New_York", "status": "confirmed", "booker": { "name": "Alex Rivera", "email": "alex@example.com" }, "people": [ { "userId": "11111111-2222-4333-8444-555555555555", "role": "host" }, { "userId": "66666666-7777-4888-8999-aaaaaaaaaaaa", "role": "member" } ], "meetUrl": "https://meet.google.com/abc-defg-hij" }, "previous": { "start": "2026-11-03T15:00:00.000Z", "end": "2026-11-03T15:30:00.000Z" } }}booking.cancelled
Section titled “booking.cancelled”A booking was cancelled. reason is booker_or_host (cancelled through Quorum), calendar_deleted (the event was deleted in the calendar) or calendar_error (the booking could not be put on the calendar).
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "booking": { "id": "8d9e0f1a-2b3c-4d5e-8f6a-7b8c9d0e1f2a", "linkId": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f", "start": "2026-11-03T15:00:00.000Z", "end": "2026-11-03T15:30:00.000Z", "timezone": "America/New_York", "status": "cancelled", "booker": { "name": "Alex Rivera", "email": "alex@example.com" }, "people": [ { "userId": "11111111-2222-4333-8444-555555555555", "role": "host" }, { "userId": "66666666-7777-4888-8999-aaaaaaaaaaaa", "role": "member" } ], "meetUrl": "https://meet.google.com/abc-defg-hij" }, "reason": "booker_or_host" }}booking.reassigned
Section titled “booking.reassigned”A pool member on a booking was replaced by someone else from the same pool.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "booking": { "id": "8d9e0f1a-2b3c-4d5e-8f6a-7b8c9d0e1f2a", "linkId": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f", "start": "2026-11-03T15:00:00.000Z", "end": "2026-11-03T15:30:00.000Z", "timezone": "America/New_York", "status": "confirmed", "booker": { "name": "Alex Rivera", "email": "alex@example.com" }, "people": [ { "userId": "11111111-2222-4333-8444-555555555555", "role": "host" }, { "userId": "66666666-7777-4888-8999-aaaaaaaaaaaa", "role": "member" } ], "meetUrl": "https://meet.google.com/abc-defg-hij" }, "from": "66666666-7777-4888-8999-aaaaaaaaaaaa", "to": "99999999-8888-4777-8666-555555555555", "reason": "swapped" }}poll.created
Section titled “poll.created”A team poll was created.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "poll": { "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d", "title": "Fall planning", "publicId": "k3j9x2m1", "creatorId": "11111111-2222-4333-8444-555555555555", "deadline": "2026-10-30T22:00:00.000Z" } }}poll.responded
Section titled “poll.responded”Someone answered a team’s poll (or changed their answers). Respondent emails are included, as they are for the team’s members.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "poll": { "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d", "title": "Fall planning" }, "response": { "id": "0f1e2d3c-4b5a-4968-8776-655443322110", "name": "Alex Rivera", "email": "alex@example.com", "isMember": false } }}poll.finalized
Section titled “poll.finalized”A team poll was finalized at one of its times.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "poll": { "id": "9a8b7c6d-5e4f-4a3b-8c2d-1e0f9a8b7c6d", "title": "Fall planning", "publicId": "k3j9x2m1", "creatorId": "11111111-2222-4333-8444-555555555555", "deadline": "2026-10-30T22:00:00.000Z" }, "option": { "id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d", "start": "2026-11-05T19:00:00.000Z" } }}series.week_scheduled
Section titled “series.week_scheduled”A week of a recurring poll series was scheduled: its meeting was booked, or kept or moved by the owner.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "series": { "id": "5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e", "title": "Weekly sync" }, "week": { "startDate": "2026-11-02", "start": "2026-11-03T15:00:00.000Z", "end": "2026-11-03T16:00:00.000Z" } }}series.paused
Section titled “series.paused”A series was paused. reason is owner, required_left, host_left or event_deleted.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "series": { "id": "5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e", "title": "Weekly sync" }, "reason": "owner", "note": null }}link.created
Section titled “link.created”A booking link was created for a team.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "link": { "id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f", "slug": "intro-call", "title": "Intro call", "durationMinutes": 30 } }}link.updated
Section titled “link.updated”A team’s booking link was changed.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "link": { "id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f", "slug": "intro-call", "title": "Intro call (30 min)", "durationMinutes": 30 } }}link.deleted
Section titled “link.deleted”A team’s booking link was deleted. Its past and upcoming bookings stay.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "team": { "id": "c2d4e6f8-1a3b-4c5d-8e7f-9a0b1c2d3e4f", "slug": "advising" }, "link": { "id": "3c4d5e6f-7a8b-4c9d-8e0f-1a2b3c4d5e6f", "slug": "intro-call", "title": "Intro call", "durationMinutes": 30 } }}member.joined
Section titled “member.joined”Someone joined the org.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "member": { "userId": "11111111-2222-4333-8444-555555555555", "name": "Sam Chen", "email": "sam@example.com", "role": "member" } }}member.left
Section titled “member.left”Someone left the org, or was removed from it.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "member": { "userId": "11111111-2222-4333-8444-555555555555", "name": "Sam Chen", "email": "sam@example.com", "role": "member" } }}webhook.test
Section titled “webhook.test”Sent by the Send test event button and quorum orgs webhooks test.
{ "data": { "org": { "id": "6f0b2c1e-7a54-4d0e-9a3a-0c1f6d2b8e11", "handle": "devdogs" }, "message": "This is a test event from Quorum." }}