Dual-CRM guide · HubSpot + Salesforce

HubSpot Salesforce integration: run both CRMs without sync chaos

The HubSpot–Salesforce integration is HubSpot’s native connector that syncs contacts, leads, companies, deals, tasks and activity between the two CRMs. It works when you name a system of record for every field, gate what syncs with an inclusion list, align picklists before you connect, and run a dedicated integration user with scoped permissions and an API budget.

Updated October 2026By Joe LaGrutta, Founder, JayOh
Field sync rule · what happens on editPick a rule
Sync rule on the mapped field
Marketing edits the value in HubSpot
Sales edits the value in Salesforce
Value is deleted on one side
01 · Mechanics

How does the HubSpot Salesforce sync actually work?

Most sync problems are design problems. The connector does exactly what the mappings, the inclusion list and the integration user’s permissions tell it to do.

HubSpot objectSalesforce objectDirectionWhat to decide before you connect
ContactLead or ContactTwo-wayWhether new HubSpot contacts create Salesforce Leads or Contacts, and who owns lead conversion. Pick one; mixing both creates lead/contact duplicates.
CompanyAccountTwo-way (object sync must be on)Your account matching key (domain or an external ID) and whether HubSpot’s auto-create-company setting is on. Accounts must sync before contacts can associate to them.
DealOpportunityTwo-way (object sync must be on)Which pipeline and stages map to which opportunity record type and stages. Every active Salesforce stage needs a HubSpot stage, and vice versa.
Task / activityTask / EventMostly HubSpot → SalesforceWhich activity types to log (emails, meetings, calls) and whether Task Priority, Status and Type values match HubSpot’s fixed options.
Contact list / campaignCampaign memberHubSpot → SalesforceWhich HubSpot campaigns add members to Salesforce campaigns, so campaign influence reporting in Salesforce isn’t empty.
Custom objectsCustom objectsConfigurableOnly sync what a workflow or report in the other system actually uses. Custom object sync needs HubSpot Enterprise.

The connector requires a HubSpot Professional or Enterprise hub and a Salesforce edition with API access. HubSpot caps field mappings at 500 per object. Values that already exist when you create a mapping don’t backfill on their own; run a bulk resync or a Salesforce import.

01

The inclusion list is the gate

A HubSpot list decides which HubSpot contacts may create or update records in Salesforce. No inclusion list means every contact is eligible, including spam form fills and unsubscribed students.

Controls volume
02

Sync rules decide who wins

Each mapped field carries one of four rules. The default for most standard fields leans toward Salesforce. Two-way means “last edit wins,” which is how fields start ping-ponging between systems.

Most misunderstood
03

The integration user sets the ceiling

The connector can only read and write what its Salesforce user can. Missing field-level security, validation rules and flows that fire on its edits cause most “mystery” sync errors.

Permissions
04

API calls are a shared budget

Every sync consumes Salesforce API calls from the same daily allocation your other integrations use. Bulk updates on either side can exhaust it, and the sync queues until the limit resets.

Capacity
05

Picklists must match by value

Dropdown values sync by internal value, not label. One extra option in Salesforce, a restricted picklist or a state/country picklist mismatch blocks the whole record, not just the field.

Top error source
06

Errors queue, they don’t alert

Failed records sit in HubSpot’s sync health queue until someone looks. You can bulk-resync up to 100 errors at a time after fixing the cause; beyond that, import or touch a mapped property.

Monitoring
02 · Field mapping rules

Which sync rule should each field use?

Default to one-way. Every field gets one system of record, written down. Two-way is the exception you justify field by field.

