top of page
< Back

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:

Saleshandy API

Dropcontact API

Nubela API

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 🕳️🐇

bottom of page