The numbers on cold email in 2026 tell a blunt story. According to Martal's analysis of B2B cold email benchmarks, 95% of cold emails fail to generate any reply. About one in six never reaches an inbox at all (16.9%), according to Infraforge's deliverability research. And the average reply rate across billions of emails tracked by Instantly's 2026 benchmark report sits at 3.43%.
But the same data also shows what works. Personalised cold emails generate a 32% higher response rate than generic messages, according to Sopro's 2026 cold outreach statistics, which also put advanced personalisation at an 18% reply rate against 9% for generic emails. Sopro lists its sources as a group without saying which one each figure comes from, so treat both as directional.
Most teams already know personalisation works. What stops them is the hours it takes by hand: looking up each lead's company, finding their email, writing a custom message and tracking replies. Many also stop after the first email. Instantly found that follow-ups generate 42% of all campaign replies, yet 48% of reps never send a follow-up after the first message goes unanswered, according to Martal.
We at Supernodes build systems that close this gap. The pipeline we walk through here uses three tools that anyone can access: Hunter.io for email discovery and verification, Claude via the Anthropic API for intelligent personalisation, and n8n for the workflow plumbing that connects everything. Once set up, it enriches every lead with contact data, has Claude write and score a personalised email, and routes each lead by that score. The whole thing costs less than a team lunch per month.
What you get: a sales automation pipeline that turns a list of names and company domains into personalised cold emails, enriched with data, scored against your ICP, and routed to the right channel, without a human touching any step between input and send.
Most cold email is never opened, let alone answered
The average cold email open rate across all B2B industries has stabilised at 27.7%, according to Snov.io's 2026 benchmarks. That means 72% of cold emails are opened by nobody. Of those that are opened, most still get ignored. The average conversion rate from cold outreach is just 0.2153%, one deal won per 464 emails sent, per Focus Digital's 2024 analysis.
The reasons are not mysterious. According to Martal's breakdown, the top causes are poor targeting, lack of personalisation, weak subject lines, and no follow-up. Woodpecker found that campaigns with under 50 recipients average a 5.8% reply rate, compared to 2.1% for larger batches. Small, curated, personalised lists outperform spray-and-pray every time.
Automation can bring the personalisation without the manual labour. Hunter.io finds and verifies email addresses. Claude writes the email from what Hunter and your lead list say about the prospect. n8n triggers the whole thing and handles the routing, which keeps each list small and specific enough to sit in Woodpecker's better-performing group.
What you need before starting
You need four things. A Hunter.io account: the free plan gives you 50 credits a month and includes API access, and the Starter plan is USD 49 a month (USD 34 a month billed annually) for 2,000 credits. Hunter's API docs say no credit is charged when the Email Finder finds nothing. An Anthropic API key from the Claude Console. An n8n instance, free if you self-host the Community edition, or EUR 20 a month billed annually on the Starter cloud plan. And a platform to send the emails, like Instantly, Smartlead, or your own email infrastructure.
For 500 leads a month, the bill is USD 49 for Hunter Starter, EUR 20 for n8n cloud, and a few US dollars of Claude calls at roughly half a cent per email, plus whatever your sending platform charges. All prices were read on 4 October 2026.
Step 1: Set up the Hunter.io enrichment pipeline in n8n
Connect Hunter.io to n8n for automated lead enrichment
Create a new n8n workflow and add a Webhook node as the trigger. Set the HTTP method to POST. This is where your lead list enters the pipeline. You can feed it from a Google Sheet, a manual paste, or an automated source like a LinkedIn scraper.
Add an HTTP Request node connected to the webhook output. This calls the Hunter.io Email Finder API. Configure it like this:
Method: GET
URL: https://api.hunter.io/v2/email-finder
Query Parameters:
domain: {{ $json.body.domain }}
first_name: {{ $json.body.first_name }}
last_name: {{ $json.body.last_name }}
api_key: YOUR_HUNTER_API_KEY
The body in each expression is there because n8n's Webhook node puts posted data under body. Hunter returns a data object with the email address, a confidence score from 0 to 100, the person's position (job title), the company name and a verification status. Add an IF node on {{ $json.data.score }}: below 70, route the lead into a review queue rather than sending a possibly wrong email.
For company-level data, add a second HTTP Request node calling Hunter's Domain Search endpoint, or an enrichment tool such as Apollo.io for company size and industry. Clearbit used to be the default here, but HubSpot has wound down its free tools and folded it into HubSpot's own Breeze Intelligence, so it only makes sense if you already pay for HubSpot.
Test it: click Listen for Test Event on the Webhook node and post a JSON payload with first_name, last_name and domain to its test URL. Open the Hunter node's output. You should see an email address with a confidence score, or an empty result, which costs no credit.
Step 2: Build the lead scoring and personalisation prompt for Claude
Write the Claude prompt that scores leads and generates personalised emails
This is the part that determines whether the pipeline produces a generic template or a genuinely personal email. The prompt needs your ICP criteria, the enriched lead data, and explicit output formatting so Claude returns consistent, machine-readable JSON.
Here is a starting template. Replace the ICP criteria with your own, but keep the structure. Put it in an Edit Fields (Set) node after the Hunter step, as a text field called prompt, so n8n fills in the lead details before Claude sees it:
You are a B2B cold email personalisation assistant. Given enriched lead data, score the lead against our ICP and generate a personalised cold email.
ICP CRITERIA:
- Company size: 50-500 employees (best fit), 10-49 (moderate), 500+ (fair if they have AI tooling)
- Industry: B2B SaaS, professional services, fintech, martech (strong). E-commerce, retail (moderate). Consumer goods, non-profit (weak)
- Job title: VP/Director/Head of Marketing, Growth, Sales, RevOps (strong). Manager level (moderate). IC (weak)
- Location: US, Canada, UK, Australia (strong). Other English-speaking (moderate)
- Signals: mention of "automation", "AI", "workflow", "stack" in company data (bonus +10)
EMAIL RULES:
- Under 80 words total
- Lead with a specific observation about their company or industry
- One clear, low-commitment ask
- No "just checking in", no "hope this finds you well", no template-y openings
Return ONLY valid JSON, no markdown, no explanation outside the JSON:
{
"score": 0-100,
"tier": "hot" (80+), "warm" (50-79), or "cold" (under 50),
"subject_line": "specific, under 50 chars",
"email_body": "the personalised email text, under 80 words",
"reasoning": "1 sentence explaining the personalisation logic"
}
LEAD DATA:
Name: {{ $('Webhook').item.json.body.first_name }} {{ $('Webhook').item.json.body.last_name }}
Company: {{ $json.data.company || 'unknown' }}
Domain: {{ $json.data.domain }}
Job title: {{ $json.data.position || 'unknown' }}
n8n expressions are JavaScript, so a missing field is handled with || 'unknown'. If you add Apollo or another enrichment step for industry and company size, add a line for each in the same form.
Saleshandy's June 2026 analysis found that hyper-personalised campaigns sent to fewer than 200 prospects got twice as many replies. Its data does not separate AI-written emails from human-written ones, so the lesson to take is about specific data and small lists: the richer the enrichment in Step 1, the more Claude has to personalise with here.
Step 3: Connect Claude to n8n for cold email generation
Call the Anthropic API from n8n
Add an HTTP Request node after the enrichment step. Configure it to call the Anthropic Messages API:
Method: POST
URL: https://api.anthropic.com/v1/messages
Headers:
x-api-key: YOUR_ANTHROPIC_API_KEY
anthropic-version: 2023-06-01
content-type: application/json
Body (JSON, as an expression):
{{ JSON.stringify({
model: "claude-sonnet-5-5",
max_tokens: 500,
messages: [{ role: "user", content: $json.prompt }]
}) }}
Building the body with JSON.stringify matters, because the prompt contains quote marks and line breaks that would break a hand-typed JSON body. The model ID matters too. Earlier versions of this guide used claude-sonnet-4-20250514, which Anthropic retired on 15 June 2026, so calls to it now fail, per its model deprecations page. Claude Sonnet 5.5 costs USD 2 per million input tokens and USD 10 per million output tokens on Anthropic's pricing page, which puts a prompt of about 700 tokens and a reply of about 300 at roughly half a US cent.
Add a Code node after the call to turn Claude's reply into separate fields for the routing in Step 4. It also strips code fences, in case Claude wraps the JSON in them despite the instruction:
const text = $input.first().json.content[0].text
.replace(/^```(json)?\s*|\s*```$/g, '');
const lead = JSON.parse(text);
return [{ json: lead }];
n8n's public library of community workflow templates is worth searching first, since a similar workflow often exists to start from. Recent n8n versions ship a native Anthropic Chat Model node for calling Claude, while the HTTP Request node gives you full control over the prompt structure and token budget. If you want to learn more about how AI agent reasoning connects to workflow automation, our guide to the 10-layer AI agent stack explains the architecture in depth.
Step 4: Route personalised emails and handle replies
Build the sending and reply-handling logic
Now that Claude has scored the lead and generated a personalised email, n8n decides what to do with it. Add an IF node after parsing Claude's response. Set conditions based on the score:
| Tier | Score | Action |
|---|---|---|
| Hot | 80+ | Send immediately via your email platform's API, and post a notification to a Slack channel so the sales team can follow up. |
| Warm | 50-79 | Queue for a midweek send: Instantly's data shows Wednesday consistently delivers the highest engagement. |
| Cold | Under 50 | Log to a spreadsheet for future nurture. Don't burn a good domain reputation on low-fit leads. |
For the sending step, connect to your email platform. Instantly, Smartlead, and Lemlist all have REST APIs that n8n can call via HTTP Request nodes. Pass the subject line and body from Claude's response, and set the recipient email from the Hunter.io enrichment output.
For reply handling, add a scheduled workflow that checks for new replies every few hours. Use an AI classification node, or another Claude call, to categorise replies as positive (interested), negative (not interested), or out-of-office. Route positives to Slack for immediate follow-up. For negatives, stop the sequence and mark the contact as do-not-contact, since another email to someone who has said no is how domains end up on blocklists. Reschedule out-of-office contacts for the following week.
Reply handling is where most of the value sits, because a positive reply answered within the hour is worth more than ten more sends. Routing the interested ones to a person quickly is the same job our guide to lead qualification agents covers in more depth.
Step 5: Track performance and iterate with data
Monitor, measure, and refine the pipeline
Cold outreach is not a set-and-forget system. The teams that get elite-tier results (10%+ reply rates, per Instantly's benchmark) test and iterate weekly. n8n workflows expose execution data, and your email platform provides open, click, and reply metrics. Feed these back into the pipeline.
Set up a Google Sheet node in n8n that logs every email sent: lead name, company, score, subject line, and whether they replied. After a week, review which subject lines and personalisation angles got the most replies. Use that data to refine the Claude prompt. If leads in a certain industry consistently score low, adjust your ICP criteria. If subject lines mentioning a specific pain point outperform, tell Claude to prioritise that angle.
GMass reports that well-targeted, intent-led campaigns can reach 15% to 25% reply rates. Those results come from good enrichment data, a prompt you keep refining and a disciplined follow-up cadence. The pipeline you build today gets better every week that you run it and feed data back in.
Where the time goes once the pipeline runs
Done by hand, every lead means finding an email, reading up on the company, writing a message and tracking the reply. We could not find a credible public benchmark for how long that takes per lead, so time ten of your own before and after. Once the pipeline runs, the human work moves to two places: the review queue for low-confidence emails from Step 1, and the positive replies Step 4 sends to Slack. Sending to 500 leads takes no more of anyone's time than sending to 50, as long as both queues stay short.
For teams that have already built an automated email nurture system with Claude and HubSpot, a cold outreach pipeline on the front end covers the rest of the journey: find leads, personalise outreach, nurture responders, and convert. The same agent stack architecture that powers the nurture workflow powers cold outreach. Claude is the reasoning layer. Hunter.io is the data layer. n8n is the tool layer that connects decisions to actions. And the email platform is the delivery layer.
The bottom line: Instantly puts the average cold email reply rate at 3.43% and its top 10% of senders above 10.7%. Small lists and specific data separate the two groups far more than send volume does, and this pipeline is built to supply both.
Frequently asked questions
How much does it cost to personalise cold emails with Claude and Hunter.io?
Hunter.io's free plan gives 50 credits a month with API access, and the Starter plan is USD 49 a month (USD 34 billed annually) for 2,000 credits. Claude Sonnet 5.5 calls cost roughly half a US cent per email. n8n is free if self-hosted or EUR 20 a month billed annually on its Starter cloud plan. For 500 leads a month, expect about USD 49 for Hunter, EUR 20 for n8n cloud and a few dollars of Claude calls, before your sending platform's fees.
Can I use ChatGPT instead of Claude for cold email personalisation?
Yes. The workflow pattern is identical regardless of which AI model generates your emails. Swap the HTTP Request node's URL to the OpenAI API endpoint and adjust the prompt format slightly. The Hunter.io enrichment and n8n routing logic stay the same. The key is the enrichment data feeding the prompt, which matters more than which model writes the email.
What data does Hunter.io provide for lead enrichment?
Hunter.io's Email Finder API returns verified email addresses with confidence scores (0-100). The Domain Search endpoint provides a list of all email addresses found for a domain. The Email Finder response also includes the person's job title and company name. For company size and industry, add another enrichment API such as Apollo.io alongside Hunter in the n8n workflow.
How many leads can I process through this workflow?
Hunter.io's free plan includes 50 credits a month, Starter (USD 49 a month) includes 2,000 and Growth (USD 149 a month) includes 10,000, and Hunter charges no credit when the Email Finder finds nothing. The Claude API is not volume-bound: you pay per token, so scaling depends on your Hunter.io plan and n8n execution limits rather than Claude. Most n8n self-hosted instances can process thousands of workflow executions per day without additional cost.
Do I need to write code to build this cold email pipeline?
Very little. The pipeline is built in n8n's visual editor. You configure nodes for the webhook, HTTP requests to Hunter.io and Claude, conditional routing, and Slack or email notifications. The most technical step is copying your API keys into n8n's credential store. The prompt template, request body and Code node in this guide can be pasted as they are, and the Code node is the only JavaScript you need.