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

Scope this integration Book a scoping call

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.

Objects that sync between Salesforce and HubSpot
Source object HubSpot object 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.

The service reads the source on a schedule using a changed-since watermark, upserts each record keyed on its source identifier, then runs a separate associations pass.

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.

  • Custom middleware

    Possible

    A 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

    Avoid

    A 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

  1. Scope. We inventory the objects, the record types, the field counts and the current API consumption, then agree who owns what.
  2. Architect. The mapping sheet, the precedence rules, the inclusion and selective sync design, and an explicit decision about how long coexistence lasts.
  3. Build. The native integration configured in a Salesforce sandbox connected to a HubSpot sandbox portal, plus any custom service beside it.
  4. Validate. A sample migration, a reconciliation by count and by spot check, and a deliberate test of the conflict rules.
  5. 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.

Partnerships and accreditations

  • HubSpot Elite Solutions Partner
  • HubSpot Custom Integration Accreditation
  • HubSpot CRM Data Migration Accreditation
  • HubSpot Solutions Architecture Design Accreditation

HubSpot accreditations

  • HubSpot Onboarding Accreditation
  • HubSpot Academy Accreditations

Industry specializations

  • HubSpot Healthcare Industry Specialist
  • HubSpot Financial Services Industry Specialist
  • HubSpot Manufacturing Industry Specialist
  • HubSpot Quote to Cash Capability

Partnerships

  • Google Partner
  • Anthropic Solutions Partner

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.

  • Salesforce

Press Enter or comma to add another system.

Add more detail (optional)

Optional. A sentence or two about the workflow is enough.

We use these answers to scope the work and for nothing else. Privacy policy.

Prefer to talk it through first? Book a technical scoping call

Talk to the people who build these

  • Nijat
  • Sean
  • Prash

Book a scoping call

Where these facts come from
  1. REST API Developer Guide resources.docs.salesforce.com
  2. Salesforce Developer Limits and Allocations Quick Reference resources.docs.salesforce.com
  3. Streaming API Developer Guide resources.docs.salesforce.com
  4. Import and sync Salesforce records knowledge.hubspot.com
  5. Sync custom objects between HubSpot and Salesforce knowledge.hubspot.com
  6. Connect your Salesforce sandbox to HubSpot knowledge.hubspot.com