botttaStart project

HubSpot Salesforce Integration: A Setup Guide That Holds

Ugo Charles
Illustration for HubSpot Salesforce Integration: A Setup Guide That Holds

A deal closes in Salesforce on Tuesday. By Thursday, marketing in HubSpot is still dripping that same contact a "why not become a customer" nurture sequence, because the two systems have never actually agreed on who this person is. Sales swears the phone number is right. Marketing swears theirs is. Both are editing the same account in two places, and neither trusts the other's data anymore.

That is what a bad HubSpot Salesforce integration looks like. The connector is running, records are technically syncing, and the whole thing is quietly making your data worse. The native connector is genuinely good, but it does exactly what you configure and nothing more, so almost every failure traces back to a decision made before install or skipped entirely. Get the ownership, the field rules, the record gates, and the API math right up front and the sync fades into the background, which is the only place it belongs. Get them wrong and you get the Tuesday-to-Thursday mess above. The steps below go in the order you should actually make those decisions.

Decide what the sync is for before you connect anything

Most broken syncs are not broken connectors. They are two teams who never agreed on which system owns which record. So the first step happens in a doc, not in HubSpot.

Answer three questions:

  • Which system is the source of truth for each object? A common split: Salesforce owns deals and accounts because that is where the pipeline lives, HubSpot owns marketing engagement and lead-stage contacts. Write it down per object.
  • Which direction does each record type move? Leads that HubSpot captures should flow into Salesforce. Closed-won status from Salesforce should flow back so marketing stops emailing customers. Not everything is two-way, and pretending it is causes most conflicts.
  • What should never sync at all? Unqualified form fills, cold list imports, and test records do not belong in your Salesforce org eating storage and API calls.

Skip this and you will spend your first month untangling why a rep's manual edit keeps getting overwritten at 15-minute intervals. If mapping ownership across a stack of tools is the part that feels murky, that is exactly the Workflow Design problem bottta solves before any connector goes live. It is also the same discipline behind deciding when a task is worth automating at all.

Confirm you have the editions the integration needs

The native connector itself has no separate fee. You pay for it through the subscriptions you already hold on each side, so the real question is whether your current tiers qualify.

On the HubSpot side, the integration runs on Professional or Enterprise subscriptions of Marketing Hub, Sales Hub, Service Hub, Data Hub, Content Hub, or Smart CRM, per HubSpot's install documentation. Starter and Free do not support it. Manually syncing a record segment to Salesforce specifically needs Marketing Hub Professional or Enterprise.

On the Salesforce side, you need an edition with API access, or Salesforce Professional edition, again per HubSpot's documentation. API access is the load-bearing requirement, and it is easy to miss on lower Salesforce tiers.

Here is where the sticker shock lives if you are not already on these plans, using HubSpot's published product catalog:

| Tier | HubSpot starting price | |---|---| | Starter | $20 per seat / month (integration not supported) | | Professional | starts at $890 / month | | Enterprise | starts at $3,600 / month |

If you are buying HubSpot Professional mainly to unlock this sync, budget the $890/month base, not the connector. The connector is the free part. The plan is not.

Install the connector and choose your sync direction

With editions confirmed, the install itself is quick. In HubSpot, go to Settings, Integrations, Connected Apps, find Salesforce in the marketplace, and authenticate into your Salesforce org. HubSpot walks you through connecting the package.

One thing that surprises people: records do not automatically flood across on install. HubSpot's documentation is explicit that nothing syncs until you either import your Salesforce records or let them sync gradually as triggers fire. That is a feature, not a bug. It gives you a window to set your rules before a million records move.

For each object, HubSpot's data sync framework lets you pick the flow:

  • Sync between apps (two-way)
  • Sync only to HubSpot
  • Sync only to the third-party app (Salesforce)

Match these to the ownership map you wrote in step one. If Salesforce owns accounts, contacts and companies might sync two-way while opportunities sync only to HubSpot as read-only pipeline context. Resist the urge to make everything two-way "to be safe." Two-way is where conflicts come from.

Map fields and set the conflict rules

This is the step that separates a sync that holds from one that quietly corrupts data. A field mapping links a HubSpot property to a Salesforce field, and each mapping carries a rule that decides which system wins when the two values disagree.

You configure it in HubSpot under Settings, Integrations, Connected Apps, Salesforce, then the data sync settings for each object, then the property mappings. For each mapped field, HubSpot documents rules including:

| Sync rule | What it does | Use it when | |---|---|---| | Two-way | The most recently updated value wins and overwrites the other side | Both teams legitimately edit the field | | Prefer Salesforce unless blank | Salesforce wins, but a blank Salesforce value won't wipe a HubSpot value | Salesforce is the source of truth but has gaps | | Always use Salesforce | Salesforce always overwrites HubSpot for this field | Salesforce is the undisputed owner |

The mistake to avoid: setting everything to Two-way. When both sides can overwrite and a rep edits a phone number in Salesforce the same afternoon a form updates it in HubSpot, the last write wins and the correct value can lose. Assign an owner per field. Reserve Two-way for the handful of fields both teams truly co-edit.

Lifecycle stage deserves its own thought. If HubSpot owns lead stages and Salesforce owns opportunity stages, map them deliberately so a closed deal in Salesforce actually moves the contact out of marketing's active nurture. That single mapping is often the whole reason the integration exists.

Control what syncs with inclusion lists and selective sync

You do not want every record crossing the bridge. HubSpot gives you two gates, and they run in opposite directions.

