Salesforce · HubSpot Troubleshooting

Nine ways this integration breaks. Eight of them make no noise at all.

If you are here because records are not syncing, the numbers do not match, or duplicates keep coming back — the cause is almost certainly on this page. Each failure below is named with its real root cause and the fix, whether you implement it yourself or bring someone in.

Where Integrations Fail
WHERE FAILURE ENTERS Configuration Two-way everything No inclusion list Definitions Lifecycle vs status Picklist mismatch Email-only matching Validation rules API allocation HOW IT COMPOUNDS UNSEEN Silent Reject Error queue fills nobody is alerted Drift Two databases quietly separate Lost Trust Teams revert to spreadsheets MONTHS PASS BEFORE A REPORT EXPOSES IT 2πr WHAT REMEDIATION RESTORES Visible Errors Failures alert a named owner One Database Divergence measured then closed Usable Reports Both systems reach one number SYMPTOM · ROOT CAUSE · FIX · PREVENTION
35%
Contacts diverged at audit · B2B SaaS engagement
3
Silent conflicts found · same engagement
65%
Field match before remediation · same engagement
97%
Field match after · same engagement

Trusted by 500+ organizations — including B2B SaaS and technology companies running marketing in HubSpot and revenue in Salesforce with Twopir Consulting.

Mitratech
Amberscript
RChilli
Kacific
Spinify
Ultra Consultants

Diagnosis & Remediation

  • Salesforce Partner
  • HubSpot Partner
  • Sales Cloud
  • Marketing Hub
  • Operations Hub
  • RevOps
  • Marketing Ops
  • Sales Ops
The Nine Failures

Every one of these is common. None of them is your fault.

These are the failure modes we find, in roughly the order of how often they appear. Almost all of them originate in a default setting that was never a deliberate decision.

Duplicates that keep coming back

The integration matches on email address alone. Merge the pair without surfacing the Salesforce IDs and create dates first, or merge in the wrong system first, and the sync faithfully recreates what you just cleaned up.

Records failing into an error queue nobody reads

A required field, a validation rule or an unmatched picklist rejects the write. The record sits in the error queue with no alert attached, and the two databases quietly separate.

Fields overwriting each other unpredictably

Everything was set to two-way because it looked safest. Two-way means the last write wins, and the last write is usually an automation nobody remembers building.

The integration suspended without warning

A bulk import, a list re-score or a mass property update consumes the Salesforce API allocation. Records queue rather than sync, and sustained overuse can suspend the connection entirely.

Picklists that look identical and are not

Salesforce matches on the internal API value, not the display label. A renamed label over an unchanged value, or a stray trailing space, rejects every update against that field.

A CRM full of records nobody should be working

With no inclusion list, subscribers, event no-shows and job applicants arrive alongside buyers. Reps stop trusting the queue, then stop working it — which looks like a sales problem and is not.

Attribution that vanishes at conversion

Campaign influence is captured on the contact, the lead converts to an opportunity, and the link is gone. Marketing can prove it created leads and can prove nothing about revenue.

Lifecycle stage and lead status fighting each other

Mapped directly to one another despite measuring different things — funnel position versus current activity. Each overwrites the other and neither field means anything afterwards.

Permission errors on the integration user

The integration user lacks edit rights on an object, or the profile changed during an unrelated permissions cleanup. Everything for that object stops, often without anyone connecting the two events.

The Pattern Underneath

Nine symptoms. Three actual causes.

Almost every Salesforce HubSpot integration failure traces back to one of three things: a decision that was never made, a failure that was never surfaced, or a definition that was never agreed. The symptoms look varied. The causes are not.

Decisions never made. Sync direction, field ownership, which records may cross, and what happens on a conflict — each has a default, and the defaults are chosen for safety of installation rather than for correctness in your business. Two-way on every field and no inclusion list are both defaults, and both are wrong in almost every environment.

Failures never surfaced. The integration is designed to keep running when individual records fail. That is correct behaviour and it is also why divergence compounds invisibly: a rejected write produces a queue entry, not an alarm. Without deliberate alerting, the first person to notice is whoever runs the quarterly report. HubSpot documents the error surface in its sync error guidance and the suspension causes in its suspension error guidance.

Definitions never agreed. Lifecycle stage, lead status, what counts as qualified, when marketing hands over. These are business agreements that get encoded as field mappings, and mapping fields whose definitions disagree simply makes the disagreement operational.

The practical consequence is that fixing symptoms individually does not hold. Merging duplicates without an identity strategy regenerates them; clearing an error queue without alerting refills it. Remediation has to reach the cause. Twopir Consulting does this work as a Salesforce Partner and a HubSpot Partner for growing and mid-market companies and for enterprise organisations. For the layer where most of these are fixed, see Salesforce HubSpot data sync; for the model that prevents them, Salesforce HubSpot architecture; and to have yours assessed, our integration services.

