HubSpot CRM integration capabilities Salesforce CRM integration capabilities

HubSpot ↔ Salesforce: Bi-Directional CRM Sync

Syncing two CRMs is complex: contacts can exist in both, deals may differ, and ownership rules conflict. This guide covers native bi-directional sync, contact deduplication strategies, and when to use Zapier or n8n for advanced workflows.

Quick Answer

Use Make for bi-directional sync with deduplication logic. The native connector is one-way. n8n is best if you need custom field mapping or self-hosted compliance.

Affiliate disclosure

Why Sync HubSpot and Salesforce?

Most teams use HubSpot for marketing and Salesforce for sales. Contacts live in both, but they're never in sync — marketing sees 50 leads, sales sees 30 deals, nobody knows the truth. Syncing solves this but requires deduplication rules.

Method Comparison

Factor Native Make n8n
Bi-Directional Sync ❌ One-way only ✅ Yes ✅ Yes
Deduplication (by email) ⚠️ Manual ✅ Automated ✅ Automated
Contact Ownership Rules ⚠️ Limited ✅ Custom logic ✅ Custom logic
Setup Time 30 min 4–6 hours 6–8 hours

The Deduplication Problem

If you sync all HubSpot contacts to Salesforce by email, you'll create duplicates for every contact that exists in both systems. You need rules:

  • If email exists in both → update existing Salesforce contact, don't create new
  • If contact in Salesforce but not HubSpot → leave it alone
  • If only in HubSpot → create in Salesforce only if it matches deal criteria

Method 1: Native Connector (HubSpot → Salesforce Only)

HubSpot's native Salesforce connector syncs contacts and companies one-way: HubSpot → Salesforce. When a HubSpot contact gets emailed, they sync to Salesforce automatically.

⚠️ Limitation: No reverse sync (Salesforce → HubSpot)

Full setup guide: HubSpot → Salesforce

Method 2: Make (Bi-Directional with Dedup)

Create two scenarios: HubSpot → Salesforce and Salesforce → HubSpot. Each checks for existing records by email before creating duplicates.

Scenario 1: HubSpot → Salesforce

  1. Trigger: HubSpot contact created or updated
  2. Search: Look up Salesforce contact by email
  3. If exists → update; if not → create new

Scenario 2: Salesforce → HubSpot

  1. Trigger: Salesforce contact created or updated
  2. Search: Look up HubSpot contact by email
  3. If exists → update; if not → create new

Method 3: n8n (Advanced Ownership Rules)

Use n8n Code nodes to implement complex ownership rules. Example: if a contact is assigned to a sales rep in Salesforce, map them to the HubSpot owner with the same email address.

  • Ownership mapping — match sales reps by email across both CRMs
  • Deal → Contact link — ensure contacts are linked to deals in both systems
  • Self-hosted option — run workflows on your own servers

Troubleshooting

Duplicate Contacts Created

Email field not matching or search isn't working.

Fix: Check both systems use lowercase emails. Test the search step in Make/n8n before running the full scenario.

Sync Only Works One Direction

You built HubSpot → Salesforce but forgot the reverse scenario.

Fix: Create a second scenario for Salesforce → HubSpot with the same dedup logic.

Related Integration Guides & Resources