Inclusion lists control which HubSpot records are eligible to sync to Salesforce. Per HubSpot's documentation, records outside the inclusion segment will not sync to Salesforce at all. This is how you keep raw form fills and cold imports out of your rep's pipeline. A typical inclusion list: contacts whose lifecycle stage is Marketing Qualified Lead or later, or contacts with a real lead score.

Selective sync works the other way. It uses filters in your Salesforce integration settings to control which Salesforce records sync to HubSpot. Multiple filters combine with AND logic, so only Salesforce records matching every condition come across. Use it to pull, say, only active accounts in specific regions instead of your entire Salesforce history.

Both gates do the same strategic job. They keep the sync focused on records that matter, which keeps your data clean and, as the next step covers, keeps your API usage sane.

Protect your Salesforce API limit

Every sync cycle costs API calls, and Salesforce meters them tightly. This is the ceiling that turns a working integration into a stalled one.

Salesforce's limit is org-wide, not per user. Per Salesforce's developer documentation, an Enterprise org gets a base of 100,000 API requests per 24 hours plus a per-license allocation on top, and it is a rolling 24-hour window, not a midnight reset. Critically, that pool is shared. HubSpot draws from the same allocation as every other tool touching your Salesforce org.

Three things follow from that:

  • HubSpot checks for changes every 15 minutes and triggers a sync when it finds them, per HubSpot's sync-trigger documentation. This is not real-time sync. A change takes up to 15 minutes to appear on the other side, and each cycle spends calls.
  • Other integrations compete for the same budget. Your reporting tool, your dialer, and your data-enrichment app all pull from that same daily ceiling.
  • HubSpot exposes an "Allocated to HubSpot" cap in the integration settings, which limits how many Salesforce calls HubSpot may consume. It protects the rest of your stack, but it does not raise the org's real limit.

The practical defense is the inclusion list from the previous step. A sync scoped to qualified records makes far fewer calls than one trying to reconcile every contact in both systems. If your org is already near its ceiling, tightening what syncs beats buying more API capacity.

Common mistakes that break the sync later

The sync usually does not fail on day one. It fails three months in, when volume climbs and nobody remembers the original rules.

  • Everything set to two-way. The single biggest cause of overwritten data. Assign field ownership instead.
  • No inclusion list. Junk floods Salesforce, storage fills, and API calls spike. Gate the sync from the start.
  • No monitoring. Salesforce can suspend the integration when errors pile up or API limits hit, and syncs silently queue. Nobody notices until sales complains that leads stopped arriving. HubSpot surfaces sync errors, but only if someone is actually watching them.
  • Mapping fields nobody agreed on. If marketing and sales never settled who owns the phone number, no sync rule can fix that. It is an ownership problem wearing a technical costume.
  • Treating install as the finish line. The connector is 20% of the work. The mapping decisions and the ongoing error triage are the other 80%.

This failure pattern is not unique to CRMs. It is the same reason DIY automations quietly break as a team scales, and the same shape shows up in a NetSuite and Salesforce integration or an Outlook and Salesforce sync. A connector alone rarely settles a two-system data problem.

When to build it yourself vs bring in bottta

If you run one HubSpot hub, one Salesforce org, and a simple contact-and-lead flow, you can absolutely stand up the native integration yourself. Follow the steps above, keep the mapping tight, and check the error log weekly. Plenty of lean teams do exactly this.

Bring in bottta when the sync is load-bearing and the cost of getting it wrong is real. We start with the part most teams skip: mapping which system owns which record and which fields move where, before anything connects. Then our Integrations work handles the field mapping, conflict rules, inclusion lists, and API budgeting so the sync holds under volume instead of quietly corrupting data. A one-time CRM sync setup fits our $4K project (fixed scope, fixed price, integrations included, 30 days of post-launch support). If the two systems keep evolving, new fields, new objects, new teams joining, our $3K/month retainer covers ongoing monitoring and fixes so a suspended sync gets caught by us, not by your sales lead on a Monday.

The honest test: if a broken sync means a slightly stale report, DIY it. If a broken sync means leads vanish or customers get the wrong emails, get it built and monitored by someone whose job is to notice when it breaks. That build-versus-bring-in-help call is the same one behind choosing an automation partner and weighing in-house versus outsourced automation, and the native connector is one option among the broader no-code integration tools a growing team weighs.

Frequently asked questions

Does the HubSpot Salesforce integration cost extra?

The native connector has no separate fee. You pay through your existing subscriptions: a HubSpot Professional or Enterprise plan (Professional starts at $890/month per HubSpot's catalog) and a Salesforce edition with API access. The integration itself is included.

How fast does data sync between HubSpot and Salesforce?

It is not real time. HubSpot checks for changes and triggers a sync roughly every 15 minutes, per HubSpot's documentation, so a change in one system takes up to about 15 minutes to appear in the other.

Can I stop certain records from syncing to Salesforce?

Yes. Use an inclusion list to define which HubSpot records are eligible to sync to Salesforce. Records outside the segment do not sync. Selective sync does the reverse, filtering which Salesforce records come into HubSpot.

Why did my Salesforce sync suddenly pause?

Usually the org hit its Salesforce API limit or accumulated too many sync errors, which can suspend the integration. Salesforce meters API calls org-wide across every connected tool, so a scoped inclusion list and active error monitoring are the real fixes, not just reconnecting.

Is a two-way sync always the right choice?

No, and defaulting to it is the most common cause of overwritten data. Assign each field an owning system and use one-way rules like "Always use Salesforce" for it. Reserve two-way for the few fields both teams genuinely co-edit.

More from the Journal