🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Airtable + Vapi: outbound calls with notes logged

Lisa Granqvist Partner Workflow Automation Expert

Manual outbound follow-up falls apart fast. One lead gets called, the next gets skipped, and the notes end up in five different places (or nowhere at all).

This is the kind of mess that hits sales ops first, but founders and agency owners feel it too. With Airtable Vapi automation, your “to be called” list turns into real call attempts, and every transcript and summary lands back on the right lead record.

Below, you’ll see how the workflow runs, what results to expect, and what you need to get it live without turning your CRM into a junk drawer.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Airtable + Vapi: outbound calls with notes logged

The Problem: Outbound Follow-Ups Don’t Scale (And Notes Get Messy)

Outbound calling sounds simple until you try to do it consistently. Someone exports a list, someone else dials, and then the “notes” live in a call tool, a Slack message, a spreadsheet, and somebody’s memory. Meanwhile, leads marked “call later” sit for days because nobody owns the next attempt. Even when calls happen, you still have to listen back for key details, write a summary, and paste it into Airtable. That’s a lot of small steps, and they steal time from actual selling.

It adds up fast. Here’s where it breaks down in real teams.

  • You lose about 5–10 minutes per lead just switching between dialer, notes, and Airtable.
  • Voicemails don’t get retried consistently, so your best leads quietly expire.
  • Call notes are subjective and incomplete, which means follow-ups sound different depending on who called.
  • Without transcripts and recordings attached to the record, coaching and QA become guesswork.

The Solution: Airtable-Driven AI Calls With Automatic Call Logging

This workflow turns Airtable into a simple outbound engine. Every minute, n8n checks your Leads table for records marked “TBC” (to be called). When it finds one, it assembles the call details (name, phone number, context) and triggers a Vapi AI outbound call. After the call ends, Vapi posts back to a webhook in n8n with the full payload, including the recording, transcript, and an AI summary. n8n then updates the same Airtable record so your team can see what happened without hunting.

Calls that hit voicemail aren’t treated like failures. The workflow runs a built-in retry sequence: it re-dials after about a minute, then makes a final attempt the next day, and finally marks the lead unreachable if nobody ever answers.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you have 25 new leads to qualify in Airtable each day. Manually, a rep might spend about 3 minutes per lead just dialing, waiting, and logging notes, which is roughly 75 minutes before you count any actual conversation time. With this workflow, the “admin” part shrinks to almost nothing: mark leads as TBC, let Vapi call, and review the summary when it’s done. Even if you spend 30 seconds skimming each summary, that’s around 10–15 minutes of review instead of an hour-plus of busywork.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Airtable to store leads and call outcomes.
  • Vapi to place AI outbound calls.
  • Vapi API key (get it from your Vapi dashboard settings).

Skill level: Intermediate. You’ll connect accounts, map a few Airtable fields, and paste in a webhook URL.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

Airtable status triggers the work. Every minute, n8n scans your Leads table for records marked “TBC”, so your team has a single, obvious “call queue” field.

Lead context gets packaged for the call. n8n pulls the lead’s mobile number and any extra context you store (source, notes, segment), then passes it into the Vapi call request using an HTTP step.

Vapi calls, then reports back. After the call finishes, Vapi hits your n8n webhook with the transcript, recording link, and an AI-generated summary. The workflow verifies the report, then stores the payload on the correct Airtable record.

Retries happen automatically when it’s voicemail. If the workflow detects voicemail, it delays about a minute and re-dials, then schedules a final attempt the next day. After that, it updates the record so your team sees “unreachable” instead of endlessly retrying the same lead.

You can easily modify the Airtable status names and retry timing to match your process. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set the workflow to check for pending leads every minute.

  1. Add the Minute Interval Trigger node and set the interval rule to minutes with minutesInterval: 1.
  2. Confirm the connection flow goes from Minute Interval Trigger to Retrieve Pending Leads.

Step 2: Connect Airtable and Fetch Pending Leads

Pull leads marked as “TBC” from Airtable and prepare the base record data.

  1. Open Retrieve Pending Leads and set Operation to search.
  2. Set Filter By Formula to ({Status} ='TBC') and Limit to 10.
  3. Credential Required: Connect your Airtable credentials for Retrieve Pending Leads and all other Airtable nodes (12 total handling lead lookup and status updates).

Tip: Ensure your Airtable base and table IDs match the same lead table used by status updates to avoid mismatched records.

Step 3: Set Up Call Payload Assembly and Initial Call

Build the call payload and initiate the first Vapi call, then mark the lead as in progress.

  1. In Assemble Call Details, add assignments for ID = {{ $json.id }}, First Name = {{ $json["First Name"] }}, and Mobile = {{ $json.Mobile }}.
  2. Configure Initiate Vapi Call with URL https://api.vapi.ai/call, Method POST, and JSON Body set to { "assistantId": "[YOUR_ID]", "customer": { "name": "{{ $json['First Name'] }}", "number": "{{ $json.Mobile }}" }, "phoneNumberId": "[YOUR_ID]" }.
  3. In Initiate Vapi Call header parameters, set Authorization to Bearer [CONFIGURE_YOUR_TOKEN].
  4. In Mark Lead In Progress, set Operation to update and map id to {{ $('Assemble Call Details').item.json.ID }} with Status = In progress.

⚠️ Common Pitfall: The Vapi call will fail if the Authorization header token is missing or invalid—replace [CONFIGURE_YOUR_TOKEN] with your real API token.

Step 4: Configure the Vapi Callback and Store Results

