Quick answer: The native Salesforce - HubSpot integration syncs Contacts, Companies and Deals bidirectionally, but Activities (calls, meetings, notes, emails) sync one-way and only going forward - nothing from before the contact was triggered to sync - and file attachments don't sync natively at all. Most "broken sync" complaints are actually this coverage gap, not a technical failure, and closing it usually takes a one-time historical migration plus custom logic for files.
If your Salesforce - HubSpot integration looks fully connected but your team keeps hitting gaps - a call log that never shows up, a signed proposal that exists in one system but not the other - you are probably not dealing with a broken sync. You are dealing with a sync that was only ever built to cover part of the picture.
This is one of the most common - and most misunderstood - issues teams run into after installing HubSpot's native Salesforce integration. The connection works exactly as documented. The problem is that what it documents covers less than most teams assume.
It's a pattern we see across native CRM integrations generally, not just this one - we found the same "looks connected, isn't fully syncing" gap when auditing a HubSpot-Shopify integration, and again in a Calendly-Salesforce booking sync that showed green while bookings quietly landed on the wrong owner.
Signs You Might Already Have This Gap
- ●A rep references a contract or proposal that's logged as an activity, but the file itself is nowhere in HubSpot.
- ●Activity history has a hard cutoff date - nothing before a certain point ever shows up, no matter who you check.
- ●Salesforce Cases resolve or update in HubSpot as Tickets, but changes made in HubSpot never make it back to the Case.
- ●Two team members are certain a call or meeting happened, but only one CRM has a record of it.
- ●A workflow or report that depends on activity data quietly stops working for contacts synced before a certain date.
- ●Nobody on the team can say, without checking settings, which fields sync in which direction.
What the Native Salesforce-HubSpot Integration Actually Syncs
HubSpot's Salesforce integration synchronizes Contacts, Companies and Deals bidirectionally between the two platforms, alongside custom objects on supported editions. Salesforce Leads map to HubSpot Contacts, and Salesforce Cases sync to HubSpot Tickets - but only in one direction, from Salesforce to HubSpot.
Activities behave differently again. HubSpot's own documentation is explicit about this: turning on activity sync does not automatically import existing task and activity data. Individual records sync only when they are created or updated in Salesforce after the sync is switched on - anything that happened before a contact is triggered to sync stays exactly where it was.
| Data Type | Sync Direction | Where Teams Get Caught Out |
|---|---|---|
| Contacts | Two-way | Field mapping conflicts create duplicate custom properties - picklist mismatches alone can affect thousands of records in a single sync |
| Companies / Accounts | Two-way | Loose matching rules create duplicate company records |
| Deals / Opportunities | Two-way | Stage mapping mismatches when pipelines were built independently |
| Cases → Tickets | One-way | No reverse sync - HubSpot ticket updates never return to Salesforce |
| Activities (calls, meetings, notes, emails) | Non-retroactive | Only syncs from the point a contact is triggered - history before that is not backfilled |
| Files & attachments | Not synced | Requires custom development to move at all |
6,623
records flagged by picklist mismatches alone, in one Salesforce-HubSpot sync health review Loncom conducted - all from fields that looked correctly mapped until someone checked the sync status.
Why Doesn't Historical Activity Data Just "Catch Up"?
This is the detail that catches most teams out. The assumption is that once the integration is live, everything eventually syncs - it just takes time. That is not how it works. Sales emails, tasks, meetings, notes and sales content views only sync after the specific contact has been triggered to sync, and none of it applies retroactively. Marketing email events only carry over if they happened within 30 days of that trigger. Form submissions have a one-year window. Anything older simply never crosses over on its own.

