How to set up bidirectional sync between HubSpot and Salesforce
Sync contacts, companies, and deals between HubSpot and Salesforce with bidirectional field mapping. Compare 3 approaches — HubSpot native, n8n, and Claude Code.

This recipe includes a downloadable n8n template and Claude Code skill.
Workflow
Why sync HubSpot and Salesforce?
Most companies that run both HubSpot and Salesforce do so because marketing lives in HubSpot and sales lives in Salesforce. Without a bidirectional sync, the two teams operate on different versions of the same data. Marketing qualifies a lead in HubSpot and sends it to sales, but sales updates in Salesforce never flow back — so marketing can't see which leads converted, attribution breaks, and lifecycle reporting has gaps.
The numbers are stark: a 2024 Gartner study found that companies with disconnected CRM systems spend 15-25% of their revenue operations headcount on manual data reconciliation. Contact records drift within days — phone numbers updated in one system, job titles changed in the other, deal stages that don't match. Within a quarter, you're making pipeline decisions on data that's 30-40% stale.
Bidirectional sync solves this by keeping contacts, companies, and deals in lockstep across both platforms. When a sales rep updates an opportunity stage in Salesforce, the corresponding HubSpot deal updates automatically. When marketing enriches a contact record in HubSpot, those fields propagate to Salesforce. Both teams see the same data, and reporting tools in either system produce consistent numbers.
How it works
Regardless of which tool you use, every approach follows the same four-step pattern:
- Map objects — define which HubSpot objects correspond to which Salesforce objects (contacts to leads/contacts, companies to accounts, deals to opportunities).
- Map fields — for each object pair, map individual properties to fields and set the sync direction (HubSpot wins, Salesforce wins, or two-way with last-write-wins).
- Handle conflicts — when the same field is updated in both systems between sync cycles, apply resolution rules to decide which value survives.
- Deduplicate — match records across systems using a unique identifier (email for contacts, domain for companies) and link them rather than creating duplicates.
The approaches below differ in how much control you get over each step. The native integration handles all four steps through a UI with sensible defaults. n8n gives you full programmatic control over conflict resolution and field transformation. Claude Code lets you audit sync health and remediate issues on demand.
What you'll need
- HubSpot account on a paid plan (Starter, Professional, or Enterprise) with Super Admin access
- Salesforce account with API access (Enterprise/Unlimited edition, or Professional with API add-on)
- A field mapping plan — which HubSpot properties map to which Salesforce fields, and who wins on conflicts
- 30-60 minutes for initial setup, plus monitoring time during the first sync
Which approach should I use?
- HubSpot Native (Recommended) — the built-in connector handles 80% of sync scenarios with zero code. Per-field sync direction, email-based dedup, and a monitoring dashboard. Best for teams syncing standard objects with straightforward field mappings.
- n8n — full programmatic control over field mapping, conflict resolution, and transformation logic. Best for teams that need custom object sync on non-Enterprise plans, complex field transformations (e.g., concatenating fields, conditional mapping), or integration with third-party enrichment during sync.
- Claude Code — on-demand sync audit and remediation. Ask "which contacts are out of sync?" or "sync the last 24 hours of changes for Acme Corp." Best as a complement to the native integration for troubleshooting and ad hoc bulk operations.
Choose your approach
Select an approach below to see the full step-by-step guide.
Compare approaches
| Approach | Complexity | Cost | Latency | Code | Reliability |
|---|---|---|---|---|---|
HubSpot Native | low | Included with HubSpot Starter+ | polling | none | — |
n8n | high | $0-24/mo | polling | medium | 24/7 cloud |
Claude Code | medium | Usage-based | on-demand | none | On demand |
HubSpot Native
lown8n
highClaude Code
mediumHubSpot Native
lowBuilt-in Salesforce connector — field mapping UI, per-field sync direction, email-based dedup
n8n
highCustom bidirectional workflows — HubSpot trigger + Salesforce trigger with conflict resolution in Code nodes
Claude Code
mediumOn-demand sync audit and remediation — find mismatched records, sync specific objects, troubleshoot field mapping issues conversationally
Related Recipes
How to send a Slack alert when a Salesforce deal changes stage
Salesforce + Slack
How to notify Slack when a Salesforce opportunity over $50K is created
Salesforce + Slack
How to automatically enrich new Salesforce contacts with Apollo
Salesforce + Apollo
How to route and assign Salesforce leads with round-robin and Slack alerts
Salesforce + Slack
Frequently Asked Questions
Looking to scale your AI operations?
We build and optimize automation systems for mid-market businesses. Let's discuss the right approach for your team.