Workspace Webhook Endpoints

Subscribe a server to bot events for the whole workspace, from the dashboard
View as Markdown

Besides the per-bot callback_url you can pass on create_bot, the dashboard’s Webhooks page lets you register workspace-level endpoints: MeetStream delivers the events you subscribe to for your bots, no per-request wiring needed.

The Webhooks page in the MeetStream dashboard, with Endpoints and Logs tabs

Creating an endpoint

Click Add Webhook, name the endpoint, and point it at an HTTPS URL you host. Then pick exactly which events it should receive:

Creating a webhook endpoint: name, URL, and per-event subscription

The subscription list covers the full event catalog, grouped:

GroupEvents
Schedulingbot.scheduled, bot.joining
Bot lifecyclebot.in_waiting_room, bot.inmeeting, bot.recording, bot.leaving, bot.stopped, bot.kicked, bot.denied, bot.notallowed, bot.failed
Zoom recording permissionbot.recording_permission_allowed, bot.recording_permission_denied (Zoom only)
Post-call processingaudio.processed, transcription.processed, video.processed, bot.done, data_deletion

The Zoom recording permission and post-call processing event groups

Subscribing narrowly is good practice: a notetaker product usually needs just bot.inmeeting, bot.stopped, bot.failed, and the post-call *.processed events.

Inspecting deliveries

The Logs tab on the same page shows recent deliveries per endpoint, which is the fastest way to confirm your server is receiving and returning 2xx. Remember delivery is best-effort — non-2xx responses are not retried — so during development pair this with a local receiver:

$meetstream listen --port 3333 # pretty-prints every event; pair with: ngrok http 3333

Which should I use — workspace endpoints or per-bot callback_url?

  • Workspace endpoint: one place to receive events for everything; ideal for ops dashboards, billing reconciliation, and monitoring.
  • Per-bot callback_url: routes a specific bot’s events to a specific handler; ideal when each bot belongs to a different customer or job. custom_attributes set at create time are echoed in every event either way, so you can route in your own code too.

Payload shapes and event semantics are the same as documented in Webhooks and Events; event-by-event debugging tips live in Debugging Bots.