Handle Vapi’s callback payload, verify the end-of-call report, and store call details in Airtable.

  1. Configure Vapi Callback Endpoint with HTTP Method POST and Path vapi-callback.
  2. In Verify End Report, set the condition to Left Value {{ $json.body.message.type }} equals Right Value end-of-call-report.
  3. In Store Call Payload, set Operation to create and map fields: id = {{ $json.body.message.call.id }}, recording = {{ $json.body.message.recordingUrl }}, transcript = {{ $json.body.message.transcript }}.
  4. Ensure the flow continues from Store Call Payload to Check Answer Status.

Tip: Add the webhook URL from Vapi Callback Endpoint into your Vapi assistant’s webhook settings so Vapi can deliver the end-of-call report.

Step 5: Configure Answer Logic, Voicemail Handling, and Retries

Route answered calls to success, and voicemail calls through retry logic with wait timers and attempt counters.

  1. In Check Answer Status, set the condition to Left Value {{ $json.fields['ended reason'] }} notEquals customer-did-not-answer.
  2. For answered calls, use Lookup Lead Record 1 with Filter By Formula =({Mobile} = '{{ $("Verify End Report").item.json.body.message.call.customer.number }}'), then update status in Update Connected Status with Status = Called, Attempt = #Success, and Summary = {{ $('Verify End Report').item.json.body.message.analysis.summary }}.
  3. For unanswered calls, set Detect Voicemail Result to check Left Value {{ $('Verify End Report').item.json.body.message.endedReason }} equals voicemail.
  4. Configure attempt routing: Lookup Lead Record 2Evaluate First Attempt (notExists) → Record Voicemail Attempt 1 (set Status Voicemail, Attempt #1) → Delay One Minute (Amount 1 minutes) → Retry Call Attempt 2 (send customer name/number from {{ $json.fields['First Name'] }} and {{ $json.fields.Mobile }}).
  5. Continue the retry chain: Retry Call Attempt 2Record Voicemail Attempt 2 (Attempt #2) → Evaluate Second AttemptEvaluate Third AttemptDelay Until Next Day with Date Time {{ $now.plus(1, "day").setZone("Australia/Sydney").set({ hour: 16, minute: 0 }).toISO() }}Retry Call Attempt 3Record Voicemail Attempt 3 (Attempt #3).
  6. If the third attempt fails, route via Lookup Lead Record 3 to Update Failed Status (Status Failed, Summary from {{ $('Verify End Report').item.json.body.message.analysis.summary }}) or use Mark Lead Unreachable (Attempt Unreachable).

⚠️ Common Pitfall: If the Airtable field names don’t exactly match First Name, Mobile, Status, or Attempt, updates in Record Voicemail Attempt 1 and related nodes will silently fail.

Step 6: Test and Activate Your Workflow

Verify the trigger, call flow, and Airtable updates before enabling production execution.

  1. Manually execute Minute Interval Trigger to confirm Retrieve Pending Leads returns records and Assemble Call Details formats the payload.
  2. Send a test call through Initiate Vapi Call and confirm the lead is updated by Mark Lead In Progress.
  3. Trigger the webhook using a sample Vapi payload to ensure Vapi Callback EndpointVerify End ReportStore Call Payload executes and Airtable records are created.
  4. Check that answered calls update via Update Connected Status and voicemail paths follow the retry chain.
  5. Activate the workflow by switching it to Active once tests complete successfully.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Vapi credentials can expire or need specific permissions. If things break, check your Vapi API key and header auth in the n8n credential setup first.
  • If you’re using Wait nodes or external call processing, timing varies. Bump up the wait duration if the webhook payload arrives late and downstream steps fail on empty data.
  • Default prompts in AI nodes are generic. Add your qualification rules and brand voice early or you will be rewriting summaries and follow-ups forever.

Frequently Asked Questions

How long does it take to set up this Airtable Vapi automation automation?

About 30–60 minutes if your Airtable base is ready.

Do I need coding skills to automate outbound calls with notes logged?

No. You’ll mostly map Airtable fields and paste in your Vapi details. The HTTP and webhook parts are already handled in the workflow.

Is n8n free to use for this Airtable Vapi automation workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Vapi usage costs for calls and any OpenAI usage used for summaries.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Airtable Vapi automation workflow for different retry rules?

Yes, and it’s honestly one of the best reasons to use n8n here. You can change the voicemail logic in the “Detect Voicemail Result” checks, adjust timing in the Wait steps (“Delay One Minute” and “Delay Until Next Day”), and update what gets written back in the Airtable “Update” nodes. Common tweaks include only retrying once, changing the “optimal time” window for next-day calls, and writing different statuses like “Needs human follow-up” for high-value accounts.

Why is my Airtable connection failing in this workflow?

Usually it’s the Airtable token or base access. Confirm the credential in n8n still has permission to the right base, then double-check the table name and field names match exactly (Status, Mobile, Attempt, Summary). If records update but look wrong, it’s often a field type mismatch, like writing text into a single select.

How many leads can this Airtable Vapi automation automation handle?

A few hundred a day is realistic for most small teams, then your limiting factor becomes call capacity and API rate limits more than n8n.

Is this Airtable Vapi automation automation better than using Zapier or Make?

Often, yes, because this flow has branching logic, retries, and webhook handling that gets awkward (and expensive) in simpler tools. n8n is happy doing “if voicemail, wait, retry, then schedule tomorrow,” and you don’t pay extra for every little path. Zapier or Make can still work if your needs are basic, like “call once, log summary,” and you value a simpler UI over control. The tradeoff is flexibility: when your sales process changes, you’ll want to edit logic, not rebuild it. Talk to an automation expert if you want help picking the right approach.

This workflow keeps outbound moving and Airtable clean, even when your day gets chaotic. Set it up once, then let the call attempts and call notes take care of themselves.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal