Integration
ApolloApollo

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.

What Apollo owns

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.

What CampaignStack owns

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.

Side by side

Where each side attaches

What Apollo does alone, and what changes once the two are connected.

Apollo aloneWith CampaignStack
Email and phone revealReveal 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 dataIndustry, 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 listsLists 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.
SequencesApollo'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.
Setup

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. 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. 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. 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. 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 }
01 · The masked address

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.

02 · Rate limits

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.

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.