CampaignStack
Apollo to Instantly without CSV exports: step by step

Apollo to Instantly without CSV exports: step by step

CampaignStack15 min read

There are three ways to export Apollo leads to Instantly without a CSV. If your Apollo plan includes Workflows, use its Instantly action. If it doesn't, use a Zapier or Make recipe on Apollo's new-contact trigger. If you need full control over duplicates and blocklists, run the two APIs on a schedule.

Steps checked against Apollo's, Instantly's, Zapier's, Make's and n8n's own documentation, October 2026.

Why the CSV round trip hurts

Most "Apollo to Instantly" tutorials teach the same loop: export, clean, upload. Run it every week for five clients and it leaks.

The file is stale the moment you save it. A CSV is a snapshot. Anyone you add to the Apollo list after the export waits for next week's file.

Columns go missing. Apollo's own help center says that if a field isn't selected in your export settings, its column comes out blank, "even if data exists in Apollo." Email status is one of the fields you have to tick. Miss it and you can't tell verified addresses from guesses.

You pay twice to check the same email. Apollo charges 1 email credit for each net-new contact with a verified email. If the status column didn't make it into the file, the safe move is to verify again in Instantly, at 0.25 Instantly credits per lead.

Unsubscribes stay behind. Unsubscribed leads reach Instantly's blocklist through a toggle, and Instantly doesn't say whether it starts on (more below). Nothing tells Apollo, so the same person can land in next month's export.

Duplicates pile up. A CSV has no memory of who is already in a campaign.

Pick your route

Route Plan needed Stays up to date? Dedupe control Effort
Apollo Workflows (Instantly action) An Apollo plan with Workflows; Apollo doesn't say which tier. Instantly plan not stated by Apollo One way, each time the workflow runs. Nothing comes back to Apollo Apollo's re-enrollment setting ("only once"). Instantly skip options not stated by Apollo Low, all inside Apollo
Zapier Zapier plan for this pair not stated by Zapier. Paid Instantly plan for the API key One way, per new contact, with up to 30 minutes of delay. A second Zap can send events back "Ignore if lead exists in other campaigns" Low
Make Instantly Hypergrowth or above, according to Make. Apollo plan not stated by Make One way, on Apollo's new-contact watch Not stated by Make Low to medium
API or n8n Paid Apollo plan to read saved lists. Paid Instantly plan On your own schedule Full: skip by campaign or workspace, pick a blocklist, verify on import High, needs a technical teammate
CampaignStack (if you also run LinkedIn) Free on CampaignStack. Paid Apollo plan. Paid Instantly plan Apollo: no, a one-time import you repeat. Instantly: replies, bounces and unsubscribes come back Email and LinkedIn URL on import; "Skip leads already in Instantly" on push Low

Already paying for Clay? Its "Add Lead to campaign with Instantly" action works too, but it adds a third tool and a third bill.

Route 1: Apollo Workflows (the native Instantly action)

Apollo now lists Instantly as an action inside Workflows, with three things it can do: Add Leads to Campaign, Add Tags to Campaign and Update Lead Status. It is not in Apollo's integrations marketplace.

Some guides describe an "Export > Send to Instantly" button in Apollo. Neither Apollo's nor Instantly's documentation shows one today.

  1. Check you have Workflows. In Apollo, click Workflows. Apollo doesn't name the tier that includes it. An upgrade prompt means your plan doesn't.
  2. Save the people into an Apollo list. This is where the credits go: one per verified email for net-new contacts, nothing for contacts you already saved.
  3. Create the workflow. Click Workflows, then Create a workflow, then Start from scratch. Choose to run it on a trigger event, not a schedule.
  4. Pick the trigger. Apollo's help center says a workflow "can run when a contact is added to a list." Point that trigger at your list; the label in the app may differ.
  5. Add a filter on email status if you can. Apollo's docs don't name the condition, so look for an email status option and keep only Verified.
  6. Add the Instantly action. Choose Instantly, then Add Leads to Campaign. Apollo connects other tools through a service called Pipedream, so it will ask you to log in to Instantly. Pick the campaign and map at least the email, plus name and company if the action shows those fields.
  7. Set re-enrollment to once. Of Apollo's choices (every run, only once, once per time window), pick "only once" so nobody gets pushed twice. You can also cap how many people each run handles.
  8. Test with two contacts. Check they show up in the Instantly campaign before you turn it loose.