Sync ruleWhat it doesDeletionsUse it for
Prefer Salesforce unless blankHubSpot only writes to Salesforce when the Salesforce field is empty. Salesforce values overwrite HubSpot.Salesforce deletions clear HubSpotFirmographics and contact details sales may correct: job title, phone, industry, employee band.
Always use SalesforceHubSpot never writes. Salesforce always overwrites HubSpot.Salesforce deletions clear HubSpotSales-owned truth: lead status, account type, customer status, ARR, opportunity stage-derived fields, territory.
Two-wayMost recent value wins in either system.Deletes propagate both waysA short list both teams genuinely edit, such as email opt-in context fields. Owner is effectively two-way and must match exactly.
Don’t syncNo data passes.No propagationFields one system uses internally, legacy fields you’re retiring, and anything you’re not sure about yet.
01Write the field contract firstOne row per mapped field: HubSpot internal name, Salesforce API name, type, system of record, sync rule, owner. If you can’t name an owner, don’t map it.
02Marketing-owned fields flow one way outOriginal source, latest source, lead score, MQL date and campaign fields are HubSpot’s. Map them to read-only Salesforce fields so sales can see but not overwrite them.
03Never map Salesforce ID fieldsLead ID, Contact ID and Account ID are managed by the connector. Mapping them produces “Duplicate id specified” errors.
04Match types, then valuesDropdown to picklist, multiple checkboxes to multi-select picklist, number to number, date to date. Then align every option’s internal value. Our picklist alignment tool does the diff.
05One HubSpot property, one Salesforce fieldMapping a property to two fields triggers duplicate warnings, even if one mapping is set to Don’t sync. Use a Salesforce formula field instead.
06Baseline before you flip a ruleWith no sync history, the current Salesforce value becomes the baseline and can overwrite a newer HubSpot value. Export both sides before any rule change.
HubSpot property typeCompatible Salesforce field type
Dropdown select / Radio selectPicklist, reference (lookup)
Multiple checkboxesMulti-select picklist
Single checkboxCheckbox (boolean)
NumberNumber, currency, percent (double / int)
Single-line textText, text area
Multi-line textText area
Date pickerDate, date/time
HubSpot user (custom)Not mappable. Use the owner field.

Source: HubSpot Knowledge Base, “Map HubSpot properties to Salesforce fields,” checked October 2026. Rules 01–06 are JayOh’s implementation standard.

03 · Inclusion list

What should go in your Salesforce inclusion list?

Sync people sales should see. Not everyone who ever downloaded a PDF. A tight list protects API calls, Salesforce storage and rep attention.

Include (any of)

  1. Lifecycle stage is MQL or later, or lead status is set. Sales has a reason to look.
  2. Contact owner is known. Someone in sales already owns the relationship.
  3. Associated company is a target or customer account (ICP tier A/B, or company already synced).
  4. High-intent conversion: demo, pricing or contact-sales form, meeting booked.
  5. Already synced: Salesforce Lead ID or Contact ID is known, so updates keep flowing.

Exclude (all of)

  1. Invalid or role emails: hard bounced, blocked domains, info@ and test records.
  2. Competitors, partners and students by domain or a persona property.
  3. Free-email contacts with no company until enrichment finds the employer.
  4. Spam and bot form fills flagged by a workflow or a validation property.
  5. Records you’re purging in a data cleanup, so the sync doesn’t resurrect them.
Salesforce inclusion list (active list, contacts)
GROUP A  Lifecycle stage is any of: MQL, SQL, Opportunity, Customer, Evangelist
OR GROUP B  Contact owner is known
OR GROUP C  Salesforce Lead ID is known  OR  Salesforce Contact ID is known
OR GROUP D  Recent conversion is any of: Demo request, Pricing, Contact sales
AND (every group)  Email hard bounced is not true
AND  Email domain is none of: [competitor + test domains]
AND  Persona is none of: Student, Job seeker, Vendor

Removing a contact from the list doesn’t delete it in Salesforce. It stops future updates from HubSpot. Plan your cleanup in Salesforce separately, and keep Group C so records that already synced keep updating. Start with a narrow list, check the count against your Salesforce storage and API headroom, then widen it.

04 · Common sync errors

HubSpot Salesforce sync errors: error, cause, fixThe errors we clear most often, using HubSpot’s error names. Filter by keyword or category. Every row is plain text, so you can also just search the page.

