Apollo.io
Creates or updates Apollo.io contacts server-side through the Create a Contact API with run_dedupe, from high-intent lead events.
Why route Apollo.io through Datafly Signal
- Profiles are updated from the server, not the browser. Events reach Apollo.io even when a tracker blocker or a failed page unload would have dropped a client-side call, so the profile reflects what actually happened.
- One consent decision governs every destination. Apollo.io is gated by the same consent state as the rest of your stack, so a withdrawal applies everywhere at once.
Prerequisites
Create an API key
In Apollo, open Settings > Integrations > API Keys and create a key with the Create a Contact endpoint enabled (or a master key). Apollo takes the key only in the X-Api-Key header.
Optional: create a list
Contacts can be added to an Apollo list (label). Create it in Apollo and enter its name in Apollo list.
Configuration
| Field | Type | Required | Description |
|---|---|---|---|
api_key | secret | Yes | Apollo API key with the “Create a Contact” endpoint enabled. Create it in Apollo under Settings > Integrations > API Keys. Keys are scoped per-endpoint, so make sure Create a Contact is selected. Sent in the X-Api-Key header. |
contact_list | text | No | Optional. The Apollo list (label) each contact is added to, sent as label_names. Leave empty to add contacts to no list. |
Signal setup
- Navigate to Integrations in the sidebar and open the Integration Library tab.
- Find Apollo.io, click Install and fill in the fields above.
- Pick the preset for your use, then review the mappings in the blueprint editor.
API endpoint
POST https://api.apollo.io/api/v1/contacts
X-Api-Key: {api_key}Example request:
{"email": "jane.doe@example.com", "first_name": "Jane", "last_name": "Doe", "organization_name": "Acme Ltd",
"title": "CTO", "mobile_phone": "+447700900123", "website_url": "https://acme.example",
"label_names": ["Website leads"], "run_dedupe": true}The presets turn on the strict output contract: only the fields the blueprint maps are sent.
Event mapping
Default preset (default)
B2B lead capture: Lead Generated, Demo Requested, Signed Up and Content Downloaded create or update (run_dedupe) an Apollo contact with the identify traits: email, first and last name, company, title, phone (E.164) and website, plus the list named in the integration settings. Email and phone are sent in plain text: Apollo matches the contact on the email and a sales team works from it. Sent only for visitors with an email and marketing consent; every other event is dropped.
| Signal event | Sent to the vendor as | Enabled |
|---|---|---|
generate_lead | create_contact | yes |
demo_requested | create_contact | yes |
sign_up | create_contact | yes |
content_downloaded | create_contact | yes |
Identity and personal data
The contact comes from the identify traits: email (trimmed, lower-cased), first and last name, company, title, phone (E.164) and website. Email and phone are sent in plain text: Apollo is a CRM that matches the contact on the email (run_dedupe updates the existing contact) and a sales team works from it. Apollo requires no field; the integration sends only visitors with an email.
Consent
Contacts are sent only when the visitor has granted marketing consent (the canonical marketing flag); otherwise the event is dropped. Map the integration to the consent category your organisation uses for CRM or sales data. Signal does not write cookie consent into the CRM: no subscription status, do-not-disturb flag, list or tag is set from it, because a cookie banner choice is not a permission to email or call someone.
Known limitations
- Apollo’s rate limits depend on the plan (200 requests a minute on paid plans for standard endpoints); a
429is retried. run_dedupeis alwaystrue, so a repeat event updates the matching contact (email first) instead of creating another, whatever an integration installed before the Deduplicate contacts setting was removed saved for it. Fields sent overwrite the stored values, includinglabel_nameswhen an Apollo list is set.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
401 / 403 | The key is wrong or not enabled for Create a Contact. |
| Nothing sent | No email trait, or no marketing consent: both are required. |