The catch: this is one way. Apollo lists no Instantly trigger, only actions, so replies, bounces and unsubscribes don't come back to Apollo.

Route 2: Zapier or Make on Apollo's new-contact trigger

Zapier has an official template called "Add new Apollo contacts to campaign leads in Instantly." This is the no-code route for anyone without Apollo Workflows.

  1. Create a Zap with the Apollo trigger "New Contact" and connect your Apollo account.
  2. Add a Filter step that only continues when the email status is verified. Find the status field in the trigger's sample data.
  3. Add the Instantly action "Add Lead to Campaign." Connect Instantly with an API key and pick the campaign.
  4. Map the fields. Email is required. Add first name, last name and company name. Use the custom variables box only for fields your email copy uses, like a job title.
  5. Turn on "Ignore if lead exists in other campaigns" if one person must never sit in two client campaigns at once. Check the exact wording in the Zap editor; we read it from Zapier's template page.
  6. Test, then publish. Expect a delay. Zapier says the trigger "may not always fire instantly" because Apollo verifies contact details first, which can take up to 30 minutes.
  7. Close the loop (optional). Build a second Zap: Instantly's "New Event" trigger into Apollo's "Update Contact" action, so a reply or unsubscribe gets marked in Apollo. Zapier's page doesn't list the event names, so check them in the editor.

On Make, the same recipe is Apollo's "Watch New Contacts" trigger into Instantly's "Add a Lead to a Campaign" module. Make says the Instantly connection needs an account on Hypergrowth or above to get the API key.

Route 3: A scheduled API job (or n8n)

Hand this one to a teammate who is comfortable with APIs. The field names below are the real ones.

  1. Get two keys. In Apollo, go to Settings > Integrations > API Keys. Apollo says API access "depends on your Apollo plan," so check yours there. In Instantly, open the Integrations page, find the API Keys section and click Create API Key. Give it permission to create leads (leads:create). Instantly's current API (v2) needs a new key. Old v1 keys don't work with it.
  2. Read your saved Apollo list. Call POST /api/v1/contacts/search with contact_label_ids set to the ID of your list (Apollo calls lists "labels" in this field). It returns 100 contacts per page and costs 0 credits. It only works on paid Apollo plans. Apollo's docs show a limit message of 600 calls per hour on this endpoint. Don't swap in Apollo's people search: it returns no email addresses.
  3. Drop anyone without an email or without a verified status.
  4. Push to Instantly in batches. Call POST /api/v2/leads/add with campaign_id (which campaign), up to 1,000 leads per call. Set skip_if_in_workspace: true to skip anyone already anywhere in that Instantly workspace. Watch the other flag: on this bulk call, skip_if_in_campaign skips anyone in any campaign, but on the single-lead call it means only that campaign. Add verify_leads_on_import: true if you want Instantly to check the emails, and blocklist_id if a client has its own blocklist.
  5. Log the counts that come back. Instantly returns how many leads were uploaded (leads_uploaded), blocked (in_blocklist), duplicated (duplicated_leads), invalid (invalid_email_count) and skipped (skipped_count).

Instantly allows 100 requests per second and 6,000 per minute per workspace. An hourly job won't come close.

On n8n, it's the same flow with a Schedule trigger, the Apollo node (Contact Search) and the Instantly node (Add Lead to Campaign). Neither node has a trigger, so n8n pulls on a timer.

Map Apollo fields to Instantly fields

Only email is required. Everything else is worth carrying only if your campaign copy uses it.

Apollo field Instantly lead field Notes
Email Email Required when adding to a campaign
First name First name
Last name Last name
Company name for emails (or Company name) Company name Apollo describes "Company name for emails" as often a cleaned version of the company name
Title Custom variable, for example "title" Only if your copy references it
Person linkedin url Custom variable, for example "linkedin" Instantly's lead docs list no LinkedIn field
Website or company domain Website
Mobile phone or Corporate phone Phone A mobile reveal costs 8 extra Apollo credits through the API
Email status Not an Instantly field Filter on it before you send, or let Instantly verify on import
Your own opening line Personalization Free text, one per lead
Industry, # employees, City Custom variable with your own name Each value must be plain text, a number, true/false or empty

