HubSpot + Salesforce integration
Salesforce holds the account, the opportunity and the activity log. HubSpot builds the sync itself, and the hard part is deciding who owns each field.
Native app- Into HubSpot
- Two way
Is there a native Salesforce + HubSpot integration?
Yes, and it is HubSpot's own app. HubSpot publishes the Salesforce integration, listed in the HubSpot App Marketplace as of September 2026, and configuring it properly is 8 to 24 hours of work rather than a build. Custom work joins it for custom objects below Enterprise, for filtering the sync rules cannot express, and for a migration where both systems stay live for months.
- Recommended route
- Native app
- Build effort
- 8 to 24 hours
- In the HubSpot App Marketplace?
- Yes, Salesforce by HubSpot
- Typical elapsed time
- 1 to 2 weeks
Marketplace checked September 2026.
Why teams connect Salesforce to HubSpot
Nobody sets out to run two CRMs. They end up with two because sales bought one and marketing bought the other, because an acquisition arrived with its own, or because a migration that was meant to take a quarter is in month nine. The question on this page is almost never whether the two can talk, since HubSpot builds the connector itself. It is who owns which record, and what happens when both sides edit the same field.
The common shape is a division of labour. Salesforce stays the system of record for accounts, opportunities and anything finance reports on. HubSpot owns marketing: the forms, the emails, the scoring, the attribution. The sync keeps the two views of a person in agreement and leaves everything else alone. We are implementing this pattern now for an education publisher on a 16-week onboarding: Salesforce stays the sales system of record, HubSpot takes marketing, and the native sync carries the core objects.
The second shape is a migration with a long tail. Everything moves eventually, but not on one weekend, so the sync is a bridge with an end date rather than a permanent fixture. Naming that end date changes the decisions: a bridge can carry less, break more visibly and cost less to build than a marriage.
What makes either shape fail is unowned fields. Where both systems write the same property, the two integrations take turns overwriting each other and a salesperson watches their edit disappear twice a day. That is a governance problem wearing a technical costume, and it is settled in discovery.
What syncs
Seven objects cover almost every engagement. Leads and contacts both land on HubSpot contacts, which is the first real decision, because a lead in Salesforce is a pre-qualification record and HubSpot has no separate object for it. Accounts become companies, opportunities become deals, cases become tickets, tasks and events become activities, and custom objects map across on Enterprise subscriptions.
Everything keys on the Salesforce record identifier, kept in a HubSpot property, with email used only as a fallback for a contact that has never synced. That identifier is what makes the sync repeatable and what lets a migration reconcile afterwards.
Two mappings deserve more thought than they usually get. Record types to pipelines, because a Salesforce org with five opportunity record types does not want five HubSpot pipelines by default. And stage names, which are resolved by label, so renaming a stage on either side quietly breaks the mapping until somebody updates it.
| | | Direction | Match key | Notes |
|---|---|---|---|---|
| Lead | Contact | Two way | Salesforce record identifier in a custom HubSpot property | Leads and contacts both land on contacts, which is decision one. |
| Contact | Contact | Two way | Salesforce record identifier, with email as a fallback | |
| Account | Company | Two way | Salesforce record identifier | Decide early whether Salesforce or HubSpot owns the account name. |
| Opportunity | Deal | Two way | Salesforce record identifier | Record types map to pipelines, and stage names have to be agreed. |
| Case | Ticket | Into HubSpot | Case number | |
| Task and event | Engagement | Two way | Activity identifier | Volume here is what consumes the Salesforce call allocation. |
| Custom object | Custom object | Two way | Salesforce record identifier | Enterprise on both sides, and lookup fields cannot be mapped. |
Architecture
The native integration is a polling sync with rules on both ends. HubSpot checks Salesforce roughly every 15 minutes, applies the selective sync filters to decide what comes in, and applies the inclusion segment to decide what goes out. There is no queue for you to run and no state for you to hold.
A custom addition sits beside it rather than replacing it. It reads Salesforce on a watermark, using the changed-records resource that reports what moved within a timespan, which the API documents as reading the record’s system modified timestamp and covering no more than 30 days with a cap of 600,000 identifiers per call. Where events have to be quicker, Salesforce publishes change events that a subscriber can replay from a stored position, with 72 hours of retention.
The custom side keeps its own watermark, its own dead letter table and its own replay endpoint, so the two mechanisms can be reasoned about separately when something looks wrong.
What the API allows
- API style
- REST
- Authentication
- OAuth 2.0
- Webhooks
- Yes
- Changed-since filter
- Yes
- Sandbox
- Yes
- Rate limit
- 100,000 calls per 24 hours for an Enterprise Edition org plus 1,000 per Salesforce licence, with 25 concurrent requests running 20 seconds or longer
Developer documentation resources.docs.salesforce.com
Three ways to connect
The native integration is the default, and the burden of proof sits with anything else. It carries the standard objects both ways, it is maintained by HubSpot, and the configuration is a settings screen rather than a deployment, which is 8 to 24 hours of mapping and rule setting rather than a build.
Custom work joins it in a few specific situations. Custom objects matter to the business but the subscription tier does not allow the native custom object sync. The rule that decides which records move cannot be expressed as a filter or a segment. Or the project is a migration, where one reconciled pass with a written mapping beats a permanent sync nobody will turn off.
A per-task automation platform is the route we advise against here. Two CRMs generate record changes continuously, and paying per task for that traffic scales with the size of the database rather than with the value of the sync.
-
Native app
RecommendedHubSpot builds and maintains the integration, it carries the standard objects and activities both ways, and it gives you inclusion and selective sync rules without anyone writing code.
-
Custom middleware
PossibleA service is worth its cost for custom objects below Enterprise, for filtering the native rules cannot express, and for a migration where records have to move once rather than sync forever. Budget 70 to 150 hours when it is needed.
-
Automation platform
AvoidA per-task platform between two CRMs bills for every record that moves, and CRM to CRM volumes climb with the database rather than with the value you get from the sync.
What breaks and how we prevent it
Duplicates across leads and contacts
Duplicate people are the worst of it. Salesforce holds leads and contacts as separate objects, so the same person can exist twice before HubSpot ever sees them. We agree a precedence rule, key on the Salesforce identifier and merge on the Salesforce side rather than letting HubSpot guess.
Fights over field ownership
Field ownership fights are common. The defence is a mapping sheet where every field is marked two-way, Salesforce wins or HubSpot wins, and signed off by someone from each team before the sync runs on real data.
An org-wide daily call allocation
API allocation is finite. An org gets 100,000 calls a day on Enterprise plus an allowance per licence, and it is shared with every other integration touching Salesforce. Initial imports are where it goes, and HubSpot’s own guidance is that a large import may take hours deliberately, to spread the calls. We schedule backfills outside business hours and watch the consumption rather than the clock.
Custom objects with no parent
Association gaps are the quiet one. Associations only sync between objects that are already syncing, so a custom object linked to an account that is not in scope arrives with no parent. Where the native rules cannot make the link, a workflow matching a shared external identifier does, which keeps the matching logic visible to an administrator instead of hidden in code.
Our approach
- Scope. We inventory the objects, the record types, the field counts and the current API consumption, then agree who owns what.
- Architect. The mapping sheet, the precedence rules, the inclusion and selective sync design, and an explicit decision about how long coexistence lasts.
- Build. The native integration configured in a Salesforce sandbox connected to a HubSpot sandbox portal, plus any custom service beside it.
- Validate. A sample migration, a reconciliation by count and by spot check, and a deliberate test of the conflict rules.
- Operate. The sync health view watched weekly, with a standing review of records that fail to sync rather than a dashboard nobody opens.
Common questions
Is the HubSpot Salesforce integration built by HubSpot?
Yes. HubSpot publishes it, and the marketplace carries a HubSpot listing for Account Engagement and a third-party premium connector from SyncMatters beside it. Installing it is a package in Salesforce plus an authorization from inside HubSpot, and it needs an administrator on both sides.
How quickly does a Salesforce record reach HubSpot?
HubSpot's documentation says it checks for new and updated information roughly every 15 minutes and syncs when its rules and field mappings say it should. That is fast enough for reporting, routing and nurture, and too slow for anything a person is waiting on while looking at a screen.
Can the HubSpot Salesforce integration sync custom objects?
Yes, with Enterprise subscriptions on the HubSpot side. The sync is two-way by default and each field can be set to two-way, Salesforce wins or HubSpot wins. The limits matter: field mappings involving Salesforce lookup fields on custom objects are not possible, and associations only sync between objects that are already syncing.
How do we stop every Salesforce record from landing in HubSpot?
Two different controls, one per direction. Selective sync filters decide which Salesforce records come into HubSpot. An inclusion segment decides which HubSpot records are eligible to go the other way, and because the segment is active it updates as records qualify or stop qualifying. Getting both wrong is how a portal fills with records nobody wanted.
Can we connect a Salesforce sandbox to HubSpot first?
Yes, and we always do. HubSpot supports connecting either a production org or a sandbox, and its documentation recommends validating configuration in the sandbox before applying it to live data. The cutover is then an authorization change rather than a rebuild, which is the same discipline we apply to every integration we ship.
Will a HubSpot Salesforce sync use up our Salesforce API allocation?
It can, and activity volume is usually the reason. An Enterprise Edition org gets 100,000 calls in 24 hours plus 1,000 for each Salesforce licence, shared by every integration hitting that org. Salesforce also caps concurrent requests running 20 seconds or longer at 25. Large initial imports are the moment to watch.
When is a custom Salesforce to HubSpot build worth it?
When a field has to be transformed rather than copied, when the record that should match is decided by business logic rather than by an identifier, when custom objects are needed below Enterprise, or when a migration needs one controlled pass with reconciliation rather than a sync that runs forever.
How do two CRMs coexist during a migration without a fight?
One owner per object, written down before anything is switched on. In the pattern we are implementing now for an education publisher on a 16-week onboarding, Salesforce stays the system of record while HubSpot owns marketing, the native sync carries the core objects, and the association between a person and their organization is made by matching a shared external identifier rather than by name.
Also in Sales and marketing platforms
Related reading
Partnerships and accreditations
HubSpot accreditations
Industry specializations
Partnerships
Scope a Salesforce integration
Send the systems, the direction and the record volume. We reply with a scope and an effort band within one business day.
Thanks, we will reply within one business day
Prash or Sean reads every one of these and comes back with a scope, or with the one question we need answered first.
Where these facts come from
- REST API Developer Guide resources.docs.salesforce.com
- Salesforce Developer Limits and Allocations Quick Reference resources.docs.salesforce.com
- Streaming API Developer Guide resources.docs.salesforce.com
- Import and sync Salesforce records knowledge.hubspot.com
- Sync custom objects between HubSpot and Salesforce knowledge.hubspot.com
- Connect your Salesforce sandbox to HubSpot knowledge.hubspot.com