Symptom to Cause

Find the symptom, then read across to the actual cause

The most common diagnostic mistake is treating the symptom. Each row below names what you are seeing, what is really happening, and what fixes it permanently.

Symptom, root cause and durable fix
SymptomUsual root causeThe fix that holds
Records are not syncing at allIntegration user permissions, or the API allocation is exhausted and records are queued.Check the integration user's object permissions first, then the API call allocation against your Salesforce limit. Set the allocation deliberately and monitor headroom.
Some records sync, others silently do notInclusion list membership, or writes being rejected by validation rules and required fields.Read the sync error queue grouped by cause, not by count. Then reconcile the inclusion list against what sales actually needs to see.
Duplicates reappear after cleanupMerging without surfacing Salesforce IDs and create dates, or merging in the wrong system first.Surface Salesforce Contact ID, Lead ID and create date before any merge; where both records carry Salesforce IDs, merge in Salesforce first so the sync resolves the survivor.
A field keeps revertingThe field is set two-way and an automation on the other side rewrites it.Assign one authoritative system for that field and set the sync rule one-way. Record the decision in the source-of-truth matrix so it is not undone later.
Picklist updates are rejectedInternal API values differ between systems even though the labels match.Align internal values explicitly on both sides. Never rely on labels matching — they are not what Salesforce compares.
The two systems report different pipelineLifecycle and status definitions disagree, or attribution is lost at lead conversion.Agree stage definitions in writing, represent them in both systems rather than mapping one native field to the other, and carry campaign association through conversion.
Integration suspendedSustained API allocation overuse, frequently triggered by a bulk import or list re-score.Recover by freeing calls, then prevent recurrence: set the allocation, monitor it, and schedule bulk operations against known headroom.
Reps say the CRM is full of junkNo inclusion list, so every HubSpot contact crosses regardless of qualification.Build an inclusion list from real qualification criteria. Remember that Salesforce-created records sync to HubSpot regardless of the list.
How We Fix It

Remediation that reaches the cause, not just the symptom

Every engagement here starts by measuring the damage, because the size of the divergence determines whether the answer is a repair or a rebuild.

Diagnose and quantify

Establish what is actually wrong and how far it has spread, before proposing anything. The measurement is what makes the remediation plan defensible internally.

  • Record-level reconciliation across both systems
  • Sync error queue triage grouped by root cause
  • Field mapping review against actual usage
  • API allocation and headroom analysis
  • Automation conflict identification on both sides

Remediate data

Cleanup sequenced so it does not regenerate the problem. Order matters more than tooling.

  • Duplicate resolution with correct merge ordering
  • Salesforce ID and create date surfacing before merges
  • Divergent field reconciliation to the authoritative system
  • Orphaned and misassociated record repair
  • Backfill where attribution can still be recovered

Correct configuration

Changing the settings that caused it, and recording why — so the next person does not reverse the fix in good faith.

  • Sync direction corrected per field with rationale
  • Inclusion list built from real qualification criteria
  • Picklist internal-value alignment
  • Lifecycle and lead status separated properly
  • Source-of-truth matrix produced and handed over

Make failure visible

The change that prevents recurrence. Most environments we see have no alerting at all, which is why the problem grew large enough to need us.

  • Error alerting routed to a named person
  • Custom logging object for failed sync operations
  • API allocation headroom alerts
  • Quarterly reconciliation check schedule
  • Change control on new fields and workflows
How Remediation Runs

Measure, stop the bleeding, then repair in the right order

Remediation done in the wrong order regenerates the damage. Cleanup before prevention is the most common and most expensive sequencing error.

Step 01

Triage

Read the error queue and quantify divergence. Establish whether this is a repair or whether the configuration is far enough gone to warrant a rebuild — those are different projects.

Step 02

Stop the Source

Correct the configuration causing ongoing damage before touching historical data. Cleaning up while the cause is still running is work that undoes itself.

Step 03

Sequenced Cleanup

Duplicates resolved in the correct merge order, divergent fields reconciled to the authoritative system, orphaned associations repaired.

Step 04

Prevention

Alerting to a named owner, allocation monitoring, inclusion list, and the source-of-truth matrix that stops the settings drifting back.

Step 05

Verification & Handover

Re-reconcile both systems to prove the gap closed, then hand over the check schedule so your team can confirm it stays closed.

Client Outcomes

A sync that had been corrupting data for months, unnoticed

