AI-Powered Cold Calling Automation with Vapi.ai by Amit MehtaAI-Powered Cold Calling Automation with Vapi.ai by Amit Mehta

AI-Powered Cold Calling Automation with Vapi.ai

Amit Mehta

Amit Mehta

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

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)

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

Process 2: Result Collection (Every 10 Minutes)

Schedule Trigger: Automatic execution every 10 minutes
Active Call Check: Identifies all "Call Initiated" records
Result Fetching: Retrieves call outcomes from Vapi API
Data Processing: Extracts recordings, transcripts, summaries, and interest scores
Sheet Update: Writes complete results or schedules retry for missed calls
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

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
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

Import to n8n
Download Cold_calling_loop.json
In n8n: Import → From File
Select the JSON file
Connect Credentials
Google Sheets: OAuth2 authentication
Vapi API: HTTP Header Auth
Name: Authorization
Value: Bearer YOUR_API_KEY
Slack: OAuth2 (optional)
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

Add test lead with your phone number
Execute workflow manually
Answer call and complete conversation
Verify results in Google Sheet
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

Retry Limit Check (If1 Node)
Condition: Retry count ≤ 5
True: Proceed with call
False: Mark as "Max Retries Reached"
Call Completion Check (If2 Node)
Validates: Recording exists, transcript available, analysis complete
Success: Update with full results
Failure: Schedule retry with incremented counter
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:
Re-authenticate Google Sheets OAuth
Verify Vapi API key is active
Check credential permissions
šŸ”“ "Call Not Initiating"
Cause: Invalid phone format or Vapi configuration Fix:
Ensure phone includes country code
Verify Vapi account has credits
Test assistant in Vapi playground
Check assistant and phone IDs
šŸ”“ "Missing Results"
Cause: Call still processing or webhook failure Fix:
Wait 3-5 minutes for processing
Check Vapi dashboard directly
Verify Get Call Data node query
Review If2 conditions
šŸ”“ "Infinite Loop"
Cause: Status not updating correctly Fix:
Check retry count increment logic
Verify status update mappings
Clear test data and restart
šŸ”“ "No Slack Notifications"
Cause: Bot permissions or channel access Fix:
Invite bot to channel
Verify OAuth scopes
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 : amitswba@gmail.com
Like this project

Posted Jun 23, 2025

Automated cold calling using Vapi.ai, GPT-4o, and Google Sheets for efficient lead management.