ErrorLikely causeFix
Picklists
Missing Salesforce picklist option / Mismatched options
A HubSpot dropdown value has no matching internal value on the Salesforce picklist.Match the Salesforce option API names to HubSpot internal values. Add the missing value in Salesforce or remap it in HubSpot, then resync.
Picklists
Restricted picklist value
The Salesforce picklist is restricted to its defined values and HubSpot sent something else.Align the values. Lift the restriction only if Salesforce governance allows it.
Picklists
Mismatched state or country value
Salesforce State and Country Picklists are on and HubSpot holds free-text values (“Calif.”, “USA”).Normalize HubSpot to the exact Salesforce values with a workflow or a dropdown form field. Confirm the values exist in Salesforce’s state/country settings.
Picklists
Inactive Salesforce owner / Salesforce owners not synced
The record’s owner is a deactivated Salesforce user, or the user type can’t sync.Reassign to an active user. User type must be Standard, Power Partner or Guest. Add a deactivation step to offboarding that reassigns records first.
Picklists
Missing or invalid opportunity stage / Inactive opportunity stage
Deal and opportunity stages don’t map one-to-one, or a stage was deactivated in Salesforce.Map every active stage both ways. Move open opportunities off inactive stages before you deactivate them.
Picklists
Default sales process unavailable
The integration user’s profile has no default opportunity record type or sales process.Assign a default record type to the integration user, or deactivate unused record types.
Permissions
Insufficient access / Salesforce field permission
The integration user lacks object access or field-level security on a mapped field.Grant Read and Edit on the field via a permission set dedicated to the integration user. Never fix this by making the user a System Administrator.
Duplicates
Email already in use
Another HubSpot contact already holds that email, often from a Salesforce lead and contact for the same person.Merge the HubSpot contacts, or remove the email from the stale record. Then fix the root cause: lead and contact created for one person.
Duplicates
Salesforce duplicate rule
A Salesforce matching or duplicate rule blocks the insert.Have the Salesforce admin review the rule. Merge the conflicting records, or set the rule to allow-with-alert for the integration user.
Custom code
Salesforce custom field validation rule
A validation rule requires a value or format HubSpot doesn’t send (e.g. “Industry required to save”).Default the value via the mapping, or exempt the integration user in the rule formula. Document every exemption.
Custom code
Salesforce flow / Salesforce automation
A record-triggered flow or Apex trigger errors when the integration user edits the record.Read the flow fault email, fix the flow, or add an entry condition that skips integration-user edits where the logic doesn’t apply.
Values
Type mismatch
Mapped property and field types aren’t compatible, or a field was deleted or changed type.Use the compatibility table above. Recreate the mapping after any type change on either side.
Values
String too long
HubSpot text exceeds the Salesforce field length.Raise the Salesforce field length or truncate in HubSpot with a workflow before sync.
Values
Invalid email / Missing required value
Malformed email, or a required Salesforce field (Last Name, Company) is blank.Fix the value. For Leads, default Company (e.g. “[Unknown]”) and Last Name in the mapping so form fills without them still sync.
Associations
Waiting for account to sync
The contact is associated to a Salesforce account that hasn’t synced to a HubSpot company yet.Turn on company/account object sync, or import the Salesforce accounts into HubSpot, then resync the contacts.
Associations
Association limit reached / cardinality mismatch
A record exceeds HubSpot’s association limit, or one activity is tied to several contacts when only one can sync.Remove or reassign associations. Keep one primary contact on synced activities.
Other
Duplicate id specified
A custom mapping includes a Salesforce ID field (Lead ID, Contact ID).Delete those mappings. The connector manages Salesforce IDs on its own.
Silent
Sync delays or a growing queue
Salesforce’s daily API allocation is exhausted by bulk jobs or another integration.Stagger bulk updates, tighten the inclusion list, check HubSpot’s API call setting, review high-volume automations, or buy more API capacity.
Silent
Values flip back and forth
A field is two-way and automation on both sides writes to it (lead status set by a HubSpot workflow and a Salesforce flow).Pick one system of record and change the rule to one-way. Then turn off the losing side’s automation.
Silent
Synced records arrive with blank fields
The field isn’t mapped, the rule is Don’t sync, or existing values never backfilled.Add or fix the mapping, then bulk resync or import. Spot-check five records after every mapping change.
Silent
Marketing source overwritten in Salesforce
Lead Source is editable by reps and mapped two-way, or a Salesforce flow stamps it.Map HubSpot original source to a dedicated read-only Salesforce field. Leave the rep-editable Lead Source alone.

Error names follow HubSpot’s Knowledge Base article “Common Salesforce integration sync errors” (checked October 2026). Causes and fixes reflect JayOh’s delivery experience across dual-CRM clients.

05 · Interactive checklist

Is your HubSpot–Salesforce sync healthy?

Twenty checks we run in the first week of every dual-CRM engagement. Tick what’s true today. Critical items count double.

Design 5 checks

Access & capacity 5 checks

Data 5 checks

Operations 5 checks

Sync health scoreLive
0% Fragile

Tick the checks that are true today.

