HubSpot Salesforce Integration: Setup, Sync Rules and Pitfalls

In this article
- For most teams the answer is HubSpot’s official Salesforce connector. It comes with any HubSpot Professional or Enterprise subscription and needs a Salesforce edition with API access (or Professional). It syncs contacts, leads, companies, deals, activities and campaign membership, and can sync Salesforce cases with HubSpot tickets.
- The setup work is configuration: an inclusion list that limits which contacts go to Salesforce, a sync rule for every mapped field, the lead vs contact choice, and a share of your Salesforce API calls.
- Most sync problems come from duplicate emails in Salesforce, owners who don’t exist in both systems, mismatched picklists and two systems fighting over one field. Fix those before you turn the sync on.
- Use Zapier or Make for a few one-way flows, an iPaaS or a custom integration when you need complex logic, custom objects without HubSpot Enterprise or several Salesforce orgs. Moving everything from one CRM to the other is a migration, not an integration.
Jump to
- Your options for a HubSpot and Salesforce integration
- What the official connector requires
- The typical setup: marketing in HubSpot, sales in Salesforce
- What syncs, and which system should own it
- How to set up the HubSpot Salesforce integration, step by step
- Sync rules: decide which system wins for each field
- Leads or contacts in Salesforce?
- Budget your Salesforce API calls
- Common pitfalls and how to fix them
- When the native connector is not enough
- Migrating from one to the other is a different project
- Go-live checklist
- Where Gilzor fits
Your options for a HubSpot and Salesforce integration
There are four ways to connect the two systems. They differ in what they can sync, how much logic they can carry and who maintains them. For the wider picture of Salesforce integrations, see our Salesforce integration guide.
| Option | What syncs | Direction | Cost level | Effort | Main limits |
|---|---|---|---|---|---|
| Official HubSpot connector | Contacts ↔ leads or contacts, companies ↔ accounts, deals ↔ opportunities, activities, campaign membership; custom objects on Enterprise | Two-way, set per field | Comes with HubSpot Professional or Enterprise | Days to a few weeks of configuration and cleanup | Simple field rules, no data transformation, matching by email |
| Zapier, Make and similar | Whatever a trigger and action can carry: "new form fill creates a lead" | One-way flows, two-way only if you build both | Tens to hundreds of dollars a month, rising with volume | Hours per flow | No real sync state, duplicates and loops are your problem |
| Enterprise iPaaS (Workato, MuleSoft, Boomi, Celigo) | Any object either API exposes, with transformations | Any | Usually tens of thousands of dollars a year | Weeks, needs someone who builds recipes or flows | Cost only pays off across many integrations |
| Custom API integration | Anything, with your rules, queues and logging | Any | Build cost plus maintenance | Weeks to a few months | You own the code and its upkeep |
Not sure which fits? Four questions:
Which HubSpot Salesforce integration fits you?
What the official connector requires
Check these before anyone clicks Install. According to HubSpot’s documentation as of late 2026:
- HubSpot: a Professional or Enterprise subscription of Marketing Hub, Sales Hub, Service Hub, Content Hub, Data Hub or Smart CRM. Free and Starter plans can’t use it. Syncing Salesforce custom objects needs Enterprise. The installer needs Account Access permission in HubSpot.
- Salesforce: an edition with API access, or Salesforce Professional. Group Edition is not supported. Government Cloud is.
- The connecting user: a Salesforce system administrator with API Enabled, View Setup and Configuration, Modify All on every object you want to sync (leads, contacts, accounts, opportunities, campaigns), Download AppExchange Packages, and the Task Type field visible on their profile. Customize Application is needed for the HubSpot Embed window and its automatic updates, and Modify Metadata for the Embed window or for deal sync.
- The window inside Salesforce: HubSpot is retiring its legacy managed package with the Visualforce module that showed HubSpot data on Salesforce records. HubSpot recommends uninstalling it and using HubSpot Embed instead. If an old guide tells you to add the Visualforce section to your page layouts, skip it.
Whatever HubSpot writes to Salesforce is stamped with the connecting user’s name, and that user’s permissions decide what HubSpot can see. Connect with a dedicated admin user, not a person who might leave. HubSpot lets you switch users later only to one with equal or greater permissions in the same production org.
The typical setup: marketing in HubSpot, sales in Salesforce
Most companies that run both tools split the funnel. HubSpot captures and nurtures people; Salesforce is where reps qualify, sell and forecast. A clean version of that flow looks like this:
- A visitor fills a HubSpot form. HubSpot scores and nurtures them.
- When the contact reaches your hand-off point (for example, a marketing-qualified lead), a workflow adds them to the inclusion list. Only then do they sync to Salesforce, as a lead or a contact.
- Salesforce assignment rules give the record an owner. The owner syncs back to HubSpot, so the right rep’s name appears on emails and in reports.
- The rep converts the lead and opens an opportunity. Stage, amount and close date sync to HubSpot as a deal.
- When the opportunity closes, HubSpot can update the contact’s lifecycle stage, and marketing sees which campaigns produced revenue.
What syncs, and which system should own it
Decide a system of record for every object before you map a single field. A typical split for the marketing-in-HubSpot, sales-in-Salesforce model:
| HubSpot | Salesforce | Direction | Usual system of record | Notes |
|---|---|---|---|---|
| Contact | Lead or contact | Two-way, rule per field | HubSpot for marketing fields, Salesforce for sales fields | Contacts sync by default once the integration is on; an inclusion list limits which ones. Matching is by email |
| Company | Account | Two-way, rule per field | Salesforce | Turn on in the Companies tab. Don’t auto-create companies if you sync contacts as leads |
| Deal | Opportunity | Two-way, rule per field | Salesforce | Needs deal sync turned on and stages mapped to your HubSpot pipeline |
| Timeline events (form submissions, marketing emails, notes) | Task | HubSpot → Salesforce | HubSpot | Set in the Activities tab. Pick only activities reps actually read |
| Tasks, calls, sales emails, meetings | Activities | Two-way (activity sync) | Wherever reps log them | Set in the Activities tab. If both syncs are on for one activity type, activity sync takes over to avoid duplicates |
| Contact in a workflow | Campaign member | HubSpot → Salesforce | Salesforce owns the campaign | The “Set Salesforce campaign” workflow action adds enrolled contacts to a Salesforce campaign |
| Owner | Record owner | Always two-way | Wherever you assign | Users must exist in both systems with an exact match |
| Custom object | Custom object | Two-way, Always use Salesforce or Always use HubSpot | Usually Salesforce | HubSpot Enterprise only. No mappings on Salesforce lookup fields |
HubSpot also documents a two-way sync between Salesforce cases and HubSpot tickets, which helps when service runs in HubSpot. It only picks up cases created or updated after you turn it on, so existing cases need a separate import. Each object allows up to 500 field mappings, but a good integration maps far fewer: only fields someone uses on the other side.
How to set up the HubSpot Salesforce integration, step by step
Plan for one to three weeks, most of it on decisions and data cleanup. The installation itself takes minutes.
- Write down the hand-off and the ownersAgree on three things with marketing and sales: when a contact goes to Salesforce, whether it arrives as a lead or a contact, and who assigns the owner. Put it in a one-page doc. Every later setting follows from it.
- Clean Salesforce firstTurn on duplicate and matching rules, merge leads and contacts that share an email, and fill missing emails where you can. Make sure every rep exists as a user in both systems with the same email address.
- Prepare the integration userCreate or choose a dedicated Salesforce admin user with the permissions listed above. If you use the legacy HubSpot managed package, plan to remove it and switch to HubSpot Embed.
- Install in a sandbox firstIn HubSpot, open the App Marketplace, find the Salesforce app and click Install. Tick the option that you are connecting to a sandbox, then log in to Salesforce. Ideally connect the sandbox to a HubSpot test account, not your live portal. Moving to production later means installing the package in your production org and reconnecting with a production user, so plan the switch, don’t improvise it.
- Set the inclusion listIn the integration’s data sync settings, choose a list (HubSpot now calls lists segments) that holds only the contacts sales should see. Without one, every HubSpot contact syncs, including newsletter subscribers and spam form fills.
- Choose lead or contact creationSelect whether HubSpot creates leads or contacts in Salesforce. If you choose leads, turn off automatic company creation and association to avoid duplicate accounts.
- Map fields and set sync rulesStart with the default mappings. Add custom fields one at a time and give each a sync rule (next section). Match HubSpot dropdowns to Salesforce picklist values exactly.
- Turn on companies, deals and activitiesEnable company and deal sync if you need them, map opportunity stages to your HubSpot pipeline, and choose which HubSpot activities create Salesforce tasks and which activity types sync both ways.
- Set the API allocationIn the Sync Health tab, set how many Salesforce API calls HubSpot may use per day, leaving room for your other integrations.
- Test with real scenarios, then go liveCreate a lead from a form, change an owner in Salesforce, convert a lead, close an opportunity, change a picklist value, and check each result on both sides. Repeat the setup in production, start with a small inclusion list and widen it over a few days while you watch sync errors.
Sync rules: decide which system wins for each field
Every mapped field gets one of four rules. This is where most of the thinking happens.
| Sync rule | What it does | Use it for |
|---|---|---|
| Prefer Salesforce unless blank | Salesforce values overwrite HubSpot. HubSpot sends a value only when the Salesforce field is empty | Fields marketing captures first but sales maintains: phone, job title, industry, company size |
| Always use Salesforce | Salesforce always wins. HubSpot never writes to the field | Sales-owned data: lead status, account tier, opportunity fields, anything a Salesforce Flow calculates |
| Two-way | The most recent change wins, in either system. Deletions of values sync both ways too | Few fields that both teams genuinely edit, such as email opt-out preferences or owner |
| Don’t sync | No data passes. Use it to stop a standard mapping you can’t delete | Internal fields, sensitive data, anything the other team doesn’t need |
Two details catch people out. The owner mapping always syncs two-way, even if the screen shows another rule. And a new mapping doesn’t copy existing values retroactively: records update the next time they sync, so plan a resync if you need history.
A good default: fields marketing creates (lead source, original source, scores, form answers) flow from HubSpot, and everything sales touches uses one of the Salesforce rules. Keep Two-way to a handful of fields.
Leads or contacts in Salesforce?
This choice shapes your reports and cleanup work for years, so make it on purpose.
- Sync as leads if your team qualifies new people before they become contacts on accounts, uses lead assignment rules and reports on lead conversion. Most inbound B2B teams fit here. Turn off automatic company creation in HubSpot; leads have no accounts, and auto-created companies turn into duplicates.
- Sync as contacts if sales works account-first, most new people belong to accounts you already have, or you sell to existing customers. Keep HubSpot’s company association on so contacts land on the right account.
When a HubSpot contact syncs, the connector looks for a Salesforce lead or contact with the same email and updates it. Only if it finds none does it create a new record of the type you chose.
Built by Gilzor
Results we’ve shipped




