Apollo to Instantly.ai, launches faster outreach
Building outbound lists is tedious. You find leads in Apollo, export, clean the file, chase duplicates, research companies, write “personalized” emails, then still have to upload everything into Instantly.ai.
This Apollo Instantly automation hits hardest when you’re the person responsible for pipeline. A marketing manager needs volume without trash data. An agency owner needs repeatable campaigns across clients. A solo founder just wants campaigns out the door without losing a full afternoon.
This workflow turns targeting inputs into a ready-to-send Instantly.ai campaign, with deduped leads and AI-written cold emails that actually reference the company. You’ll see what it does, what you need, and the real-world time it saves.
How This Automation Works
The full n8n workflow, from trigger to final output:
n8n Workflow Template: Apollo to Instantly.ai, launches faster outreach
flowchart LR
subgraph sg0["On form submission Flow"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Add to Google Sheet", pos: "b", h: 48 }
n1["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>On form submission"]
n2@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Apollo URL Generator", pos: "b", h: 48 }
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Run Apify"]
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model1", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Parse Lead Data", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model2", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If1", pos: "b", h: 48 }
n10@{ icon: "mdi:cog", form: "rounded", label: "Limit1", pos: "b", h: 48 }
n11@{ icon: "mdi:swap-vertical", form: "rounded", label: "Loop Over Items", pos: "b", h: 48 }
n12@{ icon: "mdi:database", form: "rounded", label: "Add Company Info to Google S..", pos: "b", h: 48 }
n13@{ icon: "mdi:robot", form: "rounded", label: "Structured Output Parser1", pos: "b", h: 48 }
n14@{ icon: "mdi:brain", form: "rounded", label: "OpenAI Chat Model3", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Generate Outreach Message", pos: "b", h: 48 }
n16@{ icon: "mdi:robot", form: "rounded", label: "Company Research", pos: "b", h: 48 }
n17["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Add Lead to Instantly AI"]
n18@{ icon: "mdi:cog", form: "rounded", label: "Tavily", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter", pos: "b", h: 48 }
n9 --> n19
n19 --> n0
n10 --> n11
n18 -.-> n16
n4 --> n7
n11 --> n16
n7 --> n9
n16 --> n15
n2 -.-> n3
n1 --> n3
n5 -.-> n7
n8 -.-> n16
n14 -.-> n15
n0 --> n10
n3 --> n4
n17 --> n11
n6 -.-> n7
n15 --> n12
n13 -.-> n16
n12 --> n17
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n1 trigger
class n3,n6,n7,n13,n15,n16 ai
class n2,n5,n8,n14 aiModel
class n9,n19 decision
class n0,n12 database
class n4,n17 api
classDef customIcon fill:none,stroke:none
class n1,n4,n17 customIcon
The Problem: Outbound campaigns die in the “middle work”
The hard part of outbound is not clicking “search” in Apollo. It’s everything after. You export a list, then realize half the emails are risky, the same lead is already in another sheet, and your “personalized” email is basically a template with the company name swapped. Meanwhile, your campaign tool is waiting. So your launch slips. And because you’re rushing, mistakes sneak in: duplicates get messaged twice, wrong industries get targeted, and your reply rates tank for reasons you can’t even diagnose.
The friction compounds. Here’s where it breaks down most often.
- List cleaning becomes a recurring chore, and it steals about 2 hours every time you build a new segment.
- Manual research is inconsistent, so some prospects get thoughtful context while others get generic fluff.
- Duplicates creep in across campaigns and client accounts, which means you burn domains and annoy good leads.
- Instability in the handoff (CSV exports, uploads, field mapping) causes delays and silent failures.
The Solution: Apollo targeting → researched leads → Instantly campaign
This workflow starts with a simple n8n form submission where you enter targeting criteria like job title, keywords, location, company size, and a campaign ID. From that input, AI generates a structured Apollo search URL so the targeting is consistent and repeatable (especially handy when different people build lists). n8n then triggers an Apify Apollo Scraper run via HTTP request, pulls back lead records, and runs them through AI cleanup so names, roles, and company fields are normalized. Next, it filters for valid emails, dedupes against your Google Sheet, and enriches each company using Tavily research. Finally, it synthesizes that research into a usable summary and generates a tailored cold email, then pushes the lead plus message straight into your Instantly.ai campaign.
The workflow begins when you submit your targeting form. It scrapes and cleans lead data, loops through each record to research the company, drafts outreach copy, then sends everything to Instantly.ai while logging the details in Google Sheets.
What You Get: Automation vs. Results
| What This Workflow Automates | Results You’ll Get |
|---|---|
|
|
Example: What This Looks Like
Say you launch two outbound campaigns per week with 150 leads each. Manually, it’s easy to spend about 2 minutes per lead between cleanup, quick research, and getting the data into Instantly.ai, which is roughly 10 hours a week. With this workflow, you spend about 10 minutes filling the targeting form, then let n8n scrape, dedupe, research, and generate emails while it loops through the list. You’ll still spot-check, but you’re no longer doing 300 tiny tasks by hand.
What You’ll Need
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Apollo to define lead targeting and search criteria.
- Apify to scrape Apollo results reliably.
- Instantly.ai to load leads into campaigns.
- Google Sheets for dedupe and tracking.
- OpenAI API key (get it from your OpenAI dashboard).
- Tavily API key (get it from your Tavily account settings).
Skill level: Intermediate. You’ll connect accounts, add API keys, and tweak a couple prompts and field mappings.
Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).
How It Works
A form submission kicks everything off. You enter job titles, keywords, location, company size, and the Instantly campaign ID you want to populate. Clean inputs here make the whole system behave.
AI turns your criteria into a structured Apollo search. The workflow uses an OpenAI chat model to build a consistent Apollo search URL, then calls Apify through an HTTP request to scrape leads from that query.
Leads get cleaned, filtered, and deduped. n8n parses the payload into a structured format, checks for errors, filters out invalid emails, and updates Google Sheets so you don’t keep messaging the same person across runs.
Research + outreach is generated per lead, then delivered to Instantly.ai. A Tavily-powered research agent pulls company context (site info, recent posts, third-party sentiment), the workflow drafts a cold email using that context, logs details back to Sheets, and pushes the lead plus message into Instantly.ai. It keeps looping in batches until the campaign is populated.
You can easily modify the research depth to match your market and inbox reputation. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Trigger
Set up the intake form that launches the lead enrichment flow and feeds the Apollo URL builder.
- Add and open Form Submission Trigger.
- Set Form Title to
Apollo + Apify Lead Generation. - Set Form Description to
Describe the types of leads you are trying to find.. - Confirm the form fields include Job Title, Company Size (dropdown), Keywords, Location, and Instantly Campaign ID.
- Connect Form Submission Trigger to Apollo Search URL Builder to start the flow.
Step 2: Connect Google Sheets
Store parsed lead data and company intelligence back into your spreadsheet.
- Open Update Spreadsheet Lead and set Operation to
appendOrUpdate. - Select Document
Apify + Apollo + n8nand SheetSheet1. - Map columns using the provided expressions, for example Email to
{{ $json.output.email }}and Full Name to{{ $json.output.fullName }}. - Ensure Matching Columns includes
Full Namefor upserts. - Open Append Company Details and set Operation to
appendOrUpdatewith the same document and sheet. - Map company fields like Company Summary to
{{ $('Company Intelligence').item.json.output.comprehensiveSummary }}and Outreach Message to{{ $json.text }}, then set Matching Columns toEmail.
Credential Required: Connect your Google Sheets credentials to both Update Spreadsheet Lead and Append Company Details.
Step 3: Set Up URL Building, Scraping, and Lead Parsing
Generate an Apollo search URL, scrape leads via Apify, and structure the lead data with AI.
- Open OpenAI Chat Engine and select model
gpt-4.1. - In Apollo Search URL Builder, set Text to
Job Title: {{ $json['Job Title'] }} ... Location: {{ $json.Location }}(use the full multi-line expression from the node). - Confirm Apollo Search URL Builder is connected to OpenAI Chat Engine as its language model.
- Open Execute Apify Scrape and set URL to
https://api.apify.com/v2/acts/jljBwyyQakqrL1wae/run-sync-get-dataset-items. - Set JSON Body to
{"getPersonalEmails": true, "getWorkEmails": true, "totalRecords": 500, "url": "{{ $json.text }}"}and keep Method asPOST. - Open Interpret Lead Payload and keep the Text expression that maps fields like
{{ $json.name }},{{ $json.email }}, and{{ $json.organization_name }}. - Ensure OpenAI Mini Engine A is connected as the language model for Interpret Lead Payload, and Structured Result Parser is connected as its output parser.
- In Error Check Gate, confirm the condition uses
{{ $json.error }}with Operation set tonotExists, then route to Filter Valid Emails. - In Filter Valid Emails, keep both conditions verifying
{{ $json.output.email }}is not"null"and not empty.
Credential Required: Connect your OpenAI credentials to OpenAI Chat Engine and OpenAI Mini Engine A. The Structured Result Parser is a sub-node; add credentials to the parent AI nodes instead.
Credential Required: Add an Apify token in Execute Apify Scrape under Header Parameters where the Authorization value is Bearer [CONFIGURE_YOUR_TOKEN].
Step 4: Configure Batching and Company Intelligence Enrichment
Limit volume, iterate through leads, and enrich companies using Tavily-powered research.
- Open Cap Items and set Max Items to
10. - Connect Update Spreadsheet Lead to Cap Items, then to Iterate Records.
- Open Company Intelligence and keep the Text expression mapping
{{ $json["Company Name"] }},{{ $json["Company Website"] }}, and{{ $json["Company LinkedIn"] }}. - Ensure OpenAI Mini Engine B is connected as the language model for Company Intelligence.
- Verify Tavily Search Tool is attached to Company Intelligence as the only tool.
- Confirm Company Output Parser is connected as the output parser for Company Intelligence.
Credential Required: Connect your OpenAI credentials to OpenAI Mini Engine B.
Credential Required: Connect your Tavily credentials to the parent node Company Intelligence (not to Tavily Search Tool directly).
Step 5: Configure Outreach Drafting and Delivery
Generate personalized outreach copy and send the lead to Instantly with custom variables.
- Open Draft Outreach Copy and keep the Text expression that combines
{{ $('Iterate Records').item.json["Full Name"] }},{{ $('Iterate Records').item.json["Personal Summary"] }}, and{{ $json.output.comprehensiveSummary }}. - Ensure OpenAI Mini Engine C is connected as the language model for Draft Outreach Copy.
- Connect Draft Outreach Copy to Append Company Details.
- Open Send Lead to Instantly and set the JSON Body to use the existing expressions, such as
{{ $('Form Submission Trigger').item.json["Instantly Campaign ID"] }},{{ $json.Email }}, and{{ $('Draft Outreach Copy').item.json.text }}. - Keep headers in Send Lead to Instantly, including Authorization set to
Bearer [CONFIGURE_YOUR_TOKEN]and Content-Type set toapplication/json.
Credential Required: Connect your OpenAI credentials to OpenAI Mini Engine C.
Credential Required: Add your Instantly API token in Send Lead to Instantly under Header Parameters.
Step 6: Test and Activate Your Workflow
Validate the full path from form submission to enrichment and outbound delivery.
- Click Execute Workflow and submit a test entry in Form Submission Trigger.
- Confirm Apollo Search URL Builder outputs a valid Apollo URL and Execute Apify Scrape returns lead data.
- Verify Update Spreadsheet Lead and Append Company Details add or update rows in
Sheet1. - Check Send Lead to Instantly for a successful API response and that leads appear in the correct campaign.
- When testing is complete, switch the workflow to Active to accept production form submissions.
Common Gotchas
- Apify credentials can expire or need specific permissions. If things break, check your Apify token and actor access in your Apify account first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Frequently Asked Questions
About 45 minutes if you already have your API keys.
No. You’ll mostly connect accounts and paste API keys. The only “technical” part is mapping a few fields to match your Google Sheet and Instantly.ai campaign.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI and Tavily API usage, which depends on how many leads you process and how long your prompts are.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Yes, and you should. You can adjust the company research behavior in the Company Intelligence agent and the Tavily Search Tool, then change the tone and structure in the Draft Outreach Copy step so emails match your brand. Common tweaks include shorter research for high-volume lists, a stricter “no generic compliments” rule in the prompt, and different copy angles for different campaign IDs.
Usually it’s an expired Apify token or the actor permissions changed. Update the token used in the HTTP Request that runs the scrape, then confirm your Apify plan and actor limits aren’t blocking runs. If it fails only on bigger lists, you may also be hitting rate limits or timeouts, so reduce batch sizes and let the loop run longer.
It can handle thousands of leads, but your real limits come from n8n execution volume, Apify run limits, and how much AI research you choose to do per lead.
For this use case, n8n is usually the better fit because the workflow needs looping, dedupe checks, and conditional gates as it processes batches. You also get more control over how the AI prompts run and how outputs are parsed into structured fields. Zapier or Make can work for simpler “export → upload” flows, but it gets clunky once you add scraping, enrichment, and per-lead research. Honestly, the biggest difference is cost once volume grows, since n8n can be self-hosted. Talk to an automation expert if you want help choosing.
This is the kind of workflow that makes outbound feel “light” again. Set it up once, then spend your time on offers, follow-up strategy, and calls instead of spreadsheet triage.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.