A North America B2B SaaS company where a home-built sync had failed silently. Nobody knew until the reconciliation quantified it.

Delivery Note
The diagnostic surfaced three problems we did not even know we had. By the time we saw the field mapping spec, it was obvious why the previous sync had been silently corrupting data for months. What impressed us most was that every decision was documented — we were not handed a black box. We owned the system at handover.
Twopir Project Lead Delivery reflection · B2B SaaS / cloud infrastructure · North America · 2025 Remediation
Case Study

Cloud SaaS Company — ~200 Employees, US

Three automation conflicts identified and disabled before remediation began, then an Apex error-logging layer built so failures could never be invisible again.

35%Contacts diverged at audit
65% → 97%Field match before and after
80%Data accuracy improvement
Read Full Case Study
Why Twopir

We fix the cause, then make sure you can see the next one

A remediation that clears the error queue and changes nothing else buys you about a quarter.

We measure before we touch anything

Record-level reconciliation first. Without a number, nobody can tell whether the remediation worked or whether it needed to happen at all.

We stop the cause before cleaning up

Cleaning data while the misconfiguration is still running is work that undoes itself. The order is not negotiable.

We sequence merges correctly

Merge order determines whether duplicates resolve or regenerate. It is the single most common reason cleanup projects fail twice.

We leave alerting behind

Most environments we are called into have none. Making failure visible is what turns a one-off repair into a durable fix.

We tell you when it is a rebuild

Sometimes the configuration is far enough gone that repair costs more than starting again. We say so, with the reasoning, rather than billing the repair.

Common Questions

Troubleshooting questions, answered so you can act on them

The most common cause is exhausting your Salesforce API call allocation. Bulk imports, re-scoring a large list, mass property updates and large email sends all generate significant call volume; when the allocation is consumed, records queue rather than sync, and sustained overuse can suspend the connection. Recovery means letting calls free up, then preventing recurrence by setting the API call allocation in HubSpot deliberately against your Salesforce limit and checking headroom before any bulk operation. Permission and validation errors on the integration user are the other frequent cause.

Because the merge did not resolve the pair as far as the sync is concerned. The integration matches on email address only, so the fix depends on merge order and on visibility of the Salesforce identifiers. Surface Salesforce Contact ID, Lead ID and create date on the HubSpot records before merging anything; where both records carry Salesforce IDs, merge in Salesforce first so the integration links the surviving record instead of recreating the duplicate. Without prevention at the creation points as well, cleanup regresses.

Almost certainly the field is set to a two-way sync rule and an automation on the other side is rewriting it. Two-way means the most recent write wins, and automations write more often than people do. The durable fix is to assign one authoritative system for that field, set the sync rule one-way accordingly, and record the decision so it is not reversed later by someone who assumes two-way is safer.

Salesforce compares the internal API value, not the display label. Two picklists that look identical in the interface can differ underneath — a label renamed without the value changing, a trailing space, or a case difference. Every update against the mismatched value is rejected into the error queue. Align the internal values explicitly on both sides; checking that the labels match is not sufficient.

Three causes account for most of it. Lifecycle stage and lead status mapped to each other despite measuring different things, so the funnel means something different in each system. Campaign attribution not carried through lead-to-opportunity conversion, so marketing's sourced number and the CRM's disagree structurally. And records sitting in the sync error queue that one system has and the other does not. All three are architecture problems that surface as reporting problems.

Start with the sync error queue and group the entries by cause rather than counting them — eleven thousand errors is usually three problems, not eleven thousand. Then check the integration user's object permissions, then the API call allocation against your Salesforce limit. That order resolves the large majority of cases. If the errors are spread across many causes with no dominant pattern, the problem is usually the field mapping rather than any individual rule.

It depends on how much of the configuration reflects a deliberate decision. If the mapping is broadly sound and a handful of fields and rules are wrong, repair is faster and cheaper. If everything is two-way, there is no inclusion list, no documentation and no one who can explain why any setting is what it is, rebuilding against a proper specification is usually less work than reverse-engineering the current state. We give a written recommendation either way, including when the answer is repair.

Partly, and it depends on what still exists. Where the underlying campaign membership and original source data survive on the HubSpot side, association can often be rebuilt and forward reporting restored. Where the data was overwritten rather than merely disconnected, history generally cannot be reconstructed — which is why attribution design is one of the decisions worth making before it breaks rather than after.

Next Step

If your symptom is on this page, the cause is findable

Bring us the error queue and read access to both systems, and we will tell you what is actually happening — including when the answer is that you can fix it yourself.

Salesforce Partner · HubSpot Partner · Serving US, Canada, UK, UAE, Australia & New Zealand