Skip to content
Automation Squad
ZAIHSMade to order

Scheduling & meetings

Zoom transcript → AI call summary on the HubSpot contact + Slack post

Zoom call summaries reach the HubSpot contact minutes after the transcript is ready.

Once Zoom finishes a transcript, the workflow summarises it into a fixed structure and writes a note on the matching HubSpot contact. Decisions, action items and the next step come out as headed sections. A Slack post carries the same summary with links to the note, the open deal and the recording. For sales teams who run calls on Zoom and log them in HubSpot by hand, or not at all.

How it works

  1. Z

    Trigger

    Recording transcript completed: Zoom's recording.transcript_completed webhook for a cloud recording

    Zoom

  2. if

    Step 1

    Validate the webhook

    Answers Zoom's one-time URL validation challenge, checks the signature header on every delivery, and drops meetings whose host is not on the watched list.

  3. Z

    Step 2

    Fetch the transcript

    Downloads the VTT transcript file from the recording's download URL using the app's access token, and strips timestamps so each line is a speaker and what they said.

  4. Z

    Step 3

    Pull the participant list

    Reads the past-meeting participants endpoint and stops if everyone on the call is on your own domain. Zoom returns emails for your users and for outside attendees who were on the calendar invite or registered; other guests come back blank.

  5. AI

    Step 4

    Summarise the call

    Passes the cleaned transcript to the model with a fixed prompt and returns JSON: summary, decisions, action items with owner and date, objections raised, and the agreed next step.

  6. H

    Step 5

    Match the contact and deal

    Searches HubSpot for each outside email Zoom returned and, on a match, reads the contact's open deals so the note can attach to both. A call with no usable email is routed to Slack as unmatched.

  7. H

    Step 6

    Write the note

    Creates a HubSpot note with the headed summary, the recording link and the attendee list, associated with the matched contact and the most recent open deal.

  8. S

    Step 7

    Post the summary

    Posts the summary to the host as a DM, or to a channel, with links to the HubSpot note, the deal and the Zoom recording. Unmatched calls carry a 'no contact matched' line instead of the CRM links.

What changes once it runs

  • A headed summary sits on the HubSpot contact within minutes of Zoom finishing the transcript.
  • Action items carry an owner and a date when the call stated one; the rest are marked open.
  • The Slack post links the note, the open deal and the recording, so checking the source is one click.
  • Calls with no matching HubSpot contact are flagged in Slack rather than dropped.
  • Internal-only meetings are skipped; only calls with at least one outside attendee are summarised.

What you get

  • n8n workflow export with Zoom's URL-validation handshake and signature check built in
  • The summary prompt and the JSON schema it returns, editable in one node
  • Setup guide for the Zoom Server-to-Server app, its scopes and event subscription, and the HubSpot private app
  • Two Slack message layouts: matched contact, and 'no contact matched'
  • Walkthrough video of one recorded call flowing through to HubSpot and Slack

Before you start

  • Zoom Pro or above with cloud recording on and the 'Audio transcript' recording setting turned on
  • A Zoom Server-to-Server OAuth app with recording and past-meeting read scopes, its event subscription, and the secret token
  • Outside attendees invited through Zoom's Google Calendar or Outlook add-in, or meeting registration on, so Zoom returns their email
  • An OpenAI API key with billing enabled; the model is one setting in the workflow
  • HubSpot with a private app token that can read and write contacts, notes and deals
  • n8n reachable on a public HTTPS URL for Zoom's webhook delivery, and a Slack workspace where you can install a bot user

Built for

Questions before you buy

Which HubSpot contact gets the note?
The one whose email matches an outside attendee in Zoom's participant list. Since March 2022 Zoom blanks the email of any guest who was not on the calendar invitation, did not register and was not authenticated by you. Book the call through Zoom's Google Calendar or Outlook add-in and the match holds. Calls with no usable email go to Slack with a 'no contact matched' line and the full summary, and someone attaches it by hand.
What if a meeting was recorded but has no transcript?
It never triggers. The workflow listens for Zoom's transcript-completed event, not the recording-completed one, so a meeting recorded with the audio transcript setting off is invisible to it. Turn the setting on at account level and every later cloud recording qualifies.
How reliable is the summary?
A model is reading a transcript, and Zoom transcripts mishear names and figures. The prompt is told to quote numbers as heard and to mark anything unclear. Treat the note as a draft: read it, correct it, keep it. The recording link is on every post for that reason.
Can I use Claude instead of OpenAI?
Yes. Swap the OpenAI node for the Anthropic node in n8n, paste the same prompt, keep the same JSON schema. The guide has a page on the swap and on what to change if you point it at a self-hosted model.
Do I need a paid n8n plan?
No. The free self-hosted Community edition runs it, and so does the cheapest n8n Cloud plan. Zoom will only deliver to a public HTTPS URL, so a self-hosted instance on a private network needs a tunnel or a reverse proxy in front of it.

Nearby on the shelf

Whole catalog