Table of Contents
The bad news: Most HubSpot–Salesforce integrations fail. (because the setup is garbage)
We’ve developed a HubSpot Salesforce integration guide that shows you exactly how to connect HubSpot and Salesforce the right way….without the mess or migraines.
Who This Integration Is For
If your Marketing team works in HubSpot (which holds 37.36% of the CRM market) and your Sales team works in Salesforce (38% market share serving over 150,000 companies), you’ve probably run into problems. It’s likely teams don’t know what the other is doing because the two systems don’t talk to each other.
The native HubSpot-Salesforce integration is designed to fix this. It connects the two platforms so information flows automatically between them. That way, both teams can stay aligned and focused without needing to ask for constant updates.
The Typical Setup
This is a common setup in B2B companies:
- Marketing uses HubSpot, which powers marketing automation for 32% of the market and is active on 137,000+ websites, to run campaigns, collect leads, and nurture them through email, forms, and automation.
- Sales uses Salesforce to follow up, manage deals, and track pipeline.
But when you’re not integrating HubSpot with Salesforce correctly, a lead captured in HubSpot might never show up in Salesforce, Sales might call a lead with no idea what they’ve seen, clicked, or downloaded, and Marketing might not know if the lead ever closed.
What the Integration Actually Does
This isn’t just about Sales and Marketing seeing the same contacts. You’re building a RevOps system without silos.
Here’s what that looks like when HubSpot and Salesforce are properly integrated:
- Contacts and Companies stay in sync: no more mismatched records, missing lifecycle stages, or duplicate leads across platforms.
- Deals in HubSpot = Opportunities in Salesforce: with stage tracking and ownership aligned across both systems.
- Custom objects in HubSpot can be mapped to Salesforce objects: even edge-case data models stay connected.
- Activity timeline from HubSpot shows up directly in Salesforce: Sales knows exactly what happened before a deal got assigned.
- Marketing sees pipeline movement inside HubSpot: with clear visibility into what’s converting, no manual exports required.
- Workflows can update Salesforce campaigns or assign tasks from HubSpot: when native sync rules don’t go far enough.
How to Know If You Need This
If you're experiencing any of the below, (and considering B2B companies lose up to $1 trillion annually from sales and marketing misalignment, it’s worth getting serious) you're already leaking revenue due to disconnected systems:
- Contacts are created in HubSpot but don’t show up in Salesforce (or show up with missing context)
- Sales doesn’t know what happened before they got the lead
- Marketing has no visibility into pipeline or closed-won revenue
(85% of business leaders say sales-marketing alignment is the #1 lever for growth.)
- Teams are manually exporting data just to make reports match
- You’ve got duplicate records, broken associations, or misaligned owners
- Lifecycle stages and lead statuses are totally disconnected
What You Can and Can’t Sync
Before you start syncing data, you need to understand the concept behind it: object mapping.
Think of HubSpot and Salesforce as speaking different languages. Both CRMs store data as “objects,” but they don’t always call them the same thing or structure them the same way. To sync your systems correctly, you need to line up each object and its fields.
Standard vs. Custom Objects: A Quick Breakdown
- Standard Objects = default building blocks in both CRMs.
Examples:
- Contacts (HubSpot) ↔ Leads or Contacts (Salesforce)
- Companies ↔ Accounts
- Deals ↔ Opportunities
- Tickets ↔ Cases
- Custom Objects = anything you’ve built to track unique data.
These don’t sync unless they’re created and mapped manually in both systems.
Syncing these objects correctly is what makes your GTM motion work. Ownership, stage progression, associations, and automation all hinge on how your objects are mapped.
What Syncs Without Much Work
Out of the box, most core records will sync just fine as long as you’ve mapped the objects and fields properly.
Works with native sync:
- Contacts → Leads or Contacts
- Companies → Accounts
- Deals → Opportunities
- Tickets → Cases
- Activities (emails, meetings, calls) → Salesforce Tasks
Basic fields like names, emails, lifecycle stages, and owners are supported.
What Syncs If You Set It Up Right
Some things won’t break, but they won’t work well unless you do the prep:
Needs extra setup:
- Custom objects → must be manually built and mapped
- Picklists → dropdowns must match in both systems
- Marketing engagements (opens, clicks, ad views) → log as tasks via workflows
- Record associations → not all relationships map 1:1 (Salesforce uses more complex relationships)
What Doesn’t Sync by Default
Here’s where most teams run into confusion:
Won’t sync unless you intervene:
- Historical data → no retroactive sync; you must import manually
- Deleted records → deleting in one system doesn’t delete in the other
- Salesforce campaign members → can only be created using HubSpot workflows
How Sync Rules Work
Every field you sync needs a rule; this defines how conflicts are resolved:
- Prefer Salesforce unless blank → Salesforce wins unless empty
- Always use Salesforce → Salesforce wins, always
- Two-way sync → the most recent update wins
- Don’t sync → no data flows between systems
Set these wrong, and you’ll end up with incorrect owners, broken lifecycle stages, or mismatched statuses.
The Integration Blueprint: Step-by-Step Setup Guide
Syncing HubSpot and Salesforce is one of the most important things a RevOps team can do. When it’s done well, it creates a shared source of truth for Sales and Marketing. But when it’s done poorly, it creates chaos.
So it’s important to get it right.
This six-phase guide walks you through how to nail your HubSpot integration with Salesforce the right way, with long-term success in mind.
Each phase includes:
- Why it matters
- What to do
- How to do it
- What you should see when it’s working
Phase 0: Pre-Discovery
Why this matters:
HubSpot and Salesforce use different data models. If you start building before understanding how each platform works, you risk syncing the wrong records or overwriting key data.
What to do:
Understand How Objects Work
Start with Salesforce:
- Use Schema Builder (Setup > Schema Builder) to see how objects relate.
- Focus on: Leads, Contacts, Accounts, Opportunities
- Understand the flow: Salesforce starts with a Lead → converts to a Contact → links to an Account and (optionally) an Opportunity.
In HubSpot:
- Go to Data Management > Data Model Overview
- HubSpot doesn’t use conversion flows—objects like Contacts, Companies, and Deals exist independently.
- Associations (e.g. which contact belongs to which deal) are flexible, not enforced.
Confirm Your Environment
Clarify:
- Are you building in Sandbox first, or going straight to Production?
- Will both environments need to be configured separately? (They will.)
- Who from your team needs Salesforce access to do the build?
- Make sure access is granted through correct permissions, not shared logins.
Set Up the Integration User
This is the user that connects Salesforce and HubSpot. It needs specific permissions.
In Salesforce:
- Go to Setup > Users > Profiles
- Confirm the integration user has read/write access to every synced object (Leads, Contacts, Accounts, Opportunities, etc.)
- Check field-level permissions as missing access to one field can cause sync errors
- Make sure the user isn’t blocked by validation rules, picklist mismatches, or visibility restrictions
In HubSpot:
- Go to Settings > Integrations > Salesforce
- Connect the Salesforce integration using this specific user, it’s the account that actually runs the sync.
Phase 1: Discovery
Why this matters:
This phase sets the foundation for a clean, reliable sync. Strategic leaders care about how this integration will impact forecasting, reporting, and GTM visibility. Admins and technologists need clarity on object relationships, sync direction, and field mapping logic to avoid data corruption and day-to-day headaches.
This is where you prevent 80% of sync failures before they happen.
What to do:
- Define Object Mapping
- Decide which HubSpot objects will sync to which Salesforce objects
- Example:
- HubSpot Contacts → Salesforce Leads or Contacts
- HubSpot Deals → Salesforce Opportunities
- Map All Required Properties
- Create a spreadsheet of fields across all objects
- Include property name, field type, and direction of sync
- Choose Sync Rules for Each Field
- Options:
- Always use Salesforce
- Use Salesforce unless blank
- Two-way sync
- Don’t sync
- Example:
- Lead Source → Always use Salesforce
- Lifecycle Stage → Two-way sync
- Set Up Your HubSpot Inclusion List
- Go to Lists > Create Active List
- Filter for contacts you want to sync (e.g., Lifecycle Stage = MQL, Country = US)
- Set Up Salesforce Selective Sync
- Work with the Salesforce admin to ensure the integration user only sees relevant records
- Use permission sets or profile settings
Phase 2: Build
Why this matters:
This is when the integration actually starts working. If things aren’t set up correctly, data will flow to the wrong places, or not at all. Bad configuration now leads to dirty data and sync issues later.
What to do:
- Build Custom Objects and Fields (If Needed)
- If your teams use objects that don’t exist by default (like subscriptions or partners), create them in both HubSpot and Salesforce.
- Make sure the fields (names, types, and associations) match on both sides.
- Use your discovery doc and the data model diagrams to guide setup.
- Connect Salesforce to HubSpot
- In HubSpot, go to Settings > Integrations > Salesforce.
- Connect using the integration user, not someone’s personal login.
- Confirm whether you’re working in a sandbox (for testing) or production (for go-live).
- Enable Object Syncs
- Turn on sync for the objects you mapped: Contacts, Companies, Deals, Tickets, and any Custom Objects.
- Apply your inclusion list in HubSpot to control which records sync.
- In Salesforce, use permission sets and sharing rules to control what flows back.
- Map Fields and Set Sync Rules
- In the integration panel, go to Mapped Properties and add your mappings.
- Match HubSpot properties to Salesforce fields one by one.
- Choose a sync rule for each:
- Prefer Salesforce unless blank: HubSpot only fills in if Salesforce is empty
- Always use Salesforce: HubSpot never changes the field
- Two-way sync: Most recent value wins
- Do not sync: Data doesn’t move between platforms
- Be careful, as misconfigured sync rules can overwrite key fields like lead status or owner.
- Match Picklist Values and Field Types
- If a field is a dropdown, the values must match exactly in both systems.
- Check that field types are compatible: text to text, number to number, etc.
- Turn Off Auto-Enrichment (If Needed)
- If syncing Companies ↔ Accounts, disable HubSpot’s company enrichment to avoid overwriting Salesforce data.
- Also turn off auto-association by domain if you want tighter control over which contacts link to which companies.
- Automate Salesforce Actions with HubSpot Workflows
Once your integration is live, you can trigger Salesforce actions using HubSpot workflows. This automates common tasks and reduces manual effort across teams.
Automation #1: Create Salesforce Tasks
Use case: Notify Sales when a lead takes high-intent action
- Trigger: Pricing form fill, lead score threshold, demo request
- Action: “Create Salesforce Task”
- Fill in subject, priority, due date, and assign to the Salesforce owner
- Outcome: Sales follows up faster, no manual handoff needed
Automation #2: Add to Salesforce Campaigns
Use case: Sync campaign attribution (e.g., webinar, gated content, emails)
- Trigger: Form submission, email engagement
- Action: “Add to Salesforce Campaign”
- Set campaign and status (e.g., Sent, Responded)
- Outcome: Marketing influence shows up in Salesforce reports
Automation #3: Identify Leads vs. Contacts in HubSpot
Use case: HubSpot only has “Contacts,” so this helps you tell them apart
- Create two custom fields: “Salesforce Lead ID” and “Salesforce Contact ID”
- Workflow:
- If Lead ID is known → Set Record Type to “Lead”
- If Contact ID is known → Set Record Type to “Contact”
- Outcome: Cleaner segmentation and reporting in HubSpot
Phase 3: Measure
Why this matters:
Even a flawless integration setup will hit bumps. Sync errors happen when data doesn’t line up between systems….and if you don’t catch them, you’ll get bad reports, missing leads, or angry reps wondering why nothing’s showing up.
What to do:
- Monitor Sync Health
- In HubSpot, go to:
Settings > Integrations > Connected Apps > Salesforce
- Open the Errors tab in the Integration Panel
- Errors are grouped by type:
- Association
- Picklist
- Permission
- Validation Rules
- Duplicates
- Property Mappings
- Property Values
- Other (unknown)
- Fix Common Errors:
- Association Errors
A record (like a deal) is tied to something that hasn’t synced yet, usually a company or contact.
→ Fix: Sync the missing record first, then retry the original one.
- Picklist Mismatches
HubSpot is sending a dropdown value Salesforce doesn’t recognize.
→ Fix: Add the missing value in Salesforce or update the field value in HubSpot to match.
- Permission Errors
The integration user doesn’t have permission to access or update a field in Salesforce.
→ Fix: Go into the user’s profile in Salesforce and grant the right read/write access.
- Duplicate Records
Salesforce already has a record with the same email, so HubSpot can’t create a new one.
→ Fix: Merge or delete the duplicates in Salesforce, then resync the HubSpot record.
- Validation Rule Errors
Salesforce has rules that are blocking updates, like requiring a field that HubSpot isn’t sending.
→ Fix: Either send the missing field from HubSpot or update the validation rule to exclude the integration user.
- Property Mapping Errors
The mapped field in Salesforce might have been deleted or changed, or the data types don’t match.
→ Fix: Revisit your Integration Panel in HubSpot and update or remove broken mappings.
- Property Value Errors
The data format is off, maybe it’s too long or in the wrong format for Salesforce to accept.
→ Fix: Shorten or reformat the value in HubSpot, or have your admin extend the field limit in Salesforce.
- Other (Unknown) Errors
HubSpot isn’t sure what went wrong.
→ Fix: Try a resync. If it still fails, contact HubSpot support or loop in your Salesforce admin.
- Resync Fixed Records
After fixing the issue, return to the error list and click Resync for each affected record. You can also export error reports if needed.
Phase 4: Delivery & Testing
Why this matters:
A dry run catches gaps, misfires, and surprises before real contacts and deals are affected.
What to do:
- Create Test Records
- Add test Contacts, Companies, and Deals in both HubSpot and Salesforce
- Use fake data with clear naming (e.g., “UAT Test Contact 001”)
- Watch the Sync
- Confirm records appear in the other system
- Check property values, owners, and associations
- Verify sync direction behavior (e.g., did HubSpot overwrite Salesforce?)
- Use a Test-Only Inclusion List
- Filter by a property like “Test Record = True”
- Keep live data out of sync until testing is complete
- Build a Reverse Demo
- Show exactly how data flows from form fill to deal creation
- Include links to test records, screenshots, and property histories
Phase 5: Go Live and Monitor
Why this matters:
Even after launch, integrations require upkeep. Processes change and one missed setting can cause a lot of confusion.
What to do:
- Turn on Full Sync in Production
- Go to Integration Panel > Object Settings
- Activate syncing for all planned objects
- Remove Test Filters
- Replace the test inclusion list with your real one
- Check Errors Daily (First 2 Weeks)
- Treat this as a soft launch
- Fix issues before they spread
- Hold Weekly Sync Reviews
- Meet with RevOps, Sales, and Marketing to ask:
- Are the right records syncing?
- Is ownership correct?
- Is anyone seeing issues?
- Audit Quarterly
- Update field mappings if new properties are added
- Refresh inclusion logic as GTM strategy evolves
- Confirm permissions haven’t changed for the integration user
How RevPartners Tests and Launches Your Integration
Why It Matters
Most integration issues don’t show up on day one, they show up in real sales cycles. That’s why we don’t just test if the sync “works.” We test whether it holds up in real go-to-market workflows. And we do it with a structured system built into every delivery.
What Makes Our Process Different
We don’t leave testing to chance. We run structured UAT inside your GTM motion, complete with reverse demos, real sync examples, and built-in QA checkpoints.
What You’ll Get:
- A Reverse Demo that shows your team exactly how the sync works in real time
(e.g., “See how this lead capture turns into an MQL and syncs to Salesforce as a lead”)
- A UAT checklist with mapped triggers, workflows, and property sync expectations
- A fully configured Inclusion List and Selective Sync strategy to gate which records move between systems during testing and post-launch
- Real error testing with known edge cases: picklist mismatches, validation rule blocks, association gaps. We simulate them so they don’t surprise you later
- A ClickUp-based QA Task System where we log sync tests, failures, fixes, and approval before go-live
- Step-by-step deployment from sandbox to production (if required)
- Final permissions audit for the integration user
- Sync monitoring alerts pre-configured for your RevOps team
- Partner-side test log and live walkthroughs
- Ongoing bi-weekly reviews post-launch with Sales, Marketing, and Ops stakeholders
Wrapping Up
When HubSpot and Salesforce are connected the right way, you get faster follow-ups, smarter marketing, tighter reporting, and a GTM motion that can actually scale.
So take the time to set it up right, check on it often, and remember your integration will keep changing as you grow.
And ya….we can help with that 👇