Meetings
Meeting updated
Sent when anything in the meeting changes: its schedule, people, settings, a recording's status, its phase, or the status of a part of its results. A meeting that becomes past only because its end time went by, with nothing recorded, sends nothing.
Delivered to every workspace webhook endpoint subscribed to this event, signed with the endpoint's whsec_ secret. See Webhooks for signature verification, retries, and ordering.
postWebhookmeeting.updated
Payload
Example payload
{
"data": {
"object": {
"id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
"object": "meeting",
"workspace_id": "wks_01k6a2r9s8x7c2dvq3m5n6p4ab",
"source": "calendar_connection",
"phase": "past",
"title": "Weekly sync with Acme",
"starts_at": "2026-09-29T09:00:00Z",
"ends_at": "2026-09-29T09:30:00Z",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"platform": "meet",
"organizer": {
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
"participants": [
{
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
{
"name": "Ana Ruiz",
"email": "ana@acme.com",
"member_id": null
}
],
"calendar_event": {
"id": "cev_01k6a2r9s8x7c2dvq3m5n6p4ab",
"object": "calendar_event",
"meeting_id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
"ical_uid": "7kq2b@google.com",
"recurring": true,
"title": "Weekly sync with Acme",
"starts_at": "2026-09-29T09:00:00Z",
"ends_at": "2026-09-29T09:30:00Z",
"meeting_url": "https://meet.google.com/abc-defg-hij",
"organizer": {
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
},
"attendees": [
{
"name": "Marc",
"email": "marc@gurusup.com",
"member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab",
"response": "accepted"
},
{
"name": "Ana Ruiz",
"email": "ana@acme.com",
"member_id": null,
"response": "needs_action"
}
],
"source": "calendar_connection",
"metadata": {},
"cancelled_at": null,
"created_at": "2026-09-22T08:00:00Z",
"updated_at": "2026-09-29T09:31:10Z"
},
"policy": {},
"effective_policy": {
"recording": {
"enabled": true,
"enabled_because": "in_scope",
"methods": {
"bot": {
"start": "on_join",
"mode": "audio_and_video",
"silence_detection": {
"alert": true
}
}
}
},
"transcription": {
"language": "auto"
},
"summary": {
"template": null,
"language": "en"
},
"branding": {
"brand_kit_id": null
}
},
"recordings": [
{
"id": "bot_01k6b0r9s8x7c2dvq3m5n6p4ab",
"type": "bot",
"status": "completed",
"started_at": "2026-09-29T09:00:00Z",
"ended_at": "2026-09-29T09:31:10Z"
}
],
"results": {
"status": "ready",
"transcript": {
"status": "ready",
"language": "en"
},
"summary": {
"status": "ready"
},
"media": {
"status": "ready",
"duration_seconds": 1834
}
},
"metadata": {},
"created_at": "2026-09-22T10:14:03Z",
"updated_at": "2026-09-29T09:41:10Z"
}
}
}Response
Return any 2xx status to acknowledge receipt. Any other status, or a timeout, triggers a retry — up to 21 attempts with backoff.
Changes
Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.