HubSpot + Salesforce
Integration Guide
The complete reference for connecting your marketing and sales platforms. Native integration, governance best practices, lifecycle architecture, and everything your revenue team needs to sync reliably at scale.
HubSpot and Salesforce ship with a native, free, two-way integration that syncs contacts, companies, deals, and activities automatically. For most organizations, the native connector covers everything you need. The real work is governance: defining which system owns each field, preventing duplicates, keeping lifecycle fields immutable, and monitoring sync health post-launch. This guide covers the native integration, best practices, governance framework, and answers to every question revenue teams ask.
What the Native Integration Is and What It Does
HubSpot and Salesforce ship with a free, native, two-way integration that connects the two platforms without any custom code. It is built and maintained by HubSpot, and for most organizations it covers the full set of day-to-day needs: keeping contacts, companies, deals, and activity in step across marketing and sales.
The native connector creates a continuous, two-way data sync between a HubSpot portal and a Salesforce org. Records flow back and forth automatically — typically within about 15 minutes of a change — with no CSV files and no API code. HubSpot owns the integration end to end. Setup starts in HubSpot, a managed package is installed on the Salesforce side, and everything thereafter is managed from HubSpot's Data sync settings.
⭐Key Characteristics
Professional Plan Included
Included with HubSpot Professional and Enterprise plans — no separate purchase for the connector itself
Works Across Editions
Works with Salesforce Professional, Enterprise, or Unlimited editions with API access enabled
Fully Bidirectional
Two-way by default, but every field and object can be set to sync in the direction you choose
Clean Ownership
HubSpot owns the integration setup and configuration end to end, with no vendor complexity
🔗What Can Be Synced
The integration connects the standard objects that marketing and sales share. Only Contacts are required to sync; every other object is optional and enabled as needed.
| HubSpot Object | Salesforce Object | Required? | Notes |
|---|---|---|---|
| Contacts | Leads or Contacts | Yes | HubSpot creates either Leads or Contacts in Salesforce — you choose one; cannot create both at once |
| Companies | Accounts | Optional | Company-to-account mapping, with association sync available |
| Deals | Opportunities | Optional | Deal-to-opportunity sync with full field mapping |
| Activities | Tasks / Activities | Optional | Emails, calls, meetings, and timeline events can sync as activity records |
| Tickets | Cases | Optional | Ticket-to-case mapping for support operations |
| Properties | Fields | Required | Mapped field by field with a chosen sync rule per field |
Sync Health, Rules & Property Mappings
The integration is controlled through HubSpot's Data sync settings panel. Here's what you need to know about each setting.
Sync Health Dashboard
The Sync Health screen is the integration's dashboard. It shows API call usage and a breakdown of current sync errors by category — associations, custom code, duplicates, permissions, picklists, field mappings, property values, and more — with the number of records affected by each. Healthy integrations are monitored, not assumed. Check API usage to avoid hitting Salesforce limits, and review error categories weekly to catch problems before they affect reporting.
Sync Rules: Create, Update & Delete
Each object has Sync Rules that define what happens when a record is created, updated, or deleted on either side. For Contacts, you set whether a new or updated Salesforce lead/contact creates or updates a HubSpot contact, and vice versa — and what happens on deletion.
Field (Property) Mappings
Field mappings are the link between HubSpot properties and Salesforce fields. If a field isn't mapped, its data is not included in the sync. Each mapping has a sync rule that determines when it syncs and which app acts as the system of record.
Activity & Timeline Sync
Activities — form submissions, marketing and sales emails, calls, meetings, notes, and tasks — can sync from HubSpot into Salesforce as activity records. Each HubSpot event can be mapped to a Salesforce task type and toggled on or off individually, so you control what noise enters your Salesforce activity stream.
Governance Controls
Each object's data sync screen exposes three critical governance controls: Resolve sync conflict rules, Deduplication by field mapping, and Selective sync filtering. These controls determine which system wins during conflicts and what data is eligible to sync across platforms.
| Sync Rule | Behavior | When to Use |
|---|---|---|
| Two-way | The most recent change wins, from either system. Both platforms can update the value. | For fields that both systems will actively manage — like name, email, or engagement status |
| Prefer Salesforce unless blank | HubSpot fills the value only if Salesforce is empty. Once Salesforce has a value, it always overwrites HubSpot. | For fields that Salesforce should control but HubSpot can populate defaults |
| Always use Salesforce | Salesforce always wins; HubSpot never writes to the field (one-way into HubSpot). | For critical Salesforce fields like opportunity stage or owner that HubSpot should not override |
| Don't sync | No data passes for this field; each system is maintained independently. | For system-specific fields or sensitive data that should never cross |
🛡️Governance Controls: Conflict Resolution, Deduplication & Selective Sync
Each object's data sync screen exposes three critical governance controls:
- Resolve sync conflict rule — sets which system wins when both change a record (e.g. 'Prefer Salesforce')
- Deduplication by field mapping — lets you nominate a field mapping used to match and de-duplicate records (email is typical)
- Selective sync — defines filters controlling which Salesforce records are eligible to sync into HubSpot. This is the Salesforce-side counterpart to the HubSpot inclusion list
Governance Framework for a Reliable Integration
The patterns that separate healthy, scalable integrations from ones that quietly drift. Most are decisions, not technical challenges.
The source-of-truth map. Nearly every serious integration problem — duplicates, round-tripping, unreconcilable reports, lost attribution — traces back to the absence of a written source-of-truth map. Deciding which system owns each field, writing it down, and enforcing it in the sync is the foundation everything else depends on.
🎯Recommended Source-of-Truth Model
| Object / Field | System of Record | Sync Direction | Functional Owner |
|---|---|---|---|
| Lead (pre-opportunity) | HubSpot | ↔ Both directions | Marketing Ops |
| Contact (post-opportunity) | Salesforce | ← From Salesforce | Sales Ops |
| Account | Salesforce | ← From Salesforce | Sales Ops |
| Opportunity | Salesforce | ← From Salesforce | Sales Ops |
| Lifecycle Stage | HubSpot (MQL & below) / SFDC (SQL & above) | ↔ Governed bi-directional | RevOps |
| Lead Status | Salesforce | ← From Salesforce | Sales Ops |
| Contact Owner | Salesforce | ← From Salesforce | Sales Ops |
⏱️Must-Have Lifecycle & Timestamp Fields (Salesforce-Side)
HubSpot ships native lifecycle timestamp fields out of the box. The work in most engagements is on the Salesforce side — building parallel timestamp fields so that record-level funnel insight is available directly on the Lead or Contact, without needing to join to a custom object.
| Salesforce Field | Definition / Governance Rule | Why It Matters |
|---|---|---|
| MQL Date | Set on MQL transition (sourced from HubSpot, stamped on the SFDC record) | Funnel entry timestamp; first measurable marketing-to-sales handoff |
| SAL Date | Set when the SDR formally accepts the lead in Salesforce | Marks SLA start for SDR engagement and outbound attempts |
| SQL Date | Set on SQL stage transition; immutable once stamped | Opportunity-eligibility timestamp; powers funnel velocity reporting |
| First Opportunity Date | First opportunity created against the contact's account | Anchors contact-to-opportunity attribution and time-to-pipeline |
| Closed Won Date | First Closed Won opportunity tied to the contact | Anchors revenue attribution and time-to-revenue reporting |
| Customer Date | Lifecycle = Customer transition timestamp on the SFDC record | Powers customer cohort, expansion, and renewal reporting |
⚡Common Integration Mistakes — Must Avoid
Patterns we see repeatedly when integrations struggle. Most are governance gaps, not technical defects.
Treating lifecycle stage as a sync field
It is a governed business state. Sync should respect rules, not override them.
Letting both systems own contact ownership
Produces round-tripping updates and audit-log noise that obscure real changes.
Running dedupe inside each CRM independently
One system merges what the other splits — and the sync faithfully transmits the conflict.
Mapping Lead Status to Lifecycle Stage
Breaks both SDR SLA reporting and funnel reporting; they answer different questions.
Designing closed-loop reporting after go-live
Required fields and timestamps end up missing or mutable; reports never reconcile.
Leaving automation running on retired stages
Background processes silently mutate data, generate noise, and corrupt funnel reporting.
Building the integration straight to production
Inevitably surfaces conflicts on live revenue data with no safe rollback path.
No named owner for the integration
Field mappings drift, error logs go unread, and the next reorg breaks routing silently.
Picklist values not normalized before sync
Country, industry, and job function fragment across spelling variants and break grouping.
No reconciliation reports
Drift is detected at the next QBR, not in real time.
📈Post Go-Live Monitoring Practices
| Practice | Cadence | Why It Matters |
|---|---|---|
| Sync-health check | Daily | Catch failures in hours, not at QBR. Track API usage, error counts, and last successful sync |
| Reconciliation report | Weekly | Object counts and orphaned records compared across systems with variance threshold alerts |
| Error triage workflow | As needed | Categorized errors (validation, permission, duplicate, timeout) routed to the appropriate Ops owner |
| Sync and automation audit | Quarterly | Review field mappings, automation conflicts, dead-stage logic, and governance adherence with documented remediation |
| Change control discipline | Every change | Field mapping, picklist additions, and sync rules require ticket + UAT + sign-off |
Common Problems — and How to Solve Them
The patterns we see most often in HubSpot-Salesforce integrations, drawn from real engagements.
1. Reporting That Won't Reconcile Between the Two Systems
Salesforce dashboards and HubSpot reports show different pipeline and conversion numbers, so leadership can't trust either.
Design reconciliation into the integration rather than bolting it on — a written source-of-truth map per field, governed timestamps, and aligned sync directions. In practice, dashboards in both systems reconcile within a reporting cycle once the underlying model is fixed.
2. Lifecycle Stage and Lead Status Conflated
The two are mapped to each other or treated as the same field, breaking both funnel reporting and SDR triage reporting — and conversion rates swing wildly month to month.
Separate them by design: Lead Status answers 'what is sales doing with this lead,' Lifecycle Stage answers 'where is this record in the funnel.' Each gets its own governed rules and a unified taxonomy on both sides, with timestamps locked to first entry so conversion math stabilizes.
3. Over-Engineered Funnel With Too Many Stages
The funnel runs on too many reporting stages, several answering the same question, making it hard to interpret and report on.
Rationalize the stages first — merging overlapping ones into a defensible set — then align the taxonomy across both systems, migrate existing records onto it with a tested rollback path, and only then fix the wiring. Fix the model, then fix the sync.
4. Automation Firing on Retired or Inactive Stages
Flows, process builders, and triggers built up over time keep running on stages that no longer exist, generating noise and silently mutating records.
Catalogue every flow, process builder, workflow rule, and trigger touching the funnel; disable automation on deprecated stages; fix entry/exit criteria on active ones; consolidate competing logic. Then institutionalize a recurring automation audit so it stays clean.
5. Duplicate Records Across the Two Systems
Each system runs its own deduplication independently, so one merges what the other splits — and the sync faithfully transmits the mess.
Establish a single, agreed matching and deduplication strategy (typically keyed on email and company domain), respect the native email-match behaviour, and normalize values before go-live so both systems resolve records the same way.
6. Slow, Hard-to-Access Funnel Insight
Stage-by-stage funnel data lives in a separate object that's slow for reps, managers, and ad-hoc reporting.
Add record-level lifecycle timestamp fields directly on the Lead and Contact — a first-reached and latest-reached timestamp per stage — populated automatically on each transition. The difference between timestamps gives accurate stage velocity and conversion without querying a separate object.
7. No Clear Ownership of the Integration
Field mappings drift, error logs go unread, and a reorg quietly breaks routing because no one owns the integration end to end.
Establish one named RevOps owner, a simple change-control process for mappings and picklists, and ongoing monitoring — a daily sync-health check, weekly reconciliation, and a quarterly audit — so the integration is governed as a product, not left to drift.
8. Manual Work That Should Be Automated
High-volume, repetitive work — post-call admin, follow-up task creation, lifecycle updates — is done by hand, inconsistently.
Automate the repetitive motion across the two systems and layer AI-augmented workflows (such as call summarization and task extraction) on top of clean, governed data — so people spend time on judgment, not data entry.
Getting Started: Setup Steps & UAT Essentials
🚀How the Standard Setup Works
The standard setup is a guided, low-code process owned from the HubSpot side:
Install the Managed Package
Install the HubSpot managed package in Salesforce and connect using a dedicated integration user (not a personal login).
Choose Mapping Strategy
Decide between recommended or advanced field mapping. Recommended works for simple Salesforce setups; advanced gives full control over each mapping and sync rule.
Configure Sync Rules
Decide whether HubSpot creates Leads or Contacts, and configure create/update/delete sync rules per object.
Set Inclusion & Filters
Apply an inclusion list (HubSpot) and selective sync (Salesforce) to control what flows between systems.
Enable & Monitor Sync
Turn on sync for the objects you mapped and let the initial sync run; monitor Sync Health for errors.
Test & Iterate
Run UAT scenarios, fix any issues, and only then move to production monitoring.
✅QA / UAT Must-Dos
Testing Checklist
- Connected sandbox testing against representative data
- Edge cases: duplicates, contacts without accounts, multi-region records
- Scenario-based UAT scripts for lifecycle progression and regression
- Lead conversion, contact merges, ownership changes
- Territory reassignment and Salesforce territory model alignment
- Automation audit before sign-off
Validation & Sign-Off
- Reconciliation tests: object counts must match within tolerance
- Key field totals verified after each sync cycle
- Catalogue every flow, process builder, and trigger
- Confirm none target retired stages or deprecated logic
- Stakeholder sign-off from Marketing Ops, Sales Ops, business
- Defect log discipline: all issues logged and resolved
HubSpot + Salesforce Integration: Your Questions Answered
Questions every revenue team asks before connecting and after go-live.
Ready to Build a Reliable Integration?
Whether you're connecting HubSpot and Salesforce for the first time or fixing an integration that's drifted, the best starting point is usually an audit. We help revenue teams map the current state, design the source-of-truth model, and execute go-live with confidence.