AI-Powered Cold Calling Automation with Vapi.ai, GPT-4o & Google Sheets
Categories
Created by
Last edited 39 days ago
📞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)
- 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 personalizationPhone Number
: International format (+14155551234)Email
: For follow-up campaignsStatus
: 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
- Download
-
Connect Credentials
- Google Sheets: OAuth2 authentication
- Vapi API: HTTP Header Auth
- Name:
Authorization
- Value:
Bearer YOUR_API_KEY
- Name:
- Slack: OAuth2 (optional)
-
Update Configuration
- All Google Sheets nodes: Select your spreadsheet
- HTTP Request nodes: Update
assistantId
andphoneNumberId
- 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"
- Condition:
-
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
You may also like
New to n8n?
Need help building new n8n workflows? Process automation for you or your company will save you time and money, and it's completely free!