Loading tutorials…
Loading tutorials…
Apollo + CRM is where most B2B teams shoot themselves in the foot. Wrong sync direction, missing dedup, mapping mistakes — and within 30 days your CRM has 4,000 duplicate contacts. This walks the safe integration order.
Who this is forApollo users with an existing HubSpot or Salesforce instance, or planning to add one. Especially relevant if Apollo and CRM are both being used to track contacts and you suspect duplicates already.
What you'll need
Step 1
Apollo or CRM owns each field. Common pattern: CRM owns lifecycle stage, deal data, sales rep ownership; Apollo owns enrichment data (email, phone, title, company).
Write down the field ownership policy BEFORE clicking Connect. This is the document that prevents sync conflicts later.
CRM-owned fields (CRM wins on conflict): Lifecycle Stage, Lead Status, Sales Owner, Deal Stage, Opportunity Amount, Close Date, Notes added by sales rep, Custom fields specific to your sales process.
Apollo-owned fields (Apollo wins on conflict): Email (Apollo refreshes weekly), Phone (Apollo refreshes), Job Title (Apollo refreshes), Company Name, Company Size, Industry, Apollo enrichment data.
Shared fields (last-update-wins): First Name, Last Name. Both tools often have these.
Document the policy in a shared doc. Reference when setting field mapping in step 4. Without this, you will face daily decisions you have no framework to answer.
Step 2
Run dedup in CRM. Validate email formats. Remove obvious test contacts. Apollo will sync whatever you give it — clean inputs = clean integration.
In HubSpot: Contacts → "Find Duplicates" (HubSpot has native AI duplicate detection). Merge or delete obvious duplicates. Spend 1-2 hours minimum here.
In Salesforce: Setup → Duplicate Management → Duplicate Rules → run rule on Contact + Lead objects. Merge duplicates manually or via Apex script.
Validate email formats: Apollo will refuse to sync invalid-formatted emails. Filter CRM by "Email is invalid" and clean before sync.
Remove test contacts: any contact with @yourdomain.com, @test.com, fake names like "Test User," etc. These will sync into Apollo and pollute personas.
Tag old/cold contacts: anything not engaged in 12+ months. Decide whether to sync to Apollo (for re-enrichment) or exclude.
Skip this step at your peril. A 5,000-contact CRM with 800 duplicates becomes a 5,000-contact Apollo workspace with 800 duplicates and 4,000 wasted email credits in week 1.
Step 3
Apollo → Settings → CRM Integrations → HubSpot (or Salesforce). OAuth-connect via admin user. Choose sync direction.
Open Apollo → top right gear → "Integrations" → "HubSpot" (or "Salesforce").
Click "Connect." OAuth flow opens — log in to HubSpot/Salesforce with an Admin user (not a regular sales user — admin permissions needed for the API).
Authorize Apollo to read/write contacts, companies, and activities. Scope can be narrowed in HubSpot to specific objects.
Choose sync direction: Bi-directional (most teams), CRM → Apollo only (rare, used when CRM is sole source of truth), Apollo → CRM only (used for outbound-first teams who do not want CRM data polluting Apollo).
Bi-directional is the default. Field mapping (next step) determines per-field direction within bi-directional sync.
After connecting, Apollo runs an initial sync. For 5,000 contacts, expect 30-60 minutes. For 50,000+, several hours.
Step 4
Apollo → Integrations → HubSpot → Field Mapping. Map each Apollo field to a CRM field. Pick sync direction per field based on the source-of-truth policy from step 1.
Open the connected integration → "Field Mapping."
Apollo provides default mappings for common fields (Name, Email, Title, Company, Phone). Review every default — do not assume they match your policy.
For each field, choose: Apollo → CRM (Apollo overwrites CRM), CRM → Apollo (CRM overwrites Apollo), or Both (last-update-wins).
Critical custom mappings: HubSpot "Lifecycle Stage" should be CRM → Apollo only (CRM is source of truth for lifecycle). Apollo "Verified Email" → HubSpot "Email" should be Apollo → CRM (Apollo verifies weekly).
Custom fields: map any custom fields you depend on for sales process. HubSpot "Lead Source" custom field → Apollo "Source" (Apollo writes "Apollo Outbound" to populate source).
After mapping, run a small-batch test: sync 10 contacts manually. Verify each maps correctly in both directions. Fix mismatches before turning on full sync.
Step 5
Apollo → Integrations → HubSpot → Sync Settings → "Duplicate Handling." Match by Email (default), Domain, or custom rules.
Open Integrations → HubSpot → "Sync Settings."
Duplicate detection: Apollo defaults to matching by Email (case-insensitive). When Apollo creates a contact that matches an existing CRM email, it updates the existing record instead of creating a duplicate.
Verify dedup is ENABLED. Default is on for new integrations as of 2024, but older accounts may have it disabled.
For companies: dedup by Company Domain (acme.com). Apollo creates new companies only when no matching domain exists.
Edge cases: what if Apollo has john@acme.com and CRM has john@personal.com for the same person? Default dedup will not match. Use HubSpot Duplicate Management (or Salesforce Duplicate Rules) for cross-field matching after sync.
Test: create a test contact in CRM with email "test@example.com." Add the same email in Apollo. Sync. Verify they merged (not duplicated). If duplicated, dedup is misconfigured.
Step 6
Apollo → Integrations → HubSpot → Activity Sync. Enable email sync, call sync, meeting sync. Map to CRM activity types.
Open Integrations → HubSpot → "Activity Sync."
Email sync: every Apollo sequence email sent appears as a CRM Email activity on the contact timeline. Enables sales reps to see outbound history in CRM.
Call sync: Apollo Dialer calls appear as CRM Call activities. Outcome (Connected/Voicemail) and duration sync. If recording enabled, link to recording.
Meeting sync: Apollo Meetings bookings create CRM Meeting activities with time, location, attendees.
Reply sync: when a contact replies to an Apollo sequence email, the reply email content syncs as an Email activity (HubSpot only — Salesforce requires Inbox Sync separately).
Direction: activity sync is always Apollo → CRM (write only). Apollo does not pull CRM activities back.
Verify: send a test sequence email to a known contact. Check CRM 5 min later. Activity should appear on the contact timeline with subject, body preview, and sent timestamp.
Step 7
Daily: monitor sync error log. Weekly: dedup audit. Monthly: field mapping review. Quarterly: sync direction review.
Daily (5 min): Apollo → Integrations → HubSpot → Sync Log. Check for errors. Common errors: contact missing required field, API rate limit, permission lapse.
Weekly (15 min): run HubSpot Find Duplicates or Salesforce Duplicate Rules. Merge anything new. Sync creates new duplicates only when dedup is misconfigured; weekly catch keeps it contained.
Monthly (30 min): review field mapping. Did sales process change? Add new custom fields to map. Did Apollo add new fields? Map or explicitly ignore.
Quarterly (1 hour): full sync direction audit. As your data ops mature, sync direction policies may shift. Document changes. Re-validate with small-batch tests.
Annually: review whether bi-directional is still the right choice. Some teams move to Apollo → CRM only after CRM matures; others tighten field-level direction.
Common mistakes
Syncing without CRM dedup first
What goes wrong: Pre-existing CRM duplicates become Apollo duplicates. 5,000 CRM contacts with 800 duplicates become 5,000 Apollo contacts with 800 duplicates AND wasted email credits as Apollo enriches duplicate records. CRM and Apollo both polluted; cleanup is 20-40 hours.
How to avoid: Run CRM duplicate detection BEFORE first sync. Merge duplicates. Validate email formats. 1-2 hours upfront prevents 20-40 hours of cleanup.
No source-of-truth policy
What goes wrong: Apollo writes a stale email; CRM writes a fresher email; sync fights bi-directionally; field flips daily. Sales reps lose trust in both tools. Reports contradict. Manual reconciliation eats 5-10 hours/week of someone's time.
How to avoid: Document field ownership BEFORE configuring mappings. CRM owns sales-process fields; Apollo owns enrichment fields. Configure mappings to match.
Bi-directional sync without dedup enabled
What goes wrong: Every Apollo contact creates a new CRM contact (no email match check). Within 30 days you have 4,000 duplicate CRM contacts. Salesforce storage costs spike. Reports double-count. Marketing automation triggers fire twice per person.
How to avoid: Verify dedup is ENABLED in Apollo → Sync Settings → Duplicate Handling. Match by Email (case-insensitive). Test with intentional duplicate before scaling.
Mapping Lifecycle Stage Apollo → CRM
What goes wrong: Apollo defaults Lifecycle Stage to 'Lead' for every contact. If mapped Apollo → CRM, Apollo overwrites your CRM's MQL/SQL/Customer designations. Marketing operations break. Re-tagging takes 5-20 hours.
How to avoid: Map Lifecycle Stage as CRM → Apollo only. CRM owns lifecycle; Apollo reads it. Same rule for Lead Status, Deal Stage, Sales Owner.
Syncing without checking permissions
What goes wrong: Salesforce has field-level security restricting certain fields to specific user profiles. Apollo connects via the admin user but writes data; sales reps lack permission to see those fields. Apollo data appears to be there in Apollo but invisible in CRM.
How to avoid: Audit field-level security after sync. Adjust profiles or use a service account with broad permissions. Document which fields require special access.
Activity sync overwhelms CRM
What goes wrong: Apollo sequence sends 500 emails/day across 5 reps. All 500 sync to CRM as Email activities. Contact timelines become spam. Real sales activity (manual emails, calls) buried under sequence activity. Sales reps stop reading the timeline.
How to avoid: Filter activity sync: sync only Replies (not all sequence sends) OR sync sequence sends to a separate custom activity type that can be filtered in CRM views.
Recap
Done — what's next
How to set up an Apollo.io account the right way
Read the next tutorial
Hand it off
Apollo-CRM sync is where most B2B teams accidentally corrupt their CRM. The cost of cleanup (manual merge of 1,000-5,000 duplicate contacts) is 10-50 hours of operator time. The cost of getting the sync right upfront is 3-4 hours of a demand generation specialist. Math always favors the specialist. From $14-16/hr.
See specialist rates
Both is technically supported but rarely advisable. Pick one CRM as primary; sync Apollo to that. The other CRM should sync from the primary, not from Apollo directly. Multiple-source bi-directional sync creates field conflicts that are practically unsolvable.
Only if you configured the field mapping to allow Apollo → CRM direction on that field. Default mappings for common fields (Name, Email, Phone, Title) are usually safe (Apollo refreshes weekly, CRM was stale). But always review and explicitly set direction per field.
Yes. After connecting, Apollo lists all custom fields from the CRM and lets you map them to Apollo custom fields. You can create Apollo custom fields specifically to mirror CRM custom fields.
Apollo syncs to Salesforce Lead by default for new prospects. When a Lead is converted to Contact + Opportunity, Apollo's sync follows to the Contact. Convert workflow varies by org — verify with a test before relying on conversion behavior.
Yes — Apollo Integration Settings → "Sync Scope." Define which Apollo lists or personas sync to CRM (e.g., only "MQL-ready" persona). Prevents your prospecting database from flooding CRM with unqualified contacts.
Apollo.io
Apollo has the cheapest entry into B2B sales intelligence, but the default account configuration will silently torch your domain reputation. This walks the exact setup order that keeps your inbox warm and your credits efficient.
Apollo.io
Apollo's database is 275M+ contacts — meaningless without precision filters. This walks the persona builder, Boolean title logic, and the signal filters that separate qualified prospects from credit drain.
Apollo.io
Apollo Meetings replaces Calendly. Dialer replaces Aircall for outbound calling. Used together they collapse 3 tools into 1 — but only if the configuration is correct. This walks setup, round-robin, recording compliance, and CRM sync.
Apollo.io
DIY Apollo is a fine idea — until it isn't. This is the honest framework: when the cost of self-managing exceeds the cost of hiring, and how to tell which side you're on.