That last rule trips people up. Instantly says: "We do NOT allow objects or arrays as values." A custom variable holds one value, so join a list of technologies into one line of text first.

Scenario: 500 Apollo contacts into one campaign

A made-up example: the volumes are invented, the unit costs are Apollo's and Instantly's own.

Say you build a list of 500 people for a client. 200 of them you saved in Apollo months ago. 300 are net-new from search. Of the 300 new ones, 240 have a verified email. Of the 200 old ones, 160 are verified.

On the Apollo side:

  • 200 already saved: 0 credits. Adding saved contacts to a list is free.
  • 300 net-new, 240 with a verified email: 240 email credits, one each.
  • Moving them to Instantly by Workflows, Zapier or the API: no Apollo credits. Reading saved contacts through the API is 0 credits.
  • If any of those 240 verified emails bounce within 30 days, Apollo refunds the credit.

On the Instantly side, you choose how much to verify:

Choice Leads sent Instantly credits
Verify all 500 on import 500 500 x 0.25 = 125
Send only the 400 Apollo-verified, skip Instantly verification 400 0
Send the 400 verified as they are, verify only the other 100 500 100 x 0.25 = 25

The third option is what you'd build with the API, or with two Zaps split on email status. It pays once per email instead of twice. It also trusts the 160 statuses Apollo gave months ago, and those are past Apollo's 30-day bounce refund. Verify them too and it's 260 x 0.25 = 65 credits. By default, Instantly doesn't contact leads that come back invalid or risky. You can allow risky ones under Settings > Advanced settings > Sending rules.

What breaks after the first push

Don't rely on "skip if already in campaign." In Instantly that setting means this campaign in one place and every campaign in another. Use the workspace-wide skip instead: "Skip if in workspace" in the API; the closest Zapier setting is "Ignore if lead exists in other campaigns." For agencies running several clients in one Instantly workspace, that is the one that stops cross-client overlap.

Unsubscribes need a toggle. Instantly's blocklist is workspace-wide and checks every import. Unsubscribed leads reach it through the "Unsubscribed leads" toggle under Blocklist > AI Blocklist Triggers. Instantly doesn't say whether it starts on, so check it. Then decide how Apollo hears about it, because none of these routes tells Apollo by default.

Webhooks need a higher plan. Instantly's help center says webhooks are "available on the Hyper Growth plan or above." Anything that waits for Instantly to report replies or unsubscribes needs that plan, or has to check Instantly on a timer instead. Zapier doesn't say whether its Instantly "New Event" trigger needs it. Check before you build the return Zap.

If you also run LinkedIn: CampaignStack

If the same people should also get a LinkedIn connection request or message, you're running two sequences on one person with no shared memory. That's the case CampaignStack covers.

  1. Connect both tools by API key in workspace settings, Integrations. The Instantly key needs the all:all scope and a paid Instantly plan. Both connections are on the free CampaignStack plan, and the Instantly steps in a workflow cost no CampaignStack credits.
  2. Import the Apollo list. In Leads page > Import > From Apollo, pick a saved list and, if you want, a campaign. It reads up to 50,000 contacts and dedupes on email and LinkedIn URL.
  3. Push to Instantly, one of two ways. For a one-off, open a lead list, click "Send to...", then pick Instantly and the campaign. Each send takes up to 300 leads. For ongoing work, add an "Add to Sequence" step to a workflow after the LinkedIn steps, pick the Instantly campaign, and turn on "Skip leads already in Instantly." Leads with no email are skipped and the workflow moves on. An "Enrich Contact Info" step before it can look up a work email first. That step is not free: it spends CampaignStack or provider credits, depending on the finder you pick.
  4. Results come back. Replies are recorded with a notification. Bounces tag the lead "email-bounced". Unsubscribes go on an "Instantly unsubscribes" list that keeps the person out of later workflows in that workspace. Without Instantly webhooks, an hourly check picks up replies, bounces and unsubscribes instead.

Now the limits, because you'll hit them:

  • It's an import, not a live link to Apollo. New contacts in your Apollo list arrive when you import again.
  • Only four fields go to Instantly: email, first name, last name and company name. Title, personalization line and custom variables stay behind.
  • Apollo's email status doesn't come across, so build the Apollo list from verified emails.
  • You need a paid Apollo plan, because the import reads saved lists.
  • A reply doesn't move the lead along in a CampaignStack workflow.
  • Every handoff to Instantly is checked against CampaignStack's platform-wide do-not-contact register. "Send to..." stops there and doesn't check your workspace's Exclusions. Workflows check both.
  • The Apollo source in a workflow only picks up imported leads that have a LinkedIn URL.
  • Nothing goes back to Apollo.

