Skip to main content
If you already run n8n, you can have meeting notes land in Slack without writing or hosting any code. Vexa supplies two plain HTTP calls — send a bot, fetch the transcript — and n8n does the rest. A community template already wires the whole path: Automated meeting summaries: Google Meet to Slack with Vexa.ai and GPT-4o (workflow 7072). Import it, then read the warning below before your first run.
The published template points at a base URL that no longer exists. Its HTTP nodes are built against gateway.dev.vexa.ai. The hosted API is https://api.cloud.vexa.ai. Until the template is updated, swap the base URL in every Vexa HTTP node after importing — otherwise the first node fails and the run stops there. This is the single most common reason this workflow doesn’t start.The template is published on the n8n.io gallery by a community author, so we can’t edit it directly.

What you need

  • A running n8n (cloud or self-hosted).
  • A Vexa API key and a base URL (Authentication): Self-hosting? n8n must be able to reach that host — see the self-host note.
  • A model credential for the summarization step (the template uses GPT-4o) and a Slack credential.
Every Vexa call authenticates with the X-API-Key header. Store the key as an n8n credential, not inline in a node. Don’t have a key yet? Hosted: sign in at vexa.ai/signin with a Google account and copy your key from your account page — free credit, no card required. Self-hosted: make all prints a key when the stack comes up.

The five steps

1

Trigger on the calendar event

The template starts from a Google Calendar trigger and pulls the Meet link off the event.
Users have reported the Google Calendar trigger firing only on the oldest matching event, which stalls the workflow when several meetings queue up. If you hit that, filter the trigger more narrowly (single calendar, near-term window) or drive the workflow from a Schedule trigger that queries the calendar itself.You can also skip this step entirely — see Let Vexa do the calendar part.
2

Send the bot

One POST. If you have the join URL, send it directly and let the API parse out the platform and meeting id:
Or name the parts explicitly:
native_meeting_id is the id inside the join URL (abc-defg-hij), not the whole URL. A URL that isn’t a recognizable meeting link is refused with a 422. Zoom, Teams, and Jitsi work the same way with a different platform — see Send a bot.On Meet and Teams the bot may sit in the lobby until a host admits it.
3

Wait for the meeting to finish

Give the call time to happen. A Wait node set to the meeting’s scheduled duration is the simplest approach; polling the transcript on an interval and continuing once segments stop arriving is the more responsive one.
4

Fetch the transcript

Segments are speaker-attributed, so your summary can name who committed to what. Segments are also readable while the meeting runs if you’d rather stream than wait — see Stream a transcript.
5

Summarize and post

Flatten segments[] into speaker: text lines, hand them to your model node, and post the result with the Slack node. Nothing here is Vexa-specific — the transcript is ordinary JSON.

Let Vexa do the calendar part

The calendar trigger is the most fragile node in the workflow, and you may not need it. Vexa can import your calendar itself and auto-join meetings at their start time — no trigger, no POST /bots on your side. The workflow then reduces to wait → fetch transcript → summarize → post. See Sync your calendar and Plan a meeting. Sending a bot to a link you already planned upgrades the same meeting record — it never creates a duplicate.

Self-hosted variant

Everything above works unchanged against a self-hosted deployment; only API_BASE differs. The constraint is reachability:
  • n8n and Vexa on the same host — point n8n at http://localhost:18056.
  • n8n in Docker, Vexa on the hosthttp://host.docker.internal:18056, or put both on one Docker network and use the gateway’s service name.
  • n8n cloud, Vexa self-hosted — the gateway must be reachable from the internet over HTTPS. Terminate TLS at a reverse proxy in front of it; don’t expose the gateway port directly.
See Deployment and Configuration.

Troubleshooting

More at Troubleshooting.