Fix next

    Bands (JayOh guidance): under 50% fragile, 50–79% stable with leaks, 80%+ healthy.

    06 · Operating model

    Who should own what when you run HubSpot and Salesforce together?

    The integration breaks at the org chart before it breaks in the connector. Give each system a clear owner and one shared change process.

    AreaSystem of recordOwnerCadence
    Forms, lists, scoring, nurture, source trackingHubSpotMarketing OpsChanges logged; scoring reviewed quarterly
    Lead status, conversion, opportunity stages, forecastSalesforceSales Ops / Salesforce adminStage changes require a mapping review first
    Field mappings, inclusion list, integration userBothRevOps (one named person)Weekly error review, monthly reconciliation
    Picklist values (industry, country, persona)Salesforce, mirrored in HubSpotRevOpsNew values added to both systems same day
    Lifecycle stage definitions and the MQL→SQL handoffDocumented once, enforced in bothMarketing + Sales leadershipReviewed every two quarters

    Keep both CRMs when

    1. Marketing needs HubSpot’s automation and content tools and sales has deep Salesforce investment (CPQ, territory, forecasting, custom objects).
    2. You can staff one RevOps owner for the integration and the error queue.
    3. Fewer than roughly a quarter of your mappings need two-way sync.

    Consolidate when

    1. You pay for duplicate seats and both teams work in both tools.
    2. The sync error queue never reaches zero and reporting disagrees between systems.
    3. A merger or carve-out gives you a natural cutover point. See Salesforce to HubSpot, HubSpot to Salesforce and migration cost and timeline.
    07 · FAQ

    HubSpot Salesforce integration questions we get every week

    Can you run HubSpot and Salesforce together?
    Yes. It’s the most common B2B setup we support: HubSpot for marketing automation and Salesforce as the sales CRM, connected by HubSpot’s native connector. It works when every synced field has one system of record, an inclusion list limits what syncs, and one RevOps owner watches the error queue weekly.
    Why are my HubSpot Salesforce sync errors piling up?
    Most queues are dominated by three causes: picklist mismatches (including state and country), integration-user permissions on a newly added field, and Salesforce validation rules or flows that fire on the connector’s edits. Fix the cause, then bulk-resync up to 100 records at a time.
    Should HubSpot contacts sync to Salesforce as leads or contacts?
    Pick one. Leads suit teams that qualify before creating accounts and opportunities. Contacts suit account-based teams that work named accounts. Mixing both creates a lead and a contact for the same person, which shows up as “Email already in use” errors and split activity history.
    What’s the best sync rule for most fields?
    One-way. Use “Always use Salesforce” for sales-owned truth like lead status and customer status, “Prefer Salesforce unless blank” for details reps correct, and map marketing-owned fields from HubSpot into read-only Salesforce fields. Keep two-way for a short, justified list.
    Does the integration use Salesforce API calls?
    Yes. Every sync consumes calls from your org’s daily allocation, shared with every other integration. Bulk updates in either system can exhaust it, and the sync queues until the limit resets. Set HubSpot’s API call limit, schedule bulk jobs off-hours and keep the inclusion list tight.
    What happens if I remove a contact from the inclusion list?
    The record isn’t deleted in Salesforce. HubSpot simply stops sending updates for it. If you’re cleaning up, delete or archive in Salesforce deliberately, and keep a rule in the list for records that already have a Salesforce ID so active records keep updating.
    How long does a HubSpot–Salesforce integration take to set up properly?
    Connecting takes an afternoon. Doing it properly takes two to four weeks in our experience: a field contract and picklist alignment in week one, integration user and inclusion list in week two, then a staged sync with daily error review. Cleaning up an existing broken sync usually follows the same path, plus a duplicate merge.
    How JayOh does it

    One pod that speaks both CRMs. We fix the sync, then keep it clean.

    A RevOps consultant plus HubSpot and Salesforce developers, working your error queue and your design in the same sprint.

    Week 1Sync health auditError queue triage, field contract, picklist diff, integration-user permissions, API usage and the inclusion list, scored against the 20 checks above.
    Weeks 2–4Fix and restageMapping rules rewritten one-way where they should be, picklists aligned, duplicates merged, validation rules and flows exempted or fixed, then a staged resync.
    OngoingOperateWeekly error review, change control for new fields and stages, and monthly reconciliation. One example: a post-merger consolidation that took four platforms to one HubSpot and one Salesforce in 90 days, with bidirectional field mapping configured at the end.
    75+CRM migrations delivered
    10+HubSpot ↔ Pardot migrations
    100+RevOps engagements since 2016
    PlatinumHubSpot Solutions Partner tier
    Book a sync health review Or start with a free CRM audit. Plans and rates on pricing.