FAQ

Does Apollo integrate directly with Instantly?

Yes, inside Apollo Workflows. Instantly is an action there, with Add Leads to Campaign, Add Tags to Campaign and Update Lead Status. It is not listed in Apollo's integrations marketplace, and Apollo doesn't say which plan includes Workflows.

Can I send Apollo contacts to Instantly without Zapier?

Yes. Use Apollo Workflows' Instantly action, a scheduled job on both APIs, an n8n flow with the Apollo and Instantly nodes, or a tool that holds both API keys.

Do I spend Apollo credits when I move contacts to Instantly?

No. Apollo charges 1 email credit when a net-new contact with a verified email is saved to a list. Moving already-saved contacts costs nothing on the Apollo side, and the credit is refunded if that email bounces within 30 days.

How do I stop duplicates in Instantly?

Skip leads already in the workspace. In the API that's "skip if in workspace", which skips anyone in any campaign or list. In Zapier it's "Ignore if lead exists in other campaigns."

Should I verify Apollo emails again in Instantly?

Not if Apollo verified them recently and you kept that status. Send only verified emails, or verify the rest on import at 0.25 Instantly credits per lead. Instantly doesn't contact invalid or risky leads by default.

Do unsubscribes from Instantly sync back to Apollo?

Not on their own. Switch on the "Unsubscribed leads" toggle under Blocklist > AI Blocklist Triggers in Instantly, then add a return step, such as a Zap from Instantly's "New Event" to Apollo's "Update Contact."

Which Instantly plan do I need for the API?

A paid plan. Instantly's blog and Make's page name different tiers, so check your own account. Webhooks need Hypergrowth or above, according to Instantly's help center.

How fast does a new Apollo contact reach Instantly?

With Zapier, up to 30 minutes, because Apollo verifies the contact before the trigger fires. With a scheduled API job or n8n, as often as you schedule it.

Takeaway

Stop exporting CSVs. If your Apollo plan has Workflows, start there; if not, set up the Zapier template this week. Whichever you pick, switch on Instantly's unsubscribe blocklist toggle and workspace-wide skipping before the first push.

Sources

  1. apps.make.com/apollo
  2. apps.make.com/instantly
  3. developer.instantly.ai/api-reference/introduction.md
  4. developer.instantly.ai/api-reference/lead/add-leads-in-bulk-to-a-campaign-or-lis
  5. developer.instantly.ai/api-reference/lead/create-lead.md
  6. developer.instantly.ai/getting-started/getting-started.md
  7. developer.instantly.ai/getting-started/rate-limit.md
  8. docs.apollo.io/docs/create-api-key
  9. docs.apollo.io/reference/people-api-search.md
  10. docs.apollo.io/reference/people-enrichment.md
  11. docs.apollo.io/reference/search-for-contacts.md
  12. help.instantly.ai/en/articles/6192983-global-blocklist
  13. help.instantly.ai/en/articles/6261906-how-to-use-webhooks
  14. help.instantly.ai/en/articles/8587347-email-verification
  15. help.instantly.ai/en/articles/9823387-ai-blocklist-triggers
  16. instantly.ai/blog/api-webhooks-custom-integrations-for-outreach/
  17. knowledge.apollo.io/hc/en-us/articles/14296116597901-Workflows-Overview
  18. knowledge.apollo.io/hc/en-us/articles/4409237712141-Export-Contacts-to-a-CSV
  19. knowledge.apollo.io/hc/en-us/articles/4409728608525-Create-and-Use-a-List
  20. knowledge.apollo.io/hc/en-us/articles/4413804036109-Create-a-Workflow
  21. knowledge.apollo.io/hc/en-us/articles/4423314404621-Understand-Email-Statuses
  22. knowledge.apollo.io/hc/en-us/articles/46233304897933-Workflow-Integrations-and-A
  23. n8n.io/integrations/apollo/
  24. n8n.io/integrations/instantly/
  25. apollo.io/pricing