Meeting
Transcripts by
Webhook
Vexa does not connect to any CRM. When a meeting ends, it sends a signed webhook, and your code writes the transcript.
- Zoom · Teams · Meet
- Vexa bot
- Transcripts
- Your endpoint
- Signed webhooks
Your agents read the meeting while it runs.
The transcript streams to your agents as people speak, over WebSocket or MCP.
Built on webhooks
Vexa posts signed JSON to a URL you own when a meeting starts, ends or fails.
- Set a URL and a secret with PUT /user/webhook
- Events: meeting.started, meeting.completed, bot.failed, and meeting.status_change for every step
- Your handler, Zapier or n8n writes to HubSpot or Salesforce
# 1. Tell Vexa where to post
curl -X PUT "$API_BASE/user/webhook" \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"webhook_url": "https://example.com/hooks/vexa",
"webhook_secret": "<shared secret>",
"webhook_events": {"meeting.completed": true}
}'
# 2. In your handler: verify X-Webhook-Signature, then read the transcript
curl "$API_BASE/transcripts/{platform}/{native_meeting_id}" \
-H "X-API-Key: $API_KEY"
# 3. Write it to the CRM record with the CRM's own API
# (HubSpot CRM API, Salesforce REST or Apex, a Zapier action)$API_BASE to https://api.cloud.vexa.ai (hosted) or http://localhost:18056 (self-host). Get $API_KEY from /start.Common patterns
Getting transcripts into your CRM
Three ways, each with your code or a workflow tool doing the writing.
HubSpot deal notes
Your reps book calls through HubSpot, and the deal should show what was said.
- Send the bot from a HubSpot workflow webhook.
- On meeting.completed, your handler fetches the transcript.
- It writes a deal note through the HubSpot CRM API.
A Salesforce opportunity record
Opportunity owners want the call transcript on the record.
- A Flow or an Apex callout sends the bot.
- The webhook posts to Apex REST or your middleware.
- It fetches the transcript and attaches it to the record.
Zapier, with no code
Your team works in Zapier and wants transcripts in Sheets, Slack or the CRM.
- Point Vexa's webhook at a Zapier Catch Hook.
- One Webhooks step fetches the transcript.
- The next steps send it where it goes.
Wire up a webhook
One PUT to set the URL, one GET in your handler for the transcript.
Quickstart
- Get an API keySign in at vexa.ai. Self-hosted:
make allprints a key. - Set your webhook
PUT /user/webhookwith your URL, a secret and the events. - Send bots
POST /bots, and map each meeting to its CRM record. - Handle meeting.completedVerify the signature, then
GET /transcripts/{platform}/{native_meeting_id}. - Write it to the recordUse the CRM's own API, or a Zapier action.
Webhooks architecture
Vexa posts a signed envelope to your URL:
- meeting.started
- when the bot is in
- meeting.completed
- when the meeting is over
- bot.failed
- if it can't continue
- meeting.status_change
- for every step
Before you start
- The webhook carries the meeting record, not the transcript.
- The delivery-history endpoint does not show real deliveries. #841
Documentation
Go deeper on webhooks
Events, signatures and reading transcripts.
- WebhooksEvents, signatures, and setting your URL.
- Meetings APIRead a transcript by platform and meeting ID.
- Send a botThe POST /bots call on every platform.
- n8n guideA workflow tool on the receiving end.
- MCP serverLet an agent read meetings instead of a webhook handler.
- AuthenticationAPI keys and scopes.
Full reference at docs.vexa.ai.
Related reading
Keep going on Webhooks
Related pages, guides and comparisons.
Webhooks and CRM FAQ
What teams ask before they send transcripts to HubSpot, Salesforce or Zapier.
Does Vexa integrate with HubSpot or Salesforce?
No. Vexa does not connect to HubSpot, Salesforce or any other CRM. It sends a signed webhook when a meeting ends, and your code, Zapier or n8n writes the transcript to the CRM record.
How do I get a webhook when a meeting transcript is ready?
Set a webhook with PUT /user/webhook; Vexa sends a signed meeting.completed event when the meeting ends, the default event for a subscriber with no filter.
Can Zapier receive it?
Yes. Point the webhook at a Zapier Catch Hook URL. A Webhooks by Zapier step fetches the transcript, and the next steps write it to HubSpot, Salesforce, Sheets or Slack. There is no Vexa app in the Zapier directory.
How do I check that a delivery came from Vexa?
Each delivery carries X-Webhook-Signature, an HMAC-SHA256 of the timestamp and the body under your secret, and X-Webhook-Timestamp. Recompute it and compare in constant time, and reject timestamps outside your replay window.
A seat, an hour, or free
A seat for your agent. An hour for what you build. No licence fee when you run it yourself.
Set a webhook. Write the transcript where your team works.
Sign in, copy an API key, set your URL with one call. Free credit, no card.
Apache 2.0 · Self-host or cloud · No credit card required