Skip to content
Integrations5 min read

Running HubSpot and Salesforce together: how the sync really behaves

The HubSpot Salesforce integration syncs contacts, leads, companies, deals and tasks between the two systems on a short delay. An inclusion list controls which HubSpot contacts reach Salesforce, and each field has a sync rule deciding which side wins. Most problems come from a missing inclusion list, two way rules on every field, and matching on email.

By HubReven Engineering

Plenty of companies run both. Marketing lives in HubSpot because that is where email, forms and attribution work best. Sales lives in Salesforce because it was there first, or because the territory and forecasting setup took three years to build and nobody wants to touch it.

That arrangement is fine. It only goes wrong when the connector is installed with its defaults and left alone.

What the native connector actually does

HubSpot's Salesforce integration is a managed package installed in Salesforce plus a connection in HubSpot. Once running, it syncs:

  • HubSpot contacts with Salesforce leads and contacts
  • Companies with accounts
  • Deals with opportunities
  • Tasks in both directions, and HubSpot activity onto the Salesforce timeline

It needs a paid HubSpot tier and a Salesforce edition with API access, and every sync consumes Salesforce API calls from your org's daily allowance. Check HubSpot's current requirements before you plan around it, because they change.

Sync is near real time, not instant. Plan for minutes of delay, not seconds.

Decision one: who is allowed into Salesforce

By default, every HubSpot contact is a candidate to sync. That includes newsletter subscribers, students who downloaded an ebook, and competitors. Sales opens Salesforce and finds forty thousand leads nobody should call.

The fix is an inclusion list: a HubSpot list, and only contacts in it sync to Salesforce. Define it in terms sales agrees with, usually lifecycle stage is MQL or later, or owner is known, and not on a suppression list.

Write the definition down. When someone asks why a lead did not appear in Salesforce, the answer should be "it does not meet the inclusion criteria", not an investigation.

Decision two: who wins, field by field

Every mapped field has a sync rule. The options amount to:

RuleBehaviourUse it for
Prefer Salesforce unless blankSalesforce wins, HubSpot fills gapsOwner, account name, most sales fields
Always use SalesforceSalesforce always overwritesFields sales controls exclusively
Two wayMost recent change winsVery few fields, honestly
Don't syncField stays localAnything only one team needs

The mistake is setting everything to two way because it sounds the most connected. Two way means the most recent edit wins, including a careless bulk import or a workflow that sets a default. That is how a carefully maintained job title gets overwritten by a form fill.

Pick one owner per field. Most fields should belong to Salesforce once a lead is sales accepted. Marketing fields, like original source and email engagement, belong to HubSpot and flow one way.

Decision three: how records are matched

The connector matches contacts on email. That is mostly fine, and it fails in three predictable places:

  1. A person changes jobs and their old Salesforce contact gets their new HubSpot data.
  2. Two people share an inbox, such as accounts@, and become one contact.
  3. Salesforce already holds duplicates, and the connector picks one of them.

Clean Salesforce duplicates before connecting, not after. After, every duplicate has two sides of history and the merge is much harder to explain.

The API call budget nobody checks

Every create, update and lookup costs Salesforce API calls. A HubSpot workflow that touches a property on fifty thousand contacts generates fifty thousand updates to push.

Set a cap on what share of the daily allowance HubSpot may use, and watch it in the first month. When the budget runs out, the sync queues until tomorrow, and the queue is invisible to the sales rep wondering why the lead has not arrived.

When the native connector is not enough

The connector covers the standard objects and the standard shape of a funnel. A custom integration earns its cost when:

  • You need Salesforce custom objects synced with logic the connector cannot express.
  • A third system is involved, such as billing or product usage, and both CRMs need the result.
  • Matching has to use an account number or a product ID rather than email.
  • Records need transformation in transit, such as splitting one Salesforce field into three HubSpot properties, or the reverse.

In those cases we usually keep the native connector for the standard objects and build a small service beside it for the rest, using a private app with tightly scoped access. Replacing the connector entirely is rarely worth it.

When the answer is to stop running both

Sometimes the honest answer is that two CRMs exist because of history, not need. If sales would be served by HubSpot's sales tools, the integration is a cost you pay every month to avoid a one time project.

That conversation is worth having before tuning the sync. Here is what moving off Salesforce actually involves, and it is usually smaller than people expect.

Frequently asked questions

Can HubSpot and Salesforce sync in real time?

Close to it. Changes typically sync within minutes, not instantly, and the delay grows when the Salesforce API allowance is under pressure. If a process genuinely depends on sub second updates, it needs a webhook based custom integration rather than the native connector.

Why are contacts not syncing from HubSpot to Salesforce?

Usually the contact is not in the inclusion list, a required Salesforce field is empty, or a validation rule in Salesforce rejects the record. HubSpot's sync health screen lists each failed record with the Salesforce error, which almost always names the field.

Does the HubSpot Salesforce integration create duplicates?

It can. It matches contacts on email, so existing Salesforce duplicates, shared inboxes and job changes all produce mismatches. Deduplicating Salesforce before connecting and restricting the inclusion list prevents most of it.

Can we sync HubSpot with Pipedrive, Zoho or Dynamics the same way?

Yes, with different tools. Dynamics 365 has a native HubSpot connector. Pipedrive and Zoho rely on marketplace apps or a custom integration. The decisions are identical: who gets synced, which side owns each field, and what identifier matches records.

Get the next one

One email a month. Unsubscribe anytime.

Flagship offer

CSV/ERP → CRM pipeline in 14 days, fixed price

Your ERP or back-office system exports a file. We turn that file into a validated, idempotent pipeline that keeps the CRM current, with an exception report instead of silent failures.

Timeline
14 days
Price
Fixed, quoted upfront

What is included

  • Profiling of the export and a written field mapping
  • Schema validation on every file, before anything is written
  • Upserts keyed on a stable external ID, so a replay cannot duplicate
  • Row-level exception report and alerting when a file is late or bad
  • Deployed in your accounts, code in your repository
  • Runbook: reprocess a batch, rotate credentials, add a field

Not included: CRM licences and third-party fees; Bi-directional sync (scoped separately).