Back to Templates

AI-Powered Cold Calling Automation with Vapi.ai, GPT-4o & Google Sheets

Created by

Created by: Amit Mehta || amitswba

Amit Mehta

Last update

Last update 12 hours ago

Categories

Share


📞AI-Powered Cold Calling Automation with Vapi.ai, GPT-4o & Google Sheets

Overview

Transform your lead list into an AI-powered calling machine. This workflow automates your entire cold calling process using Vapi's conversational AI to initiate calls, qualify leads, capture detailed insights, and manage intelligent follow-ups - achieving 10x more calls than manual efforts while maintaining personalized, professional conversations.

Built for sales teams, recruiters, and customer success professionals who need to scale outreach without sacrificing quality or adding headcount.

🎯 Use Cases

Sales & Business Development

  • Lead Qualification: Auto-dial new leads to assess interest and budget
  • Demo Scheduling: Book meetings with qualified prospects automatically
  • Re-engagement: Win back cold leads with personalized outreach
  • Product Launches: Announce new features to your entire customer base

Recruitment & HR

  • Candidate Screening: Conduct first-round interviews at scale
  • Interview Scheduling: Coordinate availability without back-and-forth
  • Reference Checks: Automate reference verification calls
  • Offer Follow-ups: Ensure candidates received and understood offers

Customer Success

  • Onboarding Calls: Welcome new customers with consistent messaging
  • Renewal Reminders: Proactively reach out before contract expiration
  • Upsell Campaigns: Identify expansion opportunities through conversations
  • NPS Surveys: Gather voice feedback for authentic insights

Market Research

  • Customer Interviews: Collect qualitative feedback at scale
  • Product Validation: Test new concepts with target audiences
  • Competitive Intelligence: Understand why customers chose competitors
  • Industry Surveys: Gather market trends through conversational data

⚙️ How it Works

The workflow operates through two parallel processes:

Process 1: Call Initiation (Manual/On-Demand)

  1. Trigger: Manual start or scheduled batch processing
  2. Lead Retrieval: Fetches leads marked "Pending" or "Retry Scheduled" from Google Sheets
  3. Validation: Checks retry count (max 5 attempts) and routes accordingly
  4. API Call: Sends request to Vapi with lead details and AI assistant configuration
  5. Status Update: Marks lead as "Call Initiated" with unique call ID
  6. Batch Processing: Loops through all eligible leads with controlled pacing

Process 2: Result Collection (Every 10 Minutes)

  1. Schedule Trigger: Automatic execution every 10 minutes
  2. Active Call Check: Identifies all "Call Initiated" records
  3. Result Fetching: Retrieves call outcomes from Vapi API
  4. Data Processing: Extracts recordings, transcripts, summaries, and interest scores
  5. Sheet Update: Writes complete results or schedules retry for missed calls
  6. Team Notification: Sends Slack alerts on batch completion

📋 Setup Instructions

Prerequisites

  • n8n Instance: Version 1.0.0+ (self-hosted or cloud)
  • Google Account: With Sheets API enabled
  • Vapi Account: Active subscription with API access
  • Slack Workspace: Optional, for notifications

Step 1: Prepare Your Lead Database

Create a Google Sheet with these exact columns (case-sensitive):

Customer_id | Name | Phone Number | Email | Status | Recording URL | Transcript | Summary | Interest | Call Duration | Retry count | Last attempt | Call ID

Initial Setup:

  • Customer_id: Unique identifier (e.g., LEAD001)
  • Name: Full name for personalization
  • Phone Number: International format (+14155551234)
  • Email: For follow-up campaigns
  • Status: Set to "Pending"
  • Retry count: Set to 0
  • Other fields: Leave empty (auto-populated)

Step 2: Configure Vapi AI Assistant

  1. Create Your AI Voice Agent

    • Log into vapi.ai
    • Navigate to Assistants → Create New
    • Design your conversation flow
    • Configure voice settings (gender, accent, speed)
    • Set up objection handling
    • Save and copy the Assistant ID
  2. Set Up Phone Number

    • Go to Phone Numbers → Purchase/Import
    • Select local or toll-free number
    • Configure caller ID settings
    • Copy the Phone Number ID

Step 3: Import & Configure Workflow

  1. Import to n8n

    • Download Cold_calling_loop.json
    • In n8n: Import → From File
    • Select the JSON file
  2. Connect Credentials

    • Google Sheets: OAuth2 authentication
    • Vapi API: HTTP Header Auth
      • Name: Authorization
      • Value: Bearer YOUR_API_KEY
    • Slack: OAuth2 (optional)
  3. Update Configuration

    • All Google Sheets nodes: Select your spreadsheet
    • HTTP Request nodes: Update assistantId and phoneNumberId
    • Slack nodes: Choose notification channels

Step 4: Test & Deploy

  1. Add test lead with your phone number
  2. Execute workflow manually
  3. Answer call and complete conversation
  4. Verify results in Google Sheet
  5. Activate workflow for production

🔄 Workflow Logic Explained

Status Flow Diagram

[New Lead: Pending] → [Call Initiated] → [Completed/Failed]
                                      ↓
                            [Retry Scheduled] ← (if failed & retry < 5)

Key Decision Points

  1. Retry Limit Check (If1 Node)

    • Condition: Retry count ≤ 5
    • True: Proceed with call
    • False: Mark as "Max Retries Reached"
  2. Call Completion Check (If2 Node)

    • Validates: Recording exists, transcript available, analysis complete
    • Success: Update with full results
    • Failure: Schedule retry with incremented counter
  3. Status Routing (If4 Node)

    • "Pending": Direct to call queue
    • "Retry Scheduled": Add wait period before calling

📊 Node Reference Guide

Core Processing Nodes