Timeline sync settings in a live HubSpot-Salesforce integration. Every HubSpot event - form submissions, sales calls, meetings, notes - has to be individually enabled to sync as a Salesforce task. Left unchecked, as shown here, none of that activity ever crosses over.
In one recent CRM transition Loncom completed for a UK-based healthcare group, historical Salesforce email activity had to be migrated and mapped to the correct contact records as a distinct project step - handled separately from the live sync itself - precisely because the native connection does not backfill activity history automatically. Without that separate step, years of email history would have simply stayed behind in Salesforce.
Not sure whether your own Salesforce-HubSpot setup has this gap?
Explore Loncom's Integration Services
Files Don't Sync at All - Here's What That Costs You
The gap that causes the most damage in practice is files. Contracts, signed proposals, scoped-of-work documents, PDFs attached to a deal or a case - none of it moves through the native Salesforce-HubSpot connection. The integration was built to synchronize CRM records and activity metadata, not attached documents.
Teams usually discover this the hard way: someone on the HubSpot side goes looking for a contract that was clearly logged as an activity, and finds the record but not the file. Closing this gap is not a settings change - it requires custom code that pulls attachments from Salesforce and pushes them into HubSpot (or the reverse), built and maintained outside the native app.
"The native integration does exactly what HubSpot's documentation says it does - it syncs contacts, companies and deals. The gap almost every team misses is activities and files, and that's usually where the real cost shows up months later, when someone goes looking for a contract that was never actually transferred," says Stefan Loncar, CEO of Loncom Consulting.
Salesforce to HubSpot Object Mapping at a Glance
Beyond sync direction, it helps to know which object becomes which on the other side. This is the reference most teams end up needing when a field mapping conversation comes up:
How to Audit Your Own Salesforce-HubSpot Sync
- 1. Confirm which objects are actually set to two-way sync in your integration settings - don't assume Contacts, Companies and Deals are all configured the same way.
- 2. Identify the sync trigger date for the contacts you're troubleshooting - anything before that date will not have synced automatically.
- 3. Check whether historical activities were ever imported separately, or whether sync only started going forward from installation.
- 4. Search your workflows and reports for logic that assumes file attachments transferred - they didn't, unless custom code was built for it.
- 5. Remember Cases → Tickets is one-way only. Updates made to a ticket in HubSpot will not flow back to the related Salesforce case.
- 6. Audit custom field mappings for sync rule conflicts - Salesforce-only, HubSpot-only, two-way, or don't sync - since these are set per field, not globally.
- 7. Decide whether you need a one-time historical activity migration, ongoing custom file-sync logic, or both to close the gap for good.
In Short
The native Salesforce-HubSpot integration isn't broken - it was never built to move activity history or file attachments in the first place. It syncs Contacts, Companies and Deals reliably in both directions, and it moves new activity going forward. Everything else - historical activity, files, and anything that happened before the sync was switched on - needs to be handled separately, either through a one-time migration or custom sync logic built specifically for the gap.
If your team keeps finding missing history or missing documents months after setup, that's not a sign something has gone wrong. It's a sign the integration is doing exactly what it was built to do, and nothing more.
Sync gaps like this tend to show up downstream, too - often as HubSpot workflows that silently fail to trigger because the data they depend on never arrived, or as a dashboard that looks clean but isn't once you check what's actually behind the numbers.
Not sure what's actually syncing between your Salesforce and HubSpot instances?
Book a Free Integration Audit with Loncom
FAQ
Why isn't my Salesforce-HubSpot integration syncing correctly?
In most cases it is syncing correctly - just not as broadly as expected. Contacts, Companies and Deals sync bidirectionally, but Activities only sync one-way and going forward, and files don't sync at all. What looks like a broken integration is usually this coverage gap.
Does the HubSpot-Salesforce integration sync file attachments?
No. The native integration does not move files or attachments between the two platforms in either direction. Syncing files requires custom development built outside the standard connector.
Why are historical activities missing after I set up Salesforce-HubSpot sync?
Activity sync only applies to records created or updated after a contact is triggered to sync. It is not retroactive, so calls, meetings, notes and emails logged before that point stay in Salesforce unless they are migrated separately.
What data syncs one-way vs two-way between HubSpot and Salesforce?
Contacts, Companies and Deals sync two-way. Salesforce Cases sync one-way into HubSpot Tickets. HubSpot Activities sync one-way into Salesforce as Tasks, and only going forward from the sync trigger date.
Can I get historical Salesforce activities into HubSpot after the fact?
Yes, but it requires a separate one-time migration rather than relying on the live sync. This typically means exporting and mapping historical activity records directly to the correct HubSpot contact timelines.
Can Loncom help?
Yes. Loncom audits existing Salesforce-HubSpot integrations to identify exactly what is and isn't syncing, then builds the historical migration and custom sync logic needed to close activity and file gaps.
Share:
Leave a comment