Vexavexa
Book a demo
Webhooks · HubSpot · Salesforce · Zapier

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.

2.9k stars on GitHub
vexa · api
Zoom · Teams · MeetVexa botTranscriptsYour endpointSigned webhooks
  • Zoom · Teams · Meet
  • Vexa bot
  • Transcripts
  • Your endpoint
  • Signed webhooks
Teams
Meet
Vexa
🦀
Meeting data for your agents

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
Set a webhook, then fetch the transcript in your handler
# 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)
Set $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.

What you get
  • 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.

What you get
  • 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.

What you get
  • 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

  1. Get an API keySign in at vexa.ai. Self-hosted: make all prints a key.
  2. Set your webhookPUT /user/webhook with your URL, a secret and the events.
  3. Send botsPOST /bots, and map each meeting to its CRM record.
  4. Handle meeting.completedVerify the signature, then GET /transcripts/{platform}/{native_meeting_id}.
  5. Write it to the recordUse the CRM's own API, or a Zapier action.

Webhooks architecture

Vexa posts a signed envelope to your URL:

Pipeline
bot → audio capture → speech-to-text → transcript segments → REST / WebSocket
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.

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