Talk to the people who build it. Tell us about your project and get a free estimate of scope, timeline and cost.
Budget your Salesforce API calls
The connector runs on your Salesforce API allocation, which every other integration shares. According to Salesforce’s limits documentation, an Enterprise Edition org gets 100,000 API requests per 24-hour period plus an amount per user license (1,000 for most full licenses). HubSpot says one contact sync can take up to four API calls per record.
- Set a ceiling. In the Sync Health tab, the "Allocated to HubSpot" value caps daily usage. "API calls used" shows the last 24 hours.
- Expect suspension, not failure. If HubSpot hits its allocation, the integration is suspended, and the suspension clears automatically once calls are available again within the rolling 24 hours. Reps see stale data meanwhile.
- Reduce noise. Big imports, bulk property updates and mass list changes in HubSpot can each trigger thousands of syncs. Schedule them, and keep the inclusion list tight.
Common pitfalls and how to fix them
| Problem | Why it happens | Fix |
|---|---|---|
| Duplicates in Salesforce | Several leads or contacts share an email, records have no email, or companies are auto-created alongside leads | Duplicate and matching rules in Salesforce, merge before go-live, turn off auto company creation when syncing leads |
| Wrong record syncs | With duplicate emails in Salesforce, HubSpot syncs with one of them, often the most recently updated | Merge duplicates, then resync the affected contacts |
| Values flip back and forth | A field is Two-way and both a HubSpot workflow and a Salesforce Flow update it | One owner per field. Move the field to Always use Salesforce, or stop one of the automations |
| Owner errors or blank owners | The user doesn’t exist in both systems or the emails differ; HubSpot rotation and Salesforce assignment rules both assign | Match users by email, pick one place that assigns owners |
| Picklist errors | A HubSpot dropdown option doesn’t exist in a restricted Salesforce picklist | Use identical internal values, refresh the mapping after Salesforce changes |
| Lifecycle stage doesn’t update from opportunities | The setting can’t move a stage backward, and the contact needs a contact role on the opportunity | Make contact roles required in your sales process |
| Everything syncs | No inclusion list, so students, competitors and spam reach Salesforce | Inclusion list driven by your hand-off criteria |
| Sync suspended | API allocation used up by a bulk change or another tool | Raise the allocation within your limits, schedule bulk jobs |
| Data that shouldn’t be there | Sensitive fields mapped "because we can" | Map only what the other team uses; set the rest to Don’t sync |
Deletion deserves its own decision. Deleting a HubSpot contact never deletes the Salesforce record. Deleting a Salesforce lead or contact can delete the HubSpot contact if you turn that setting on, which can quietly remove marketing history. Leave it off unless you have a reason.
When the native connector is not enough
The official connector is built for one HubSpot account and one Salesforce org sharing standard CRM objects. Look at other options when:
- You need custom objects but don’t have HubSpot Enterprise, or your custom objects depend on lookup fields, which the connector can’t map.
- Logic goes beyond "who wins": calculated values, conditional routing, splitting one record into several, or data that has to pass through an ERP, billing or product database on the way.
- Several orgs or portals are involved, for example regional Salesforce orgs feeding one HubSpot account.
- You need audit trails and alerting that a security or finance team will accept, with every failed record logged and retried.
- API budget is tight and you need batching or change-only syncing that you control.
In practice many teams keep the native connector for contacts, companies and deals, and add an iPaaS recipe or a small custom service for the one flow it can’t handle. A custom integration usually means a service that listens to changes (Salesforce platform events or change data capture, HubSpot webhooks), a queue, mapping and conflict rules in code, retries and monitoring. Our API integration cost guide breaks down where the hours go.
For broader data projects that combine several systems, see the cost of data integration.
Migrating from one to the other is a different project
Some teams search for an integration when they really want to leave one CRM. Moving from Salesforce to HubSpot (or the reverse) means exporting history, rebuilding pipelines, automations, reports and permissions, and retraining people. The connector can help move records, but it won’t move your Flows, validation rules, quotes or reports. Plan it as a migration with its own scope, data mapping and cutover date. If neither tool fits your process, our guide to custom CRM development cost covers the third option.
Go-live checklist
Tick what is true for your setup. It shows how ready you are to switch the sync on in production.
HubSpot Salesforce go-live
FAQ
Does HubSpot integrate with Salesforce?
Is the HubSpot Salesforce integration free?
Which Salesforce editions work with HubSpot?
Should HubSpot contacts sync as Salesforce leads or contacts?
How many Salesforce API calls does the HubSpot integration use?
Why is HubSpot creating duplicate records in Salesforce?
Where Gilzor fits
The official connector is the right start for most teams. When you need more, such as custom objects, complex routing or a third system in the flow, Gilzor’s engineers can map the data flow, build the integration and support it after launch. See Gilzor’s Salesforce integration services.
No sales pitch
Get a straight answer for your project
Tell us what you’re building. We’ll reply with options, a rough cost and timeline. If we’re not the right fit, we’ll say so.

Co-Founder of Gilzor. Works with founders and product companies on how to staff and run engineering: team extension, dedicated teams, and getting stalled projects moving again.
Gilzor · Web Development partner
Need a team for your web product?
Services
Web DevelopmentCustom websites and web apps — front-end, back-end, launch and support.→By company type
Selected projects






The team behind them





