What Problem Does This Solve?
Sales development representatives spend nearly 40% of their working day — roughly 3 hours out of every 8 — on tasks that don't require human judgment: looking up contact data, verifying email addresses, writing personalised first lines, and updating CRM records. This is the productivity trap that quietly kills pipeline velocity at B2B companies of every size. The core problem is that personalised outreach at scale used to be a contradiction in terms. You could personalise deeply for 10 prospects per day, or you could blast 200 contacts with a generic template. Neither approach wins in 2026. Deep personalisation doesn't scale; generic blasts return 2–3% reply rates and train your domain into spam filters. The answer is not choosing between the two — it's automating the research and writing so every prospect receives genuinely personalised outreach, at the pace of a blast campaign.
According to the 2026 State of AI Sales Prospecting report by Autobound, teams using signal-based AI outreach achieve reply rates of 15–25% — compared to the 3% industry average for traditional cold email.
The workflow documented in this guide combines four tools — Clay, Apollo.io, n8n, and Claude API — into a system that runs largely on autopilot. Clay handles enrichment: pulling prospect data from 150+ providers and running AI research via Claygent. Apollo.io supplies the contact database and manages sequences. n8n orchestrates the pipeline, routing qualified leads and triggering personalised email generation. Claude API writes the emails, using enriched data as context to generate first lines and body copy that reference real, prospect-specific signals. The result is outreach that reads as individually researched — because it effectively is — generated at a pace no human SDR team can match manually. A 5-person team using this stack consistently operates at the output level of 25–40 manual SDRs.
There are three distinct layers of waste in manual B2B prospecting, and most teams are only aware of one. The first and most visible layer is research time — the hours spent on LinkedIn, company websites, and news searches building a picture of each prospect. The second layer is writing time — the cognitive load of translating that research into a personalised, compelling first message that doesn't read as generic. The third and least discussed layer is the decision overhead of determining, for each of hundreds of contacts, whether they meet your ICP criteria well enough to warrant outreach investment at all. This qualification decision — which most SDRs make intuitively and inconsistently — is responsible for a significant portion of wasted outreach to poorly-qualified targets. The Clay + Apollo + n8n + Claude API workflow addresses all three layers simultaneously. Apollo and Clay's waterfall handle research collection automatically. Claude API handles the writing. And the qualification scoring logic in n8n handles the ICP decision consistently at scale, applying the same criteria to every contact without the variability of human judgment under time pressure. When you remove all three layers of waste, the SDR role transforms from a research-and-writing function into a relationship-and-closing function — which is where human skills actually create irreplaceable value.
Required Tools
This workflow requires four tools. Three have free or low-cost entry tiers — the total stack costs under €100/month at startup scale and scales with your pipeline volume, not your headcount.
| Tool | Role | Cost |
|---|---|---|
| Clay | Lead sourcing, multi-provider waterfall enrichment, Claygent AI research, signal detection | Free (100 credits/mo) or $185/mo Launch |
| Apollo.io | B2B contact database (275M+ contacts), email sequencing, CRM sync, intent signals | Free (limited exports) or $49/user/mo Basic |
| n8n | Workflow orchestration: scheduling, routing, Clay→Claude→Apollo pipeline logic, error handling | Free self-hosted or $24/mo Cloud Starter |
| Claude API | Personalised email copy generation from enriched prospect data; first-line and body writing | Pay-per-use (~$5–15/mo at typical SDR volumes) |
Step-by-Step Implementation Guide
Follow these 12 steps in order. Steps 1–3 cover the initial setup of each tool. Steps 4–8 build the core enrichment and personalisation pipeline. Steps 9–12 handle routing, launch, and ongoing maintenance. Total setup time: 3–5 hours in a single session.
Step 1: Create Your Clay Account and Define Your ICP Table
Start at clay.com and create a free account. Once inside, create a new table and name it after your Ideal Customer Profile segment (e.g., 'ICP — SaaS Operations Managers'). This table will become the central hub for all prospect data in your workflow. In Clay, an ICP is defined by the combination of filters you apply when importing and enriching records. You'll set these up in Step 2, but first configure your table columns: at minimum you'll need First Name, Last Name, Company Name, Title, LinkedIn URL, Company Domain, Industry, Company Size, and a 'Qualified' boolean column you'll populate later in Step 8. Create a second column group called 'Enrichment Data' — this is where Clay will write the outputs from its waterfall: verified email, phone (if needed), company LinkedIn, recent company news, and the Claygent research summary. Keeping enrichment data in a separate column group makes the table easier to read and debug. Before writing a single line of automation code, the time you invest in table architecture pays dividends for months. Clay tables are the operational memory of this entire system — they store not just the prospect data you imported, but every enrichment result, every Claygent research output, every qualification decision, and every Apollo contact ID. A well-structured table makes debugging, iteration, and reporting straightforward. A poorly-structured table becomes a source of confusion and missed contacts within weeks. Think of the Clay table as your sales operations database: invest in its design upfront.
- Sign up at clay.com and verify your email address
- Create a new table named after your ICP segment
- Add standard columns: Name, Title, Company, Domain, LinkedIn URL, Industry, Headcount
- Add an 'Enrichment Data' column group for waterfall outputs
- Add a 'Qualified' boolean column and a 'Personalisation Notes' text column
- Add a 'Session Notes' column to document any manual observations or follow-up actions for specific rows
- Set Clay table sharing permissions appropriately — use 'View only' for stakeholders who need visibility but not editing access
- Create a separate 'Archive' table and configure a Clay automation to move disqualified rows there monthly to keep the active table clean
Tip: Name your ICP table specifically — 'SaaS RevOps Managers 50–500 employees' is better than 'Prospects'. When you build multiple ICP tables, specific names prevent confusion about which table feeds which Apollo sequence.
Step 2: Connect Apollo.io to Clay and Import Your First Prospect List
Apollo.io is your contact database. Clay has a native Apollo integration that lets you search Apollo's 275M+ contact database directly from inside a Clay table, without switching tabs or exporting CSVs. In Clay, click 'Add Rows' → 'Search from a source' → select 'Apollo.io'. You'll be prompted to connect your Apollo account via API key. In Apollo, go to Settings → API Keys → create a new key with 'Read' permissions, and paste it into Clay's Apollo integration panel. Once connected, define your search filters directly in Clay's Apollo search panel: Job Title (use broad terms — 'Sales Manager', 'VP Sales', 'Head of Sales' — and exclude 'SDR', 'BDR', 'Account Executive'), Industry (select 3–5 relevant verticals), Company Headcount (e.g., 50–500 employees), and Geography (your target market). Start with a search returning 200–500 results for your first test run — this keeps Clay credit consumption manageable while you validate the workflow. One of the most powerful and underused features of the Apollo-Clay integration is real-time sync. Rather than doing one-time imports, you can configure the Clay Apollo node to run on a schedule, automatically pulling new contacts as you adjust your ICP filters in Apollo. This means your Clay table stays live: as new companies raise funding, hire in relevant roles, or enter your target headcount range, they appear in Clay automatically for enrichment and outreach. Combined with n8n's daily schedule trigger, this creates a fully self-refreshing top-of-funnel pipeline that requires almost no manual management.
- Generate an Apollo.io API key in Settings → Integrations → API Keys
- In Clay, click 'Add Rows' → 'Search from a source' → Apollo.io
- Paste your Apollo API key and authorise the connection
- Set ICP filters: job titles, industries, headcount range, geography
- Run a test search returning 200–300 results and review the quality before importing
- Verify Apollo's email confidence score is ≥85% before importing — low-confidence addresses inflate bounce rates and damage your sending domain reputation.
- Use Apollo's 'Saved Search' feature to build dynamic lists that auto-refresh weekly, ensuring your pipeline always reflects the latest hires and company changes.
- Cross-reference Apollo company data with LinkedIn headcount changes: a team that grew 30%+ in 6 months signals expansion budget and new tool adoption cycles.
Tip: Use Apollo's 'Technology Used' filter to add a layer of ICP precision — targeting companies using Salesforce, HubSpot, or your category's specific tools dramatically improves qualification rates before you spend a single Clay credit on enrichment.
Step 3: Configure Clay's Multi-Provider Enrichment Waterfall
The waterfall is Clay's core value proposition. Instead of relying on a single data provider, Clay queries up to 150 providers in a priority sequence, stopping when it gets a verified result. This means you pay Clay credits only for successful lookups, and get the best available data across all providers for each field. For this workflow, configure waterfalls for four key fields: Verified Work Email (priority order: Apollo → Hunter.io → RocketReach → Clearbit), LinkedIn Profile URL (Apollo → Clay native scrape), Company Recent News (Clay native web scrape → news aggregators), and Company Tech Stack (BuiltWith → Clearbit → Clay scrape). To add a waterfall column in Clay: click the '+' to add a column → select 'Enrich' → choose 'Waterfall' → select 'Email' as the field type → add your providers in priority order. Clay shows you the cost in credits per row for each provider so you can optimise the waterfall for both quality and cost. For most teams, Apollo email lookup + Hunter.io fallback covers 85–90% of contacts. One crucial optimisation many teams miss: configure your waterfall to use Apollo's 'Work Email' field specifically, not their personal email. Apollo's database contains both professional and personal email addresses, and sending cold outreach to a prospect's Gmail or Hotmail account triggers significantly higher spam rates and dramatically lower reply rates. Work emails sent to corporate domains have higher deliverability, look more professional, and are more likely to reach the prospect during their working day. Always filter email results in your waterfall to prefer verified work email domains.
- Add a 'Verified Email' column using the Waterfall enrichment type with Apollo → Hunter.io → RocketReach priority order
- Add a 'Company News' column using Clay's web scrape enrichment targeting the company LinkedIn and news search
- Add a 'Tech Stack' column using BuiltWith integration to identify tools the prospect's company currently uses
- Add a 'Recent Funding' column using Crunchbase or Clay's news scrape to detect recent investment rounds
- Review waterfall cost estimates in Clay's column settings and adjust provider order to optimise credit spend
- Set Clay's enrichment waterfall priority order: LinkedIn → Apollo → Hunter.io → Clearbit → PeopleDataLabs. This sequence maximises match rate while minimising credit consumption.
- Enable Clay's 'enrichment fallback' flag so that if a primary data source returns null, the column automatically queries the next provider without manual intervention.
- Schedule a weekly Clay table refresh via the built-in cron trigger to keep firmographic data current — ideal for long-cycle deals where company context changes between touches.
Tip: Always enable 'Skip if already enriched' in waterfall settings. This prevents Clay from re-querying providers when you add new rows to an existing table, saving significant credits during ongoing campaign maintenance.
Step 4: Set Up Claygent to Research Each Prospect Automatically
Claygent is Clay's built-in AI research agent. It can browse the web, read LinkedIn profiles, analyse company websites, and extract structured information — all triggered automatically for each row in your table. For this workflow, Claygent is responsible for identifying the specific buying signal that will anchor each personalised email. Add a new column to your Clay table → select 'Claygent' as the enrichment type. In the prompt field, enter the research instruction. This is the single most important configuration in the entire workflow — the quality of your Claygent prompt determines the quality of every personalised email Claude API generates downstream. Use this exact prompt as your starting point: 'Research [First Name] [Last Name], [Title] at [Company Name]. Find: (1) Any LinkedIn post or activity in the last 90 days that signals a pain point related to sales or revenue growth. (2) Any company news in the last 60 days: funding, new product launch, hiring surge, or leadership change. (3) The company's primary sales motion (inbound, outbound, or hybrid) based on their website and job postings. Return a structured JSON with keys: recent_activity, company_news, sales_motion, signal_summary (1–2 sentences describing the most relevant outreach hook).' This prompt extracts actionable context in under 10 seconds per prospect. The Claygent output quality is directly correlated with how specific your prompt is about what counts as a relevant signal for YOUR specific offering. A generic Claygent prompt produces generic summaries that read as boilerplate. A precisely tuned prompt — one that tells Claygent exactly what pain points, triggers, and news items are relevant for your ICP — produces signal summaries that sound like insider knowledge. Take 30 minutes to review your best-performing manual outreach emails and identify what specific signals prompted you to write them. Then encode those exact signal types into your Claygent prompt explicitly. This single investment will do more for your reply rate than any other optimisation in this workflow.
- Add a 'Claygent Research' column to your Clay table using the Claygent enrichment type
- Paste the structured research prompt into the Claygent prompt field
- Map the Clay column references: replace [First Name], [Last Name], [Title], [Company Name] with Clay's column reference syntax (e.g., {{first_name}})
- Run Claygent on a test batch of 10 rows and review the JSON output quality
- Adjust the prompt if signal_summary is too generic — the most common issue is insufficient instruction on what 'relevant outreach hook' means for your ICP
- After your first 50 Claygent runs, export the signal_summary column and review it manually — look for 3–5 recurring patterns and encode them as explicit examples in the prompt
- Add a 'Signal Strength' scoring column (1–3) to manually rate Claygent outputs during the first week — this creates a feedback dataset for prompt refinement
- Test your Claygent prompt on 5 prospects you already know well — verify that the signal_summary matches what you'd write manually before deploying at scale
Tip: Keep Claygent prompts under 200 words and end with a structured output format request (JSON or numbered list). Open-ended prompts produce inconsistent outputs that are harder to pass cleanly to Claude API in the next step.
Step 5: Build the n8n Orchestration Workflow
n8n is the automation layer that connects all four tools. Your n8n workflow will: (1) run on a daily schedule, (2) pull new enriched and researched rows from Clay where Claygent has completed, (3) filter for qualified prospects, (4) trigger Claude API to generate personalised email copy, (5) push the final prospect record with email copy into Apollo.io for sequencing. Create a new workflow in n8n. Add a Schedule trigger set to run once daily at 07:00 (before business hours, so the first emails go out at the start of the working day). Add an HTTP Request node configured to call Clay's API and retrieve rows where the Claygent column is populated and the Qualified column is empty (i.e., new rows that haven't been evaluated yet). Clay's API endpoint for table rows is: GET https://api.clay.com/v1/tables/{TABLE_ID}/rows?filter=claygent_research.is_not_empty&filter=qualified.is_empty For authentication, use Clay's API key from your Clay account settings → API Keys. Add the key as a Bearer token in the n8n HTTP Request node's Authentication section. A key architectural decision in your n8n workflow is how to handle the case where Clay enrichment is incomplete — where Claygent ran but returned an empty or partial result for a specific row. Rather than skipping these rows entirely, configure a fallback branch: if Claygent's signal_summary is empty, route the row to a secondary Claude API call that generates a lower-personalisation email based on job title and company size alone. Mark these emails with a 'low_personalisation' flag in Clay, and track their reply rate separately. You'll typically see 8–12% reply rates on these vs. 18–22% for fully enriched rows — still far above the manual average.
- Create a new n8n workflow and add a Schedule trigger (daily at 07:00)
- Add an HTTP Request node to call the Clay API and retrieve newly enriched rows
- Configure Clay API authentication using a Bearer token from your Clay account settings
- Add a Split In Batches node set to process 25 rows at a time to avoid API rate limits
- Test the trigger manually to confirm it returns the correct rows from your Clay table
- Add a 'Mutual Connection' column to your Clay table: if you share a LinkedIn connection with the prospect, Claygent can draft an opener that references the mutual contact by name.
- Use Claygent to extract and summarise the prospect's most recent LinkedIn post — this gives SDRs an immediate conversation hook tied to content the prospect already cares about.
- Build a 'Pain Signal Score' composite field that sums weighted signals (recent funding +3, team growth +2, job posting match +2, tech stack fit +1) into a single priority number for your SDR queue.
Tip: Use n8n's 'Test Workflow' button with a manual trigger before activating the schedule. This lets you verify each node's output with real data before the automation runs live — catching errors that only appear with real Clay API responses.
Step 6: Connect Claude API in n8n for Email Personalisation
Claude API is the engine that writes the personalised email for each prospect. In n8n, add an HTTP Request node after the filtering step. Configure it as a POST request to https://api.anthropic.com/v1/messages. In the Headers section, add 'x-api-key' with your Anthropic API key (from console.anthropic.com → API Keys) and 'anthropic-version' set to '2023-06-01'. In the Body section, set Content-Type to 'application/json' and build the request body using n8n's expression editor. The model field should be 'claude-haiku-4-5-20251001' for cost efficiency at scale — Haiku produces excellent email personalisation at roughly 1/10th the cost of Sonnet. At typical SDR volumes (500–1,000 prospects/month), Haiku costs approximately $3–8/month for this use case. The max_tokens for each request should be set to 400 — enough for a complete personalised email body (subject line + opening paragraph + 2–3 body sentences + CTA) without generating excessively long outputs. Longer emails reduce reply rates. Token management is important for Claude API cost control at scale. At typical SDR volumes, the cost is negligible — but as you scale to multiple ICP tables running simultaneously, token costs can grow. Structure your n8n Claude API payload to pass only the specific fields Claude needs for personalisation, not the entire Clay row as a JSON blob. A targeted payload of 150–200 tokens per request costs approximately 5–10× less than passing a full row, with no impact on output quality since Claude only uses the personalisation context you provide anyway.
- Create an Anthropic account at console.anthropic.com and generate an API key
- Add an HTTP Request node in n8n after the qualifying filter
- Configure the node as POST to https://api.anthropic.com/v1/messages with the Anthropic API key as a header
- Set model to 'claude-haiku-4-5-20251001' and max_tokens to 400
- Use n8n's expression editor to map the Clay row data (prospect name, title, company, Claygent signal_summary) into the request body
- Create a dedicated Apollo sending domain (e.g., outreach.yourcompany.com) with DKIM, DMARC, and SPF fully configured before activating any sequence — deliverability setup is non-negotiable.
- Limit daily sends to 50 per mailbox during the first 4 weeks of domain warm-up; ramp by 25 emails per week until reaching your target volume to avoid spam folder placement.
- Use Apollo's A/B test feature on subject lines: run a 50/50 split for 72 hours, then automatically promote the winner to the remaining sequence recipients.
Tip: Add a Try/Catch error handler around the Claude API node in n8n. Occasionally the API returns a rate limit error (HTTP 429) — the error handler can catch this and add the failed prospect to a retry queue table in Airtable or a separate n8n waiting node, rather than silently dropping the record.
Step 7: Write the Claude Personalisation Prompt Template
The Claude prompt is the second most critical configuration in this workflow (after the Claygent research prompt). A well-structured prompt produces emails with 18–22% reply rates. A generic prompt produces emails that read like AI-generated templates and get ignored. Use this proven prompt structure in your n8n Claude API request body: 'You are a senior B2B sales copywriter. Write a personalised cold outreach email for the following prospect. Your goal: get a reply to schedule a 15-minute call. Tone: direct, specific, respectful of their time. No fluff, no superlatives. PROSPECT DATA: - Name: [{{first_name}} {{last_name}}] - Title: [{{title}}] - Company: [{{company_name}}] - Signal: [{{claygent_signal_summary}}] - Company size: [{{company_headcount}}] employees EMAIL REQUIREMENTS: - Subject line: reference the specific signal, max 8 words - Opening line (1 sentence): acknowledge the specific signal — mention something real they did or experienced - Problem statement (1–2 sentences): connect their signal to a common pain point for [their title] at [their company size] - Solution bridge (1 sentence): introduce our capability without being salesy - CTA (1 sentence): ask for a specific 15-min slot or a yes/no question - Total word count: 75–90 words maximum Return ONLY the email in this format: Subject: [subject] Body: [body]' — Map each bracketed field to the corresponding Clay column via n8n expressions. The 75–90 word ceiling on Claude-generated emails is the single most counterintuitive but empirically validated parameter in this entire workflow. Most salespeople instinctively want to include more context — tool benefits, social proof, pricing ranges. Every additional sentence reduces reply rates. The mechanism is simple: longer emails signal that the sender wants to pitch, not listen. Shorter emails signal confidence and respect for the recipient's time. Claude, if not constrained to a word limit, will write 150–200 word emails by default. The explicit word count constraint in the prompt is not optional — it is the difference between 22% and 8% reply rates.
- Copy the prompt template into n8n's expression editor for the Claude API request body
- Map each Clay column to the corresponding template variable using n8n expressions: {{$json.first_name}}, {{$json.title}}, etc.
- Map the Claygent signal_summary to {{$json.claygent_research.signal_summary}} — this is the key personalisation variable
- Set the word count constraint to 75–90 words — this is the single highest-impact parameter for reply rate optimisation
- Run the Claude node on 5 test rows and review the generated emails for specificity and naturalness before activating
- Save the Claude prompt as a versioned document (e.g., 'Claude Prompt v1 — May 2026') before making any changes — always increment the version when you modify it
- A/B test two prompt variants on equal batches of 100 prospects each — never change both the Claygent prompt and the Claude prompt simultaneously, as you won't know which change drove the performance difference
- Review 20 Claude-generated emails manually every Monday morning — look for any patterns of formulaic or generic outputs that have crept in as Claude's output varies slightly across runs
Tip: The signal_summary variable is responsible for 80% of the personalisation quality. If Claygent returns a weak or generic signal_summary, add a fallback: use an IF node in n8n to check if signal_summary contains fewer than 20 characters, and if so, substitute it with the company's most recent news item as the personalisation anchor instead.
Step 8: Build the Qualification Scoring and Filtering Logic
Not every enriched prospect should enter an outreach sequence. Running unqualified contacts through Apollo sequences wastes credits, harms your sender reputation, and pollutes your pipeline metrics. This step builds the scoring and filtering layer in n8n that routes only qualified prospects downstream. After the Claygent research and Claude API nodes, add an n8n Code node (JavaScript) that evaluates each prospect against 4 qualification criteria and assigns a score from 0–4: (1) Email verified = +1 point, (2) Claygent signal_summary is more than 30 characters (i.e., a real signal was found) = +1 point, (3) Company headcount is within your ICP range = +1 point, (4) Job title matches primary ICP titles (not a variation or seniority mismatch) = +1 point. Score ≥ 3 = qualified, proceed to Apollo. Score ≤ 2 = hold in Clay table with a 'Needs Review' flag for manual evaluation. This filter typically removes 15–25% of imported prospects — catching contacts with unverifiable emails, titles that are ICP-adjacent but not ideal, or companies where Claygent found no actionable signals. Every contact that passes this filter should have a personalised email that's genuinely relevant. That's the bar. Beyond the 4-point qualification score, consider adding one additional filter specific to your ICP that Clay's data makes easy to implement: tech stack compatibility. If your product requires or integrates with a specific technology (Salesforce, Shopify, HubSpot), add a check in your n8n Code node that filters for prospects at companies where BuiltWith confirmed that technology is installed. This single filter can reduce your outreach volume by 30–40% while increasing your reply-to-meeting conversion rate by the same amount, since you're only reaching prospects at companies that can technically use your product.
- Add a Code node in n8n after the Claude API node
- Write the 4-criteria scoring logic in JavaScript, assigning 0–4 points per prospect
- Add an IF node that routes score ≥ 3 to the 'Apollo sequence' branch and score ≤ 2 to a 'Needs Review' branch
- In the 'Needs Review' branch, add an HTTP Request node to update the Clay row with a 'Needs Review' flag via Clay's API
- Test the scoring logic with 20 rows and verify the qualification rate (target: 75–85% qualification rate with a well-defined ICP)
- Configure n8n's error handling node to route failed API calls to a Slack alert channel with the prospect name, step number, and raw error message — this prevents silent failures from accumulating.
- Add an n8n 'deduplication check' node before the Apollo sequence trigger: query Apollo's API to confirm the contact is not already active in another sequence before enrolling.
- Use n8n's 'Split in Batches' node to process Clay exports in groups of 25, adding a 2-second delay between batches to respect Apollo's API rate limits (10 requests/sec by default).
Tip: Log qualification failure reasons in a separate Clay column ('Disqualification Reason'). After your first 500 prospects, review this column to find systematic gaps in your ICP definition — for example, if 40% of failures are 'email not verified', your Apollo filters may be pulling too many recently changed roles.
Step 9: Create Your Apollo.io Outreach Sequences
Apollo Sequences are the multi-step follow-up campaigns that will deliver the emails Claude generated. A well-structured sequence for cold outreach at a B2B company in 2026 follows a 5-touch pattern over 14 days: Day 1 — personalised email (Claude-generated), Day 3 — LinkedIn connection request (manual or via LinkedIn automation), Day 5 — follow-up email (shorter, references Day 1), Day 8 — final email (different angle — try a different value proposition or lead with a case study), Day 14 — breakup email ('I'll stop reaching out after this — if timing changes, my calendar link is below'). In Apollo, go to Sequences → New Sequence. Name it with your ICP and date (e.g., 'SaaS RevOps 50-500 — May 2026'). Add the 5 steps above. For Day 1 (the Claude-generated email), you'll set up a variable that n8n populates from outside — the body content will be injected by your n8n workflow rather than written in Apollo. For steps 2–5, write the emails directly in Apollo — these can follow standard templates since they're follow-ups to the personalised opener. Set the sequence schedule to respect business hours only (Mon–Fri, 08:00–17:00 recipient local time) and add a 'Do not email' domain block for existing customers, competitors, and any domains on your exclusion list. Sequence timing has a larger impact on reply rates than most teams expect. In 2026, Tuesday through Thursday between 08:00 and 10:00 recipient local time consistently produces the highest open rates for B2B cold email — a 15–20% lift over Monday or Friday sending. Apollo's timezone-aware scheduling handles this automatically when you configure the sequence to send during business hours. However, also consider the Day 1 email specifically: if your Claygent signal references a LinkedIn post the prospect published, sending within 48 hours of that post dramatically increases reply rates. The timeliness of signal-based outreach matters as much as the personalisation quality.
- In Apollo, navigate to Sequences → New Sequence and name it with ICP and date
- Create Step 1 as an email with a placeholder body — this will be replaced by Claude's output via n8n
- Create Steps 2–5 as follow-up emails and LinkedIn steps with standard templates
- Configure sequence timing: Day 1, 3, 5, 8, 14 with business-hours-only sending
- Add domain exclusion list for existing customers, partners, and competitors
- Build a reply-classification sub-workflow in n8n that uses Claude API to label inbound replies as: Interested, Not Now, Wrong Person, or Unsubscribe — and routes each to the appropriate CRM stage automatically.
- For 'Not Now' replies, trigger a 90-day re-engagement sequence in Apollo that re-activates when Clay detects a new funding round or leadership change at the prospect's company.
- Set up a weekly n8n digest that pulls sequence performance metrics from Apollo's API and posts a formatted summary (sent / opened / replied / booked) to your team's Slack channel every Monday at 09:00.
Tip: Create separate sequences for different ICPs — never mix multiple ICPs in one sequence. Apollo's reply detection and bounce tracking operates at the sequence level, and mixing ICPs makes it impossible to correctly attribute performance differences to ICP fit vs. messaging quality.
Step 10: Route Qualified Prospects into Apollo Sequences via n8n
This is the final integration step: using n8n to push qualified prospects — complete with Claude-generated personalised email copy — directly into Apollo sequences without any manual action. Apollo's API endpoint for adding a contact to a sequence is: POST https://api.apollo.io/v1/emailer_campaigns/{SEQUENCE_ID}/add_contact_ids. However, for this workflow, it's cleaner to use Apollo's 'Add to Sequence' via the Contacts endpoint, which also creates the contact if they don't already exist in your Apollo account. In n8n, after the qualification IF node's 'qualified' branch, add an HTTP Request node configured as POST to https://api.apollo.io/v1/contacts with your Apollo API key as the Bearer token. The request body maps the Clay row fields (first_name, last_name, email, title, company_name, domain) to Apollo contact fields, and includes the sequence_id of the sequence you created in Step 9. Add the Claude-generated email to the first step of the sequence via Apollo's sequence_step_contact field. After successfully adding to Apollo, update the Clay row to mark Qualified = true and add the Apollo Contact ID for cross-reference. This creates a complete audit trail from enrichment to outreach. The Apollo Contact ID you write back to Clay in this step is more than a cross-reference field. It becomes the key that allows your n8n workflow to update Apollo records based on what you learn in Clay enrichment over time. If you later add a new enrichment to your Clay table — for example, detecting that a prospect's company just announced a product launch — you can trigger an n8n workflow that fetches the Apollo Contact ID from Clay, updates the prospect's Apollo record with the new information, and moves them to a higher-priority sequence segment. This creates a living, adaptive prospecting system rather than a static one-and-done import.
- Get your Apollo API key from Apollo Settings → API Keys → Create New Key
- In n8n's qualified branch, add an HTTP Request node posting to Apollo's contacts endpoint
- Map Clay row fields to Apollo contact fields using n8n expressions
- Include the sequence_id in the request body to automatically enrol the contact in the correct sequence
- Add an HTTP Request node to update the Clay row via Clay's API: set Qualified = true and store the Apollo Contact ID
- Before going live, test the full Clay→n8n→Claude→Apollo pipeline with 3 real prospects using n8n's manual trigger — verify that the Apollo contact record is created correctly and the personalised email appears in the sequence step
- Set up an n8n error notification: configure the workflow to send a Slack or email alert when any API call fails, so you know immediately if the pipeline breaks overnight
- Create a weekly n8n workflow that exports a summary of the week's qualified prospects, emails sent, and Apollo sequence enrollment counts to a Google Sheet for pipeline visibility reporting
Tip: Add deduplication logic before the Apollo API call. Before creating a new contact, query Apollo's contacts endpoint to check if an email already exists: GET https://api.apollo.io/v1/contacts/search?email={email}. If a record already exists, update it rather than creating a duplicate. Duplicate contacts in Apollo silently break sequence tracking.
Step 11: Launch Your First Campaign and Monitor Key Metrics
Before activating the n8n schedule for live sending, run a complete end-to-end test with 10 real prospects from your Clay table. Review every Claude-generated email manually — check that the signal_summary is specific and accurate, that the email subject references it naturally, and that the opening sentence reads as genuinely personalised rather than formulaic. Reject any emails where the personalisation feels forced or where the signal referenced is too generic ('I saw you work at a growing company'). Once the test batch clears quality review, activate the n8n schedule. In Apollo, monitor sequence performance daily for the first two weeks. The key metrics to watch: Open Rate (target: 45–60% for a well-configured sequence with verified emails), Reply Rate (target: 15–22% in the first campaign; if below 8%, the signal_summary quality is likely the bottleneck), Bounce Rate (target: under 3%; above 5% indicates email verification issues — recheck your Clay waterfall), and Meeting Booked Rate (typically 30–40% of positive replies convert to a booked call). If open rate is high (>45%) but reply rate is low (<8%), the emails are getting opened but the personalisation isn't resonating — review the Claude prompt and signal_summary quality. If open rate is low (<30%), the issue is subject line quality or sender reputation — check Apollo's spam score tool. One metric that most teams overlook in the first campaign review is reply sentiment analysis. Apollo categorises replies as 'positive', 'not now', 'not interested', and 'unsubscribe'. But within the 'positive' category, there is significant variance: some are meeting requests, some are 'tell me more' responses, and some are referrals ('not the right person, but you should talk to X'). Set up a simple tracking column in your Clay table to log reply type alongside the Claygent signal that triggered the email. After 100 replies, you'll have clear data on which signal types produce meeting requests directly (high intent) vs. referrals (lower intent but still valuable) — which should inform your ICP prioritisation.
- Run a 10-prospect test: review all Claude-generated emails manually before approving
- Activate n8n schedule and confirm the first batch processes correctly in Apollo
- Set up Apollo's sequence dashboard to monitor open rate, reply rate, and bounce rate
- Check metrics daily for the first 2 weeks; flag any metric outside target ranges
- Document performance baselines in a tracking sheet for iteration in Step 12
- Add a UTM-tagged Calendly link to Step 3 of your Apollo sequence so that demo bookings are automatically attributed to the specific sequence variant in your analytics dashboard.
- Use Apollo's 'Task' feature to create a manual LinkedIn touchpoint between email Steps 2 and 3 — a profile view + connection request from the SDR increases name recognition and lifts Step 3 reply rates by 8–12%.
- Sync Apollo stage changes to your CRM via Zapier or n8n: when a contact books a meeting, automatically move them to 'SQL' in HubSpot or Salesforce and trigger a CRM notification to the AE.
Tip: In Apollo, enable 'Track Email Opens' but disable 'Track Link Clicks' for cold outreach sequences. Click tracking adds a redirect URL to all links in your email, which some spam filters flag as suspicious. Open tracking via pixel is generally safe and provides sufficient signal for performance monitoring.
Step 12: Iterate, Optimise, and Scale the Workflow
Week 1 is a baseline. Weeks 2–4 are where the compounding begins. The Clay + Apollo + n8n stack is designed for rapid iteration: every component is separately adjustable, so you can improve signal quality, prompt quality, sequence structure, and ICP definition independently without rebuilding the entire workflow. After your first 200 prospects have completed Step 1 of the sequence, run an analysis by sorting your Apollo contacts by reply status and cross-referencing with the Claygent signal_summary in your Clay table. You'll typically find that 3–4 signal types drive 80% of positive replies. These are your power signals. Narrow your Claygent prompt to prioritise detecting these signals specifically, and update your ICP definition to source prospects more likely to exhibit them. For scaling: every week, add a new ICP segment as a separate Clay table feeding the same n8n workflow. A single n8n workflow can process multiple Clay tables — just add a second Schedule trigger or a router that queries multiple tables. As volume grows beyond 2,000 prospects/month, upgrade Clay to the Growth plan ($495/month) for increased credits and CRM sync, and upgrade n8n Cloud to Pro ($60/month) for higher execution limits. The per-prospect cost of the entire stack at scale is typically under $0.08 — compared to $4–8 in SDR hourly time cost for the same level of research and personalisation. The final piece of the iteration cycle is documentation. After each optimisation round, write a one-paragraph note in a shared document describing what you changed, why, and what impact it had. This takes 5 minutes and becomes invaluable when you onboard new team members, when you need to diagnose a performance drop months later, or when you want to replicate the workflow for a new product line. The Clay + Apollo + n8n stack is powerful precisely because every parameter is adjustable — but that adjustability creates technical debt if changes aren't documented. Treat your workflow documentation the same way good engineering teams treat their commit history.
- After 200 prospects complete Step 1, analyse reply data by signal type in Clay
- Identify the 3–4 signal types with the highest positive reply rates
- Update the Claygent prompt to prioritise detecting these high-performing signals
- Update Apollo ICP filters to source prospects more likely to exhibit these signals
- Add a second ICP segment as a new Clay table feeding the same n8n workflow
- Track 'sequence-to-pipeline' conversion, not just reply rate: a high reply rate with low pipeline contribution indicates your ICP targeting needs refinement, not your copywriting.
- Implement a 'signal decay' rule: if a prospect hasn't opened any email in 21 days, move them to a low-frequency nurture sequence (1 email/month) rather than continuing the primary cadence and burning deliverability credits.
- Run a quarterly ICP audit: compare closed-won characteristics (company size, industry, tech stack, trigger event) against your current Clay filter criteria, and update your Apollo saved searches accordingly.
Tip: Set a monthly 30-minute workflow review cadence. Review: (1) top-performing signals this month, (2) Claygent prompt vs. current signal quality, (3) Apollo sequence open/reply rates by step. Most teams find one small improvement per month — a tighter Claygent prompt, a stronger subject line formula, a better CTA — that compounds into significantly better performance over a quarter.
Real-World Use Cases
Use Case 1: B2B SaaS — 5-Person SDR Team
A 5-person SDR team at a 60-person SaaS company selling to Operations Managers at mid-market manufacturers implemented this stack in a single sprint. Before automation, each SDR prospected manually for 3–4 hours daily, generating roughly 20–30 personalised touchpoints per day across the team. After implementing Clay + Apollo + n8n + Claude API, the team's daily automated output was 150–200 personalised emails with genuine signal-based personalisation. The SDRs spent 45 minutes per day reviewing the previous day's replies and adjusting Claygent flags — the rest of their time shifted to demos and negotiation. Result: qualified meetings booked per month went from 18 to 67 in the first 60 days, with no increase in headcount.
5-person SaaS SDR team: from 18 to 67 qualified meetings per month in 60 days — same headcount, 3.7× output increase.
Use Case 2: Solo Founder — Professional Services
A solo founder running a B2B consulting firm targeting HR Directors at companies undergoing post-merger integration set up this workflow using n8n self-hosted (free) and Clay's Launch plan ($185/month). The founder's previous outreach was entirely manual — 5–10 emails per day at most. After setup, the workflow ran 50–80 personalised emails per day using post-merger integration news as the primary Claygent signal. Within 6 weeks, the founder had booked 12 qualified discovery calls from a pipeline of ~600 enriched prospects — a 2% booking rate from cold outreach that would have been essentially impossible to achieve manually at that volume. Total setup time: 4 hours. Monthly tool cost: under €250.
Use Case 3: RevOps Team — Enterprise Software
A RevOps team at a 200-person enterprise software company used this stack to solve a pipeline coverage gap: the sales team needed 3× more top-of-funnel activity without budget for additional SDR headcount. The RevOps team implemented Clay + Apollo + n8n and trained the Claygent prompt to detect tech stack signals (companies using legacy software in the same category as their product) and hiring signals (open roles for software categories their product addresses). This produced a highly specific ICP pool with strong signal alignment. The sequence saw a 24% reply rate in the first month — the highest the team had ever recorded for cold outreach — and generated enough pipeline to close the coverage gap without any new hires.
Use Case 4: E-commerce SaaS — International Expansion
A 30-person e-commerce SaaS company targeting Operations Directors at mid-sized online retailers in the UK and Germany used this stack to support their international expansion outreach. The challenge: their SDR team had no familiarity with the European market and no existing contact network. They used Apollo's geography and language filters to source prospects from target regions, Clay's BuiltWith enrichment to identify retailers using legacy e-commerce platforms (their primary ICP signal), and trained Claygent to detect localisation-related hiring — specifically job postings mentioning 'localisation', 'multi-currency', or 'EU compliance' — as their secondary buying signal. The Claude API prompt was adapted to write emails that referenced the specific platform the prospect was using and the specific localisation challenge that platform creates. Within 8 weeks, the team had booked 31 discovery calls across the UK and Germany — markets where they had zero existing relationships — at a 19% reply rate. The workflow ran without any SDR speaking German or having any prior UK retail industry knowledge.
30-person SaaS company, zero existing market presence: 31 discovery calls booked across UK and Germany in 8 weeks using signal-based localisation targeting — 19% reply rate with no prior market relationships.
Common Mistakes and How to Avoid Them
Mistake 1 — Skipping Claygent quality review before scaling: Teams that activate the full workflow without manually reviewing Claygent output on at least 50 rows first invariably find that 20–30% of signal_summaries are too generic to drive personalisation ('This person works in sales at a growing company'). Generic signals produce generic emails. Always run a manual quality check on Claygent output before sending the first email, and update the prompt if more than 10% of rows have weak signals.
Mistake 2 — Using Claude Sonnet instead of Haiku for email generation: Sonnet produces marginally better writing quality, but at 10× the cost and 3× the latency. For 75–90 word cold emails, Haiku's output is indistinguishable from Sonnet's to a recipient. At 1,000 emails/month, Sonnet would cost $80–150 vs. $3–8 for Haiku. Use Haiku for email generation; use Sonnet only for complex research or analysis tasks.
The #1 mistake: sending emails with generic signal_summaries. If Claygent returns 'works in sales at a growing tech company', that is not a signal — it's a description. Rebuild your Claygent prompt before sending a single email.
Mistake 3 — Not deduplicating before Apollo contact creation: Without a deduplication check, re-running the n8n workflow on a Clay table that already had rows processed will create duplicate contacts in Apollo and enrol them in sequences multiple times. This triggers Apollo's abuse detection, can get your sending domain flagged, and is extremely difficult to clean up retroactively. Always add the Apollo contact lookup check before creating new records. Mistake 4 — Setting Clay waterfall depth too deep: Using all 10 available email providers in a single waterfall increases credit cost significantly for contacts that Apollo alone would have enriched correctly. Start with a 2–3 provider waterfall, measure coverage, and only add deeper providers if coverage is below 80%. Most ICP targets at mid-market companies are well-covered by Apollo + one fallback provider. Mistake 5 — Not updating the Claygent prompt when reply rates drop: The most common cause of declining performance after an initial strong run is that the signals Claygent was detecting become less relevant as market conditions change. A post-Series B funding signal that worked well in Q1 may be less potent in Q3 if your market is saturated with outreach targeting recently-funded companies. Review and update the Claygent prompt every 4–6 weeks based on signal performance data.
Mistake 6 — Treating reply rate as the only success metric: Reply rate is a leading indicator, but the metric that actually matters is qualified meetings booked per SDR-equivalent hour spent. A workflow that generates a 25% reply rate but produces mostly 'not now' and 'not the right person' replies is less valuable than a 15% reply rate where 60% of replies convert to booked calls. Track your positive-reply-to-meeting conversion rate from day one — it will tell you far more about your ICP precision and sequence quality than raw reply rate alone. Mistake 7 — Neglecting Apollo sender reputation management: Your Apollo.io account is tied to your sending domain. If you send too many emails to addresses that bounce, too quickly, or with sequences that generate high unsubscribe rates, Apollo will throttle your sending speed and your domain will start appearing in spam folders. Keep bounce rates below 3%, warm up new sending domains for 2–3 weeks before high-volume campaigns using Apollo's warmup tool, and never add more than 150 new prospects to a sequence in a single day during the first month of operation.
Expected Results
Comparison of manual vs. automated prospecting based on typical implementations of this stack at B2B companies with 2–10 SDRs:
| Metric | Before | After |
|---|---|---|
| SDR spends 3–4 hours daily on prospect research and email writing | SDR spends 30–45 minutes daily reviewing AI-generated emails and replies | |
| 20–30 personalised touchpoints per SDR per day at full effort | 150–200 signal-based personalised emails per SDR equivalent per day | |
| Reply rate: 2–5% on manual cold email campaigns | Reply rate: 15–22% on AI-personalised signal-based sequences | |
| Qualified meetings per SDR per month: 8–15 | Qualified meetings per SDR per month: 40–67 (3–5× increase) | |
| Full team of 5 SDRs required for 50+ meetings/month | 1–2 SDRs with this stack match output of a 5–8 person manual team | |
| Setup overhead: ongoing manual effort, no leverage | Setup time: 3–5 hours once; automation then runs daily with minimal supervision |
Next Steps
Once your first ICP campaign is live and producing consistent results, the natural next step is to expand the stack. The most common extensions: (1) Add a LinkedIn automation layer — use a tool like Expandi or Lemlist to automate the LinkedIn connection request step in your Apollo sequence, turning Step 2 from a manual task to an automated one. (2) Build a CRM sync — use n8n to write qualified prospect data and reply status back to your HubSpot or Salesforce CRM automatically, keeping pipeline data consistent without manual entry. (3) Add intent data — integrate a tool like Bombora or G2 intent signals into your Clay enrichment waterfall, so that Claygent is working with real purchase-intent data rather than inferred signals alone. (4) Build a responder workflow — when Apollo detects a positive reply, trigger an n8n workflow that drafts a follow-up response using Claude, drawing on the original signal and the prospect's reply context, for SDR review and one-click sending.
Visit sityos.com for more AI automation implementation guides — new guide published every week covering the full stack from CRM automation to AI customer support.