Automate Voicemail Transcription and CRM Logging with n8n
Automate voicemail transcription with n8n, AI-powered urgency tags, and HubSpot CRM logging. Stop manually replaying calls — set this up in 15 minutes.
Every sales team has the same voicemail problem: listen, scribble, forget. The playback is slow, the notes are worse, and by the time anything reaches the CRM it's missing half the context. n8n voicemail automation breaks this loop by treating each incoming voicemail as a webhook event — transcribed by OpenAI Whisper, triaged by GPT-4o-mini, and filed in HubSpot before the rep's finished their next task.
The pipeline isn't complicated. Twilio fires a webhook the moment a recording is ready. n8n picks it up, downloads the audio, transcribes it with Whisper, extracts urgency and intent with a second AI call, then fans out to HubSpot, Google Sheets, and Telegram in parallel. The whole chain runs in under 30 seconds.
The biggest win isn't the transcript itself. It's knowing a voicemail is "high urgency, callback request" before anyone hits play — that's what actually changes how fast a rep responds.
What n8n voicemail automation handles
A complete voicemail workflow does more than capture text:
- Calls that go unanswered during off-hours or peak coverage gaps
- High-volume support lines where listening to every recording isn't practical
- Field teams who take calls but can't stop to type notes into a CRM
- Compliance use cases that need every phone interaction logged with a timestamp
- Triage workflows where urgency determines which queue a lead enters next
Twilio receives voicemail → webhook fires → n8n downloads audio → Whisper transcribes → GPT-4o-mini triages → HubSpot note created → Sheets row appended → Telegram alert for high-priority calls. No manual steps.
The VoiceNote Pipeline
Twilio Webhook → Download Audio → Whisper → GPT-4o-mini → [HubSpot Note | Sheets Log | Telegram Alert]
Five nodes handle the core chain. The fan-out at the end runs in parallel — the Sheets log doesn't hold up the Telegram alert. Twilio fires the webhook automatically on recording completion, so you're not polling.
Step-by-step: building the workflow
1. Receive the Twilio webhook
Twilio posts to your n8n Webhook node when a voicemail recording finishes. The payload includes RecordingUrl, RecordingDuration, From, and To. Set the webhook path to something like /twilio-voicemail and paste the full URL into Twilio under Phone Numbers → Active Numbers → Voice Configuration.
One thing that trips up early setups: Twilio appends .json to RecordingUrl by default. The actual audio file lives at the same URL without that extension. A Code node (v2, jsCode) stripping .json before the download step saves a lot of debugging.
2. Transcribe with OpenAI Whisper
The HTTP Request node (v4.2) handles the Whisper API call. Download the voicemail audio as binary using the cleaned recording URL, then POST it to https://api.openai.com/v1/audio/transcriptions with model: whisper-1 and response_format: json. The transcript arrives at $json.text.
Whisper handles phone-quality audio better than most expect. Accuracy on voicemails in the 30-to-90-second range runs above 95% for clear recordings. Longer voicemails can still clip if call quality is poor, but that's a Twilio encoding issue, not a Whisper limitation.
3. AI triage with GPT-4o-mini
A second HTTP Request node calls the Chat Completions API with a structured prompt requesting urgency level (low, medium, high), intent label (callback_request, complaint, inquiry, order, other), a 2-to-3 sentence summary, and a recommended next action. Ask for JSON output.
If you're using the @n8n/n8n-nodes-langchain.openAi v2.1 node, output arrives at $json.output[0].content[0].text — a string, not an object. Add a Code node after with JSON.parse($input.first().json.output[0].content[0].text). Don't skip this parse step. The HubSpot node downstream expects structured key-value pairs; without it, the note gets created with an empty body and you won't know until you're looking at a blank CRM record.
4. Create the HubSpot note
The HubSpot node's "Create Note" action accepts a contact phone number as a lookup value. Pass $json.From from the Twilio payload as the association key. The note body should combine the transcript and triage output so any rep can read the situation cold:
VOICEMAIL — {{urgency}} urgency
From: {{From}} | Duration: {{RecordingDuration}}s
Intent: {{intent}}
Summary: {{summary}}
Recommended next action: {{recommended_action}}
Full transcript:
{{transcript}}
If no contact matches on phone number, add a HubSpot Search node first. When the search returns empty, create the contact record, then attach the note. Orphaned notes floating without a contact record are hard to find later.
5. Fan out to Sheets and Telegram
Two branches run in parallel after the HubSpot step. Google Sheets appends one row per call: timestamp, caller number, duration, urgency, intent, summary, transcript. The Telegram branch fires only when urgency is high — an If node filters before the message goes out.
That filter isn't optional. Without it, every "just checking in" voicemail pings the team at 11pm.
Implementation patterns
Pattern 1: Urgency routing via Switch
GPT-4o-mini Triage → Switch(urgency)
high → Telegram alert + HubSpot task (4-hour due)
medium → HubSpot note + Sheets row
low → Sheets row only
A Switch node after triage creates three execution paths. High urgency triggers a Telegram alert and a HubSpot follow-up task with a deadline 4 hours out. Medium goes to note plus Sheets. Low goes to Sheets only. Teams that've tried the "alert on everything" approach switch to this pattern within a week — quieter, and the signal is cleaner.
Pattern 2: Daily digest instead of real-time pings
Schedule (8am) → Read Sheets (yesterday) → Code (group by urgency) → Slack digest
A separate workflow runs each morning and reads yesterday's voicemail rows from Google Sheets, groups them by urgency and intent, and sends one digest message. Much quieter than 12 individual Telegram pings overnight. Real-time alerts stay for high-urgency only; the digest handles everything else. Teams that field calls across multiple time zones find this pattern easier to action than real-time noise.
Pattern 3: Contact enrichment before logging
Twilio Webhook → Whisper → GPT-4o-mini → HubSpot Search → [Enrich via Apollo] → HubSpot Note → Sheets
Before creating the note, use an HTTP Request to Apollo or Clearbit to look up the caller's phone number and return company name and job title. Add those fields to the note body and the Sheets row. The note that lands in HubSpot then reads "VP of Operations at Acme Corp, high urgency, callback request" rather than just a raw phone number — which is actually useful context.
n8n nodes you'll use most
| Node | Purpose |
|---|---|
| Webhook (v1) | Receives Twilio POST with RecordingUrl, From, To, RecordingDuration |
| HTTP Request (v4.2) | Downloads audio binary; calls Whisper; calls GPT-4o-mini |
| Code (v2) | Strips .json from recording URL; parses AI JSON response string |
| HubSpot | Searches contacts by phone; creates notes; creates follow-up tasks |
| Google Sheets | Appends one row per voicemail for team visibility and audit trail |
| Telegram | Sends high-urgency alerts to team channel |
| If | Filters for urgency === "high" before Telegram fires |
| Switch | Routes by urgency level into parallel downstream branches |
Getting started
- Set up a Twilio number with voicemail enabled. Under Voice Configuration, point the voicemail fallback webhook at your n8n Webhook URL.
- Create an OpenAI API key with Whisper and Chat Completions scopes enabled.
- Connect HubSpot via OAuth2 in n8n's credential manager — API key works for free-tier contact + note operations.
- Create a Google Sheet with columns: Timestamp, From, Duration, Urgency, Intent, Summary, Transcript.
- Add a Telegram bot token and configure your target chat ID.
- Build the workflow chain: Webhook → HTTP download → HTTP Whisper → Code parse → HTTP GPT-4o-mini → Code parse → HubSpot → If → Sheets and Telegram in parallel.
- Test with a real voicemail: call your Twilio number, leave a short message, then watch the n8n execution log. The transcript and HubSpot note should appear within 30 seconds of the recording completing.
The VoiceNote: AI Voicemail Summary to CRM template ships this end-to-end — Twilio webhook, Whisper transcription, GPT-4o-mini triage with urgency and intent tags, HubSpot note creation, Google Sheets logging, and Telegram alerting for high-priority calls. It's part of The Complete n8n Templates Bundle, a one-time lifetime license to the full catalog if you're running more than one of these automations.
For teams applying the same AI triage approach to email inboxes, the patterns in n8n AI email auto-reply map directly — same urgency classification logic, different trigger node. The n8n HubSpot automation post covers the contact-matching and note-creation config in more depth if the CRM side is the trickier part of the build. Start with the VoiceNote template for a pre-wired version, or browse the full n8n template catalog to see what else maps to your current stack.
Browse all n8n templates →Common questions
How do I transcribe voicemails automatically with n8n?
Can n8n log voicemails to HubSpot automatically?
What do I need to build n8n voicemail automation?
Get the workflow templates this guide is built on
Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.
Get 3 tested n8n templates, free
The full customer package for three real catalog templates — workflow JSON, step-by-step setup guide, credential checklist. Built through the same live-instance release process as everything we sell. Plus new templates and automation guides in your inbox. No spam, unsubscribe anytime.
- 01Smart To-Do List ManagerPre-built n8n workflow template that automates productivity with OpenAI. Live in about 10 minutes.$14
- 02Email Follow-Up AutomatorPre-built n8n workflow template that automates crm with OpenAI. Live in about 15 minutes.$12
- 03Market Trend AnalyzerPre-built n8n workflow template that automates data processing with OpenAI. Live in about 10 minutes.$14
More automation guides

Build an n8n Market Research Pipeline That Finds Trends Early
By the time a trend appears in a newsletter, two or three funded teams have been building for 90 days. n8n market research automation closes that gap by running the same research loop on a schedule —…

How to Automate Meta Ads Campaigns with n8n
The Manual Campaign Launch Problem Writing three Facebook ad variations from scratch is creative work, but barely. It's mostly rewriting the same benefit statement with slightly different hooks. Then…

How to Automate Appointment Reminders with n8n
A hair salon with 20 appointments on a Tuesday loses $240 in revenue from a single no-show if the average ticket is $80. That's one client, one empty hour, and no way to fill the slot on short notice.…