Node Type Purpose Configuration
Get Leads from Sheet1 Google Sheets Fetches eligible leads Filter: Status = "Pending" OR "Retry Scheduled"
HTTP Request HTTP Initiates Vapi call POST to api.vapi.ai/call with assistant config
Loop Over Items Split In Batches Processes leads individually Batch size: 1, ensures sequential processing
Get Call Data HTTP Retrieves call results GET from api.vapi.ai/call?id={callId}
Edit Fields2 Set Formats result data Maps Vapi response to sheet columns

Status Management Nodes

Node Updates Trigger
Update Status - Calling1 "Call Initiated" After successful API call
Update Status - Calling "Done" + results When call completed successfully
Update Status - for Missed call "Retry Scheduled" When call failed/no answer
Update Status - Calling3 "Retry Done" After retry limit reached

Control Flow Nodes

Node Function Logic
If1 Retry validation Checks retry count ≤ 5
If2 Result validation Verifies call completion
Wait Retry delay Pauses before retry attempt
Merge Path combination Unifies success/retry flows

🛠️ Customization Guide

1. Modify Retry Strategy

// Add to Code node for progressive delays
const retryCount = $json["Retry count"];
const delays = {
  1: 30,    // 30 minutes
  2: 120,   // 2 hours
  3: 1440,  // Next day
  4: 2880,  // 2 days
  5: 10080  // 1 week
};
return { waitMinutes: delays[retryCount] || 60 };

2. Add Business Hours Check

// Add before HTTP Request node
const now = new Date();
const hour = now.getHours();
const day = now.getDay();

const isWeekday = day >= 1 && day <= 5;
const isBusinessHours = hour >= 9 && hour <= 17;

if (!isWeekday || !isBusinessHours) {
  throw new Error('Outside calling hours');
}

3. Enhance Lead Context

{
  "assistantId": "your-assistant-id",
  "phoneNumberId": "your-phone-id",
  "customer": {
    "number": "+{{ $json['Phone Number'] }}",
    "name": "{{ $json.Name }}",
    "customData": {
      "company": "{{ $json.Company }}",
      "lastPurchase": "{{ $json['Last Purchase Date'] }}",
      "accountValue": "{{ $json['Account Value'] }}",
      "preferredProduct": "{{ $json['Product Interest'] }}"
    }
  }
}

💡 Sticky Notes Configuration

Note 1: Status Progression

Location: Near Google Sheets nodes

📊 LEAD STATUS FLOW:
Pending → Call Initiated → Done/Retry Scheduled
Retry Scheduled → Call Initiated → Done/Failed

⚠️ Max retries: 5 attempts
❌ Failed = No answer after 5 tries
✅ Done = Call completed with results

Note 2: Phone Format Requirements

Location: Near HTTP Request nodes

📱 PHONE NUMBER FORMAT:
✅ Correct: +14155551234
❌ Wrong: (415) 555-1234
❌ Wrong: 415-555-1234

Must include:
- Plus sign (+)
- Country code
- No spaces or symbols

Note 3: Vapi Setup Checklist

Location: At workflow start

🔧 VAPI CONFIGURATION:
□ Assistant ID copied from Vapi
□ Phone Number ID from Vapi
□ API Key in credentials
□ Credits available
□ Assistant tested in playground

Note 4: Performance Guidelines

Location: Near Loop nodes

⚡ OPTIMIZATION TIPS:
• Batch size: 10-20 leads
• Call hours: 9 AM - 5 PM local
• Delay between calls: 5 seconds
• Monthly archive old records
• Monitor Vapi credit usage

Common Issues & Solutions

🔴 "Authentication Failed"

Cause: Expired or invalid credentials
Fix:

  1. Re-authenticate Google Sheets OAuth
  2. Verify Vapi API key is active
  3. Check credential permissions

🔴 "Call Not Initiating"

Cause: Invalid phone format or Vapi configuration
Fix:

  1. Ensure phone includes country code
  2. Verify Vapi account has credits
  3. Test assistant in Vapi playground
  4. Check assistant and phone IDs

🔴 "Missing Results"

Cause: Call still processing or webhook failure
Fix:

  1. Wait 3-5 minutes for processing
  2. Check Vapi dashboard directly
  3. Verify Get Call Data node query
  4. Review If2 conditions

🔴 "Infinite Loop"

Cause: Status not updating correctly
Fix:

  1. Check retry count increment logic
  2. Verify status update mappings
  3. Clear test data and restart

🔴 "No Slack Notifications"

Cause: Bot permissions or channel access
Fix:

  1. Invite bot to channel
  2. Verify OAuth scopes
  3. Test Slack node individually

📁 Required Files & Resources

File Description Location
Cold_calling_loop.json Complete workflow configuration Main workflow file
lead_template.xlsx Google Sheets template with headers Sample data file

🏷️ Tags & Categories

Primary Category

Sales & Marketing Automation

Workflow Tags

cold-calling vapi-ai voice-automation lead-generation ai-sales google-sheets outbound-calling sales-automation conversational-ai crm-automation

Use Case Tags

b2b-sales recruitment customer-success market-research appointment-setting lead-qualification follow-up-automation

Integration Tags

vapi google-sheets slack voice-ai telephony

🚀 Future Enhancements

Planned Features

  • CRM Integration: Direct sync with Salesforce/HubSpot
  • Multi-language: Support for 10+ languages
  • SMS Follow-up: Automated text after calls
  • Analytics Dashboard: Real-time performance metrics
  • Sentiment Analysis: Emotional intelligence scoring

Community Roadmap

  • Webhook support for real-time updates
  • Custom voice training options
  • A/B testing for scripts
  • Predictive best time to call
  • Integration with calendar systems

📞 Support & Resources

Support email : [email protected]