AI SDR with Saleshandy + n8n Setup
AI SDR with Saleshandy + n8n Setup
As promised, here's the n8n workflow file: Click here to download the file
Signup with http://www.saleshandy.com/
Overview
This guide walks you through setting up an AI-powered SDR system that automatically finds, enriches, qualifies, and reaches out to leads using Saleshandy and n8n automation.
How to Self-host N8n
Alternative: Use n8n cloud at https://n8n.partnerlinks.io/
PHASE 1: Create Master Google Sheet
Copy and paste the following table structure exactly into your Google Sheet:
linkedin url
title
ID
Emails
Website
Phone
company_linkedin
nb of employees
first name
last name
company name
qualify grade
qualification potential
company description
industry
company size on linkedin
country
specialities
updates
follower count
icebreaker
Lead added to email outreach tool
added to linkedin campaign?
row_number
Main Workflow: AI SDR Pipeline
Prerequisites
Google APIs:
Google Sheets API: Enable here
Google Custom Search API: Enable here
Create Custom Search Engine: CSE Setup
OpenAI API:
Get API Key: OpenAI Platform
Add credits: Billing
Enrichment APIs:
Dropcontact: Get API Key
Nubela (Proxycurl): Get API Key
Saleshandy Account:
Sign up: Saleshandy
Get API Key: Settings → API → Generate Key
Note your Campaign ID from the campaigns page
Additional Tools (Optional):
HeyReach (for LinkedIn campaigns): Get API
Workflow Components Breakdown
1. Lead Discovery Module
Nodes: Schedule Trigger → Page → Loop Over Items → Google Search API
Purpose: Searches Google for LinkedIn profiles based on keywords
Configuration:
Set search query (e.g., "Software Engineer SAN FRANCISCO")
Configure batch size (default: 10 results per page)
2. LinkedIn Profile Enrichment
Nodes: GetCompanyName → Dropcontact (Enrich Prospects)
Purpose: Extracts professional data and finds email addresses
Configuration:
Add Dropcontact API credentials
Set wait time between requests (245ms default)
3. Company Data Enrichment
Nodes: GetCompanyInfos → OpenAI (Website Analysis)
Purpose: Scrapes company LinkedIn pages and websites
Configuration:
Add Nubela API credentials
Configure OpenAI for company data extraction
4. Lead Qualification
Nodes: RAG_QUALIFY → Code (JSON Parser)
Purpose: AI scores leads based on ICP match (0-10 scale)
Configuration:
Define your ICP in the system prompt
Set qualification thresholds (High/Medium/Low)
5. Personalization Engine
Nodes: Icebreakers → OpenAI Chat Model
Purpose: Generates personalized opening lines from website data
Configuration:
Customize icebreaker prompt template
Set creativity parameters
6. Saleshandy Integration
Nodes: Saleshandy_Add_Lead → Google Sheets Update
Purpose: Adds qualified leads to campaigns
Configuration:
Add Saleshandy API key
Set Campaign ID
Configure custom fields mapping
Setting Up the Complete Workflow
Step 1: Import the Workflow
Download the JSON file
Open n8n and create a new workflow
Click the three dots menu → "Import from File"
Select the downloaded JSON file
Step 2: Configure Credentials
Add your credentials to these nodes:
Google Services:
Google Sheets2 - Google Sheets OAuth2
Google Sheets1 - Google Sheets OAuth2
Google Sheets3 - Google Sheets OAuth2
NoFoundLeads - Google Sheets OAuth2
Search & Enrichment:
getLinkedinProfile - Google Custom Search API key
getLinkedinProfile1 - Google Custom Search API key
Enrich Prospects - Dropcontact API
GetCompanyName - Nubela API (HTTP Header Auth)
GetCompanyInfos - Nubela API (HTTP Header Auth)
AI Processing:
OpenAI - OpenAI API
OpenAI Chat Model - OpenAI API
OpenAI Chat Model1 - OpenAI API
Saleshandy:
Saleshandy_Add_Lead - HTTP Query Auth with your API key
Optional:
HTTP Request1 - HeyReach API (if using LinkedIn campaigns)
Step 3: Configure Workflow Settings
Update Google Sheet ID:
Find all Google Sheets nodes
Replace document ID with your sheet ID
Ensure sheet name matches (default: "Sheet1")
Set Saleshandy Campaign ID:
In Saleshandy_Add_Lead node
Update the campaign ID in the URL: /campaigns/YOUR_CAMPAIGN_ID/leads
Customize Search Parameters:
Edit the Page node for pagination settings
Modify search queries in getLinkedinProfile nodes
Adjust Timing:
Configure wait times between API calls
Set appropriate delays to avoid rate limits
Saleshandy Webhook Configuration
Setting up Webhooks for Real-time Updates
In Saleshandy:
Go to Settings → Webhooks
Click "Add Webhook"
Name: "n8n Campaign Updates"
URL: Your n8n webhook URL
Events to track:
Email Opened
Link Clicked
Email Replied
Email Bounced
Prospect Unsubscribed
In n8n:
Create a new workflow for webhook handling
Add a Webhook node
Copy the webhook URL
Create logic to update Google Sheets based on events
Campaign Setup in Saleshandy
Creating Your First Campaign
Email Accounts Setup:
Connect multiple email accounts
Enable email warmup (TrulyInbox)
Configure SPF, DKIM, DMARC
Create Campaign:
Name: "AI SDR Outreach - [Your Target]"
Enable A-Z testing
Set sender rotation rules
Configure daily sending limits
Email Sequences:
Step 1: Personalized intro with {{icebreaker}}
Step 2-5: Follow-up sequences
Use custom variables: {{first_name}}, {{company_name}}, {{website}}
Sequence Score Optimization:
Check Sequence Score before launching
Fix any deliverability issues
Aim for score above 70
Testing & Troubleshooting
Test Run Checklist:
[ ] Google Search API returning LinkedIn URLs
[ ] Dropcontact enriching emails successfully
[ ] Company data being scraped
[ ] AI qualification working (check scores)
[ ] Icebreakers generating properly
[ ] Leads appearing in Saleshandy campaign
[ ] Google Sheet updating with all data
Common Issues:
No LinkedIn URLs Found:
Check Google Custom Search configuration
Verify search query syntax
Ensure CSE is set to search entire web
Email Enrichment Failing:
Verify Dropcontact credits
Check API key validity
Ensure proper data formatting
Saleshandy API Errors:
Confirm API key is active
Check campaign ID is correct
Verify JSON payload structure
Rate Limiting:
Increase wait times between requests
Implement exponential backoff
Use batch processing where possible
Advanced Configuration
Custom ICP Definition
Edit the RAG_QUALIFY node system message to define your ICP:
Plain TextCC++CSSGLSLGraphQLRuby HamlHTMLJavaJavaScriptJSONJSON with CommentsJSON LinesJSXJuliaLessMarkdownMDXPHPPostCSSPugPythonRRegExpSassSCSSShellSQLSvelteTypeScriptVueVue HTMLWebAssemblyWGSLXMLYAMLTSXHaskellC#LaTeXLuaMermaidRubyRustScalaSwiftKotlinObjective C
Our Company information: [Your company details]
Target ICP: [Industry, size, location, pain points]
Multi-Campaign Setup
Duplicate the workflow
Change campaign IDs
Modify search queries for different targets
Use different Google Sheets for tracking
Performance Monitoring
Set up daily summary emails
Create dashboard in Google Sheets
Monitor key metrics:
Enrichment success rate
Qualification distribution
Campaign performance
Cost per qualified lead
Best Practices
Data Quality:
Regularly clean your prospect lists
Verify emails before adding to campaigns
Remove duplicates across campaigns
Personalization:
Test different icebreaker prompts
Use multiple personalization variables
A/B test subject lines
Deliverability:
Warm up all email accounts
Monitor Sequence Scores
Rotate sending accounts
Keep daily volumes reasonable
Compliance:
Include unsubscribe links
Respect opt-out requests
Follow CAN-SPAM regulations
Maintain suppression lists
Scaling Your AI SDR
Phase 1: Testing (Week 1-2)
Run with 50-100 prospects
Fine-tune ICP scoring
Optimize email sequences
Monitor initial metrics
Phase 2: Optimization (Week 3-4)
Scale to 200-500 prospects
Implement feedback loops
Refine personalization
Test different industries
Phase 3: Full Scale (Month 2+)
Process 1000+ prospects weekly
Multiple campaigns running
Automated reporting
Continuous optimization
Support & Resources
Saleshandy Documentation: docs.saleshandy.com
n8n Community: community.n8n.io
API References:
ROI Calculation
Cost Breakdown:
n8n hosting: $20/month (self-hosted)
Saleshandy: $49-149/month
API costs: ~$0.08 per enriched lead
OpenAI: ~$0.02 per lead qualified
Expected Results:
50% email open rate
3-5% reply rate
10-15% meeting book rate from replies
3-10 meetings per week
Time Savings:
Manual prospecting: 3 hours → 3 minutes
Lead enrichment: 2 hours → Automated
Campaign creation: 1 hour → 5 minutes
Total: 6+ hours saved daily
Hope that made sense! But fair warning: this is just level one... it only gets deeper from here 🕳️🐇