CampaignStack with Apollo: your credits, our workflow
Apollo is the database most agencies already pay for. Connect it with an API key and it does three jobs inside a CampaignStack workflow: reveal a lead's work email and phone as an enrichment step, fill in a company's firmographics, and import any saved Apollo list as leads to score and work. If the client insists on Apollo sequences for email, a step adds the lead to one of those too.
The contact data. Two hundred million people with a work email, a direct dial and a company record, searchable by title, headcount and technology, and a credit model the agency already budgets for. When a lead sourced on LinkedIn needs an address, Apollo's match on the LinkedIn URL is the highest-precision reveal there is, and the agency's own key means the agency's own price.
The reason the lead exists and what happens to it next. Apollo lists are static searches; CampaignStack sources on engagement, acceptance and replies, scores against the campaign's ICP, runs LinkedIn inside per-account budgets and puts every draft through a critic and a review queue. Apollo answers one question in the middle of that, who is this person's email, and the answer is written back under rules that never let a guessed address overwrite a real one.
Where each side attaches
What Apollo does alone, and what changes once the two are connected.
| Apollo alone | With CampaignStack | |
|---|---|---|
| Email and phone reveal | Reveal on a record in Apollo, export, upload elsewhere. | A contact enrichment step calls people match with the LinkedIn URL, name and company domain, parks the lead until Apollo's reveal callback arrives, writes the address and rescores. A lead with nothing to match on is routed not found without spending a credit. |
| Company data | Industry, headcount, founding year and location on the account record. | A company enrichment call fills only the fields still empty on the shared company record; first-party data is never overwritten, and no CampaignStack credits are charged. |
| Saved lists | Lists of up to tens of thousands of contacts, exported as CSV. | Import a list straight from Apollo, deduped by email and LinkedIn URL, optionally keeping only leads that match the campaign ICP, with progress you can poll. |
| Sequences | Apollo's own email sequences, sent from mailboxes connected to Apollo. | An add-to-sequence step adds the lead to an Apollo sequence from a mailbox you pick. Needs a master API key; a regular key is refused with a message that says so. |
Set it up
One API key from Apollo, one paste in CampaignStack, then the steps you want in the workflow. Everything is on your Apollo credits; CampaignStack charges only the enrichment step's own outcome price.
- 1
Create an API key in Apollo
In Apollo, open Settings, then Integrations, then API, and create a key. For enrichment and list import any key works. For sequences and mailbox listing Apollo requires a master API key, which only an account admin can create; tick that option if you want the sequence step.
- 2
Connect it in CampaignStack
Open the workspace, then Integrations, then Connect on the Apollo card, and paste the key. The connect validates the key and probes the people match endpoint, because Apollo keys are scoped per endpoint and a key that lists labels does not prove it can enrich. A key that lacks enrichment is named as such on the spot.
- 3
Add an enrichment step
In the workflow editor, add a Contact enrichment step before the first email send. The default cascade runs the CampaignStack Contact Finder first and Apollo second; reorder it, or leave only Apollo, in the step's provider list. Phone reveal is off by default and costs more on Apollo's side.
# The contact enrichment step, as the workflow stores it { "type": "enrich:contact_info", "config": { "providers": ["bettercontact", "apollo"], "revealEmail": true, "revealPhone": false } } # Providers run in order; the first real address ends the cascade. - 4
Import a list, or drive it from an agent
On the Integrations page, the Apollo card lists your saved lists and imports one with an optional ICP filter. The write-back rules below apply to every path, and every operation is also an MCP tool for Claude or any MCP client holding a user key.
fill-empty: an address is written only when the lead has none upgrade: the same address may move the status to verified replace: a different address replaces an existing one only if the new one is verified and the old one is not never: masked placeholders (email_not_unlocked@...) are never data campaignstack_connect_apollo { workspaceId, apiKey } campaignstack_list_apollo_sources { workspaceId } campaignstack_import_apollo_list { workspaceId, listId, onlyMatchingIcp: true } campaignstack_enrich_lead_contact_info { workspaceId, leadId, provider: "apollo" } campaignstack_enrich_company_info { workspaceId, companyId, provider: "apollo" } campaignstack_list_external_sequences { workspaceId, provider: "apollo" } campaignstack_add_lead_to_sequence { workspaceId, provider: "apollo", leadId, campaignId, emailAccountId }
An unlocked email is the only email
When a plan or its credits cannot reveal an address, Apollo returns a placeholder that looks like an email and is not one. Written to a lead, it would poison a shared record that other workspaces read, end the provider cascade early and charge for a result that is not one. The step treats a placeholder as credits exhausted, falls through to the next provider, and never stores it. A success always carries a real address.
A 429 defers the step, never the lead
Apollo rate-limits per key. When it does, the enrichment step defers as a whole, honouring Retry-After, and resumes in the same provider order; the lead is never failed and the cascade is never skipped. A revoked key flips the integration to an error state with a reconnect prompt and the cascade continues with the providers that still work.
Frequently asked questions
Which Apollo plan do I need?
API access with People Enrichment is on Apollo's paid plans; the credits are Apollo's. Check your plan's enrichment credits before wiring a large list, since every matched lead spends one.
Why does the Contact Finder run before Apollo by default?
It needs no key and charges only when it finds something, so a lead it resolves never spends an Apollo credit. Put Apollo first if your plan makes credits cheaper than that.
Does the sequence step send through Apollo?
Yes, from the Apollo mailbox you pick, on Apollo's schedule. CampaignStack's own email sending through a connected Gmail account is the alternative when you want the reply to route inside the same workflow.
Is there a comparison of the two?
Yes, at /vs/apollo, for the buyer still weighing the names. This page assumes you run both.
Every claim about the vendor on this page was checked against these pages on its own site:
Running something else next to it?
Get started
Start building your stack.
Your LinkedIn accounts will be safer with CampaignStack than doing it by hand. That's not a pitch. It's a measurable claim.