Apollo.io is an all-in-one sales intelligence and engagement platform with a database of over 275 million contacts. It combines prospecting,…
Full ReviewThe world's leading cloud-based CRM platform powering sales, service, and marketing for businesses of all sizes.
Full ReviewApollo.io is one of the most powerful B2B prospecting and sales intelligence platforms available, with a database of over 270 million contacts. Salesforce is the world's leading CRM. Together, they create a seamless pipeline from prospecting to closed-won — Apollo handles lead discovery, enrichment, and outbound sequencing, while Salesforce manages the deal cycle, reporting, and customer relationships.
This integration is essential for SDR/BDR teams, sales managers, and revenue operations professionals who need to ensure that prospecting activity in Apollo flows cleanly into Salesforce without duplicate records or lost data. If your team is running outbound campaigns in Apollo but managing pipeline in Salesforce, this integration eliminates the manual data entry that slows reps down and creates CRM hygiene issues.
The Apollo.io-Salesforce integration creates a bidirectional data bridge between your prospecting engine and your CRM. Here is what it enables:
Apollo.io offers a native, first-party Salesforce integration that is available on Apollo's Basic plan and above. This is the recommended approach for most teams. Here is how the options compare:
| Method | Best For | Limitations |
|---|---|---|
| Native integration (recommended) | Most teams; provides the deepest integration with bidirectional sync, activity logging, and duplicate detection | Requires Apollo Basic plan or higher; some advanced field mapping requires Professional plan |
| Zapier | Simple one-directional pushes or triggering specific workflows | No bidirectional sync; limited to trigger-action pairs; can become expensive at high volumes |
| Make (Integromat) | Complex multi-step workflows involving other tools beyond Apollo and Salesforce | Requires technical setup; no native duplicate detection |
| Apollo API + Salesforce API | Highly custom requirements such as custom object sync or non-standard field logic | Requires developer resources; ongoing maintenance burden |
For the vast majority of use cases, the native integration is the right choice. It handles duplicate detection, field mapping, and activity logging out of the box.
Before connecting, make sure you have:
Log in to Apollo.io. Navigate to Settings (gear icon) and then select Integrations from the left sidebar. Find Salesforce in the CRM section and click Connect. Apollo will redirect you to Salesforce's OAuth authorization screen. Sign in with your Salesforce credentials and click Allow to grant Apollo the required permissions.
It is best practice to create a dedicated Salesforce integration user for this connection. This avoids disruption if a team member's account is deactivated, and it makes it easier to track API usage and audit integration activity.
After authorization, Apollo displays the sync configuration panel. You need to configure several key settings:
Navigate to the Field Mapping tab within the Salesforce integration settings. Apollo pre-maps common fields (First Name, Last Name, Email, Phone, Title, Company). Review these mappings and add any custom fields you need. For example:
Ensure that picklist values in Salesforce match the values Apollo sends, or set up default mappings for mismatches.
In the integration settings, enable Log Activities to Salesforce. Configure which activities to log:
Push a single test contact from Apollo to Salesforce. Verify that the record appears in Salesforce with the correct field values. Send a test email from an Apollo sequence and confirm that the activity is logged on the Salesforce record. Check bidirectional sync by updating a field in Salesforce and verifying the change appears in Apollo.
When an Apollo sequence prospect replies with interest (positive reply detected), automatically push them to Salesforce as a Lead with the source set to "Outbound - Apollo" and assign them to the appropriate sales rep based on territory rules in Salesforce. This eliminates the manual handoff between SDR prospecting and AE pipeline management.
Configure Apollo to pull Salesforce data nightly so that reps see a CRM badge on any Apollo contact that already exists in Salesforce. Set rules to block reps from adding contacts to sequences if they have an open opportunity in Salesforce, preventing awkward outreach to existing customers or active prospects owned by another rep.
When a new lead is created in Salesforce from any source (web form, event, referral), use the bidirectional sync to pull that record into Apollo. Apollo enriches the record with firmographic and contact data, then pushes the enriched fields back to Salesforce. This keeps your CRM data fresh regardless of where leads originate.
When a rep converts a Lead to a Contact and creates an Opportunity in Salesforce, automatically stop all active Apollo sequences for that contact. This prevents continued prospecting emails from being sent to someone who is already in an active sales cycle.
Set up a Salesforce report that identifies Closed-Lost opportunities older than 90 days. Sync these contacts back to Apollo and automatically enroll them in a re-engagement sequence. This creates a systematic way to revisit lost deals without manual list building.
| Data Type | Direction | Sync Frequency | Notes |
|---|---|---|---|
| Contacts / Leads | Bidirectional | Near real-time (manual push) or scheduled (auto-sync every 1-4 hours) | Duplicate detection by email address |
| Accounts / Companies | Bidirectional | Same as contacts | Matched by company name and domain |
| Email activities | Apollo to Salesforce | Near real-time | Logged as completed tasks |
| Call activities | Apollo to Salesforce | Near real-time | Includes duration and disposition |
| Opportunity stage changes | Salesforce to Apollo | Scheduled sync (1-4 hours) | Used to stop sequences and update statuses |
| Lead/Contact field updates | Bidirectional | Scheduled sync | Conflict resolution: most recent update wins (configurable) |
Conflict handling: When the same field is updated in both systems between sync cycles, Apollo defaults to a "last write wins" approach. You can configure specific fields to always defer to Salesforce as the system of record, which is recommended for fields like Lead Owner, Opportunity Stage, and Account details.
The most common issue. This typically happens when duplicate detection is not enabled, or when Apollo contacts are pushed before the initial Salesforce data pull completes. Fix: Ensure you run a full Salesforce sync before enabling auto-push. Enable Apollo's duplicate detection and set it to "Update existing" rather than "Create new." Also verify that Salesforce duplicate rules are not blocking Apollo's updates.
Sequence emails are sending but not appearing in Salesforce. This is usually caused by the contact not being matched to a Salesforce record (they were never pushed to Salesforce), or by Salesforce validation rules blocking the activity creation. Fix: Confirm the contact exists in Salesforce. Check Salesforce validation rules on the Task/Event object that might reject records missing required fields. Review Apollo's sync log (Settings > Integrations > Salesforce > Sync Log) for specific error messages.
The Salesforce connection drops, usually because the connecting user's password changed, their account was deactivated, or the Salesforce refresh token expired. Fix: Use a dedicated integration user account with a stable password policy. If disconnected, go to Apollo Settings > Integrations > Salesforce and re-authenticate. No data is lost; the sync will resume and process any queued changes.
Fields are not populating correctly in Salesforce, or sync errors appear in the log related to field types. This happens when Apollo sends a text value to a picklist field that does not contain that value, or when number fields receive text data. Fix: Review field mappings and ensure data types match. For picklist fields, add the necessary values in Salesforce or create a default mapping in Apollo for unmatched values.
If the native Apollo.io-Salesforce integration does not meet your needs, consider these alternative approaches:
These platforms can help you connect Apollo.io and Salesforce without writing code: