CRM migration
Field-level mapping, validation, and rollback between HubSpot and Salesforce Sales Cloud. We move data and schema; workflows are rebuilt natively in Salesforce Sales Cloud.
HubSpot
Source
Salesforce Sales Cloud
Destination
Compatibility
14 of 18
objects map 1:1 between HubSpot and Salesforce Sales Cloud.
Complexity
CModerate
Timeline
4-6 weeks
Try the reverse
Overview
Moving from HubSpot Sales Hub to Salesforce Sales Cloud is a structural migration, not a record copy. HubSpot uses one unified Contact object with a Lifecycle Stage property to track pre-sale through customer; Salesforce splits unqualified prospects into Leads and qualified buyers into Contacts attached to Accounts. We resolve that split during scoping, design the matching Account-to-Contact convert rules in Salesforce, and preserve the original HubSpot Lifecycle Stage as a custom field for audit and reporting. Activity history (calls, emails, meetings, tasks) cannot move through Salesforce's CSV loader — we use the Bulk API 2.0 with chunking and parent-record resolution to preserve the full timeline against the right Contact and Opportunity. Workflows, sequences, and the HubSpot Marketing Contacts billing flag do not migrate; we deliver a written map of every automation requiring rebuild in Salesforce Flow plus a Marketing Cloud Account Engagement (Pardot) integration plan if marketing automation continues to live in HubSpot.
Every standard and custom field arrives verified.
AI proposes the map; you confirm before any record moves.
Parent–child, lookups, and ownership stay linked.
Calls, emails, meetings — with original timestamps.
Documents, uploads, and inline notes move with the record.
Source platform
HubSpot platform overview
Scorecard, SWOT, gotchas, and pricing for HubSpot.
Destination platform
Salesforce Sales Cloud platform overview
Scorecard, SWOT, gotchas, and pricing for Salesforce Sales Cloud.
Data migration guide
The complete Salesforce migration guide
Data model, import mechanisms, field mapping strategy, pitfalls, and cutover — by the engineers running it.
Source platform guide
HubSpot migration guide
Understand the data you're exporting from HubSpot before mapping it.
Destination checklist
Salesforce migration checklist
Pre- and post-cutover tasks for moving onto Salesforce Sales Cloud.
Source checklist
HubSpot migration checklist
Exit checklist for unwinding your HubSpot setup cleanly.
Why teams make this switch
Leaving
What's pushing teams away
Choosing
What's pulling them in
Object mapping
Each row shows how a HubSpot object lands in Salesforce Sales Cloud, including any object-level transformations, lookup resolution, or schema-design dependencies.
HubSpot
Contact
Salesforce Sales Cloud
Lead or Contact (split required)
1:manyHubSpot Contacts with Lifecycle Stage of subscriber, lead, or marketing qualified lead map to Salesforce Lead. Lifecycle Stage of sales qualified lead, opportunity, customer, evangelist, or other map to Salesforce Contact tied to an Account. We compute the split at migration time using HubSpot's lifecyclestage and hs_lead_status properties, and preserve the original Lifecycle Stage in a custom field hs_original_lifecycle__c on both Lead and Contact for audit.
HubSpot
Company
Salesforce Sales Cloud
Account
1:1HubSpot Company records map directly to Salesforce Account. The HubSpot company domain becomes the Account's Website field and is used as the dedupe key during import. Account is created before any Contact import so that the Lookup relationship is satisfied at the moment of Contact insert.
HubSpot
Deal
Salesforce Sales Cloud
Opportunity
1:1HubSpot Deals map to Salesforce Opportunity. The HubSpot dealstage property maps to Salesforce StageName, and the pipeline assignment maps to a Salesforce Sales Process or Record Type that we configure before migration. Closed-Lost reason and Closed-Won reason from HubSpot custom properties become Salesforce Loss Reason and Win Reason fields.
HubSpot
Deal Stage
Salesforce Sales Cloud
Opportunity Stage
lossyEach HubSpot pipeline becomes a Salesforce Record Type with a corresponding Sales Process that whitelists the relevant stage values. Stage probability percentages migrate from HubSpot to Salesforce StageProbability, with rounding to the nearest Salesforce-allowed integer.
HubSpot
Pipeline
Salesforce Sales Cloud
Record Type + Sales Process
lossyHubSpot's multiple deal pipelines (up to 15 on Professional, 100 on Enterprise) map to Salesforce Record Types on Opportunity. Each Record Type gets its own Page Layout and Sales Process so that stage values stay scoped per line of business.
HubSpot
Lead (Sales Hub Enterprise)
Salesforce Sales Cloud
Lead
1:1HubSpot's Lead object (introduced 2023, Enterprise tier only) maps directly to Salesforce Lead. Lead_Status from HubSpot maps to Salesforce Lead Status with a custom field hs_lead_score__c carrying any imported scoring value.
HubSpot
Product
Salesforce Sales Cloud
Product2
1:1HubSpot Products map to Salesforce Product2 records, with Standard Price Book entries created during import. ProductCode maps from HubSpot hs_sku.
HubSpot
Line Item
Salesforce Sales Cloud
OpportunityLineItem
1:1HubSpot Line Items map to Salesforce OpportunityLineItem. We resolve the Pricebook2 reference, the Product2 reference, and the parent Opportunity at migration time. Quantity, UnitPrice, and TotalPrice migrate directly.
HubSpot
Quote
Salesforce Sales Cloud
Quote
1:1HubSpot Quotes (Sales Hub Professional and above) map to Salesforce Quote, which is a Sales Cloud standard object from Professional. Quote PDFs and signed e-signature documents migrate as ContentDocument attached to the Quote.
HubSpot
Owner
Salesforce Sales Cloud
User
1:1HubSpot Owners map to Salesforce User records. We resolve owners by email match. Any HubSpot Owner without a matching Salesforce User is held in a reconciliation queue for the customer's admin to provision before record import resumes.
HubSpot
Engagement: Email
Salesforce Sales Cloud
EmailMessage + Task
1:1HubSpot email engagements migrate to Salesforce EmailMessage records (the email content) linked to an Activity Task record (the activity timeline entry). The WhoId on Task points to the converted Lead or Contact; WhatId points to the related Opportunity or Account.
HubSpot
Engagement: Call
Salesforce Sales Cloud
Task (TaskSubtype = Call)
1:1HubSpot call engagements map to Salesforce Task with TaskSubtype = Call. Call disposition, duration, and recording URL transfer to custom Task fields. Activity timeline ordering is preserved by setting ActivityDate to the original HubSpot timestamp.
HubSpot
Engagement: Meeting
Salesforce Sales Cloud
Event
1:1HubSpot meeting engagements map to Salesforce Event. StartDateTime, EndDateTime, and Location preserve. Attendee mapping links to EventRelation records pointing at the converted Leads, Contacts, and Users.
HubSpot
Engagement: Note
Salesforce Sales Cloud
Note
1:1HubSpot Notes (engagement type NOTE) migrate to Salesforce Note records linked via ContentDocumentLink to the parent record (Lead, Contact, Account, Opportunity). Note body migrates as rich text with image attachments preserved as separate ContentDocument records.
HubSpot
Engagement: Task
Salesforce Sales Cloud
Task
1:1HubSpot Task engagements map to Salesforce Task with Status, Priority, and ActivityDate preserved. Task assignment migrates by resolving HubSpot hubspot_owner_id to Salesforce OwnerId via the User mapping.
HubSpot
Ticket
Salesforce Sales Cloud
Case
1:1HubSpot Tickets migrate to Salesforce Case if the destination Salesforce org includes Service Cloud. Ticket pipeline becomes Case Record Type, ticket stages become Case Status values, and conversations migrate to EmailMessage records linked to the Case.
HubSpot
Custom Object
Salesforce Sales Cloud
Custom Object
1:1HubSpot custom objects (Enterprise-only on source) migrate to Salesforce custom objects of equivalent API name. We pre-create the destination schema, including all custom fields, lookup relationships, and validation rules, before any data import. Custom object naming convention is preserved with a __c suffix per Salesforce standard.
HubSpot
Tag (custom property)
Salesforce Sales Cloud
Multi-Select Picklist or Topic
lossyHubSpot tags stored as multi-checkbox properties migrate to Salesforce multi-select picklist fields. Tags used for content classification migrate to Salesforce Topics with TopicAssignment records. The customer chooses tag strategy during scoping.
| HubSpot | Salesforce Sales Cloud | Compatibility | |
|---|---|---|---|
| Contact | Lead or Contact (split required)1:many | Fully supported | |
| Company | Account1:1 | Fully supported | |
| Deal | Opportunity1:1 | Fully supported | |
| Deal Stage | Opportunity Stagelossy | Fully supported | |
| Pipeline | Record Type + Sales Processlossy | Fully supported | |
| Lead (Sales Hub Enterprise) | Lead1:1 | Fully supported | |
| Product | Product21:1 | Fully supported | |
| Line Item | OpportunityLineItem1:1 | Fully supported | |
| Quote | Quote1:1 | Fully supported | |
| Owner | User1:1 | Fully supported | |
| Engagement: Email | EmailMessage + Task1:1 | Fully supported | |
| Engagement: Call | Task (TaskSubtype = Call)1:1 | Fully supported | |
| Engagement: Meeting | Event1:1 | Fully supported | |
| Engagement: Note | Note1:1 | Fully supported | |
| Engagement: Task | Task1:1 | Fully supported | |
| Ticket | Case1:1 | Fully supported | |
| Custom Object | Custom Object1:1 | Fully supported | |
| Tag (custom property) | Multi-Select Picklist or Topiclossy | Fully supported |
Gotchas + challenges
Platform-specific issues from each side, plus the pair-specific challenges that don't show up on either platform's page on its own.
HubSpot gotchas
Marketing Contacts billing model is migration-critical
Feature tier gating is not visible until onboarding
Mandatory onboarding fees inflate year-one cost
HubSpot CSV importer cannot migrate engagements or attachments
Custom objects require Enterprise and a pre-existing schema
Salesforce Sales Cloud gotchas
Workflow Rules and Process Builder are retired
Bulk API batch quota exhaustion during large imports
Storage overage billing is non-obvious
Account-Contact many-to-many relationship mapping
Territory and team member import ordering dependencies
Pair-specific challenges
Migration approach
Discovery and edition selection
We audit the source HubSpot portal across tier (Starter/Professional/Enterprise), custom properties, custom objects, pipeline count, active sequences, active workflows, and engagement volume. We pair this with a Salesforce edition decision: Professional ($80/user) covers most custom-object-free migrations; Enterprise ($165/user) is required if the customer needs record-triggered Flow at scale, advanced reporting types, or Process Builder; Unlimited ($330/user) only if 24x7 support and unlimited custom apps are required. The discovery output is a written migration scope and a Salesforce edition recommendation.
Schema design and Lead-Contact split rule
We design the destination schema in Salesforce. This includes provisioning custom objects (with __c API names matched to HubSpot custom object names), custom fields (with type-mapped Salesforce field types), Record Types (one per HubSpot pipeline), Sales Processes (stage whitelist per Record Type), Page Layouts (per Record Type), and the Lead-Contact split rule based on the customer's Lifecycle Stage matrix. Schema is deployed via Salesforce metadata API or change set into a Sandbox org first for validation.
Sandbox migration and reconciliation
We run a full migration into a Salesforce Sandbox (Full Copy or Partial Copy) using production-like data volume. The customer's RevOps lead reconciles record counts (Contacts in, Leads in, Accounts in, Opportunities in, Activities in), spot-checks 25-50 random records against the HubSpot source, and signs off the schema and mapping before production migration begins. Any mapping corrections happen here, not in production.
Owner reconciliation and User provisioning
We extract every distinct HubSpot Owner referenced on Contact, Company, Deal, and Engagement records and match by email against the Salesforce destination org's User table. Owners without a matching User go to a reconciliation queue. The customer's Salesforce admin provisions any missing Users (active or inactive depending on whether the original HubSpot user is still active). Migration cannot proceed past this step because OwnerId references are required on most standard objects.
Production migration in dependency order
We run production migration in record-dependency order: Users (manual provisioning, validated), Accounts (from HubSpot Companies), Contacts (with AccountId resolved), Leads (with the Lifecycle Stage split applied), Opportunities (with AccountId, OwnerId, and RecordTypeId resolved), Products and Pricebook entries (if migrating quoting), Line Items, Quotes, Activity history (Tasks, Events, EmailMessages, Notes via Bulk API 2.0), Custom Objects (last, because they often have lookups to standard objects). Each phase emits a row-count reconciliation report before the next phase begins.
Cutover, validation, and Workflow rebuild handoff
We freeze HubSpot writes during cutover, run a final delta migration of any records modified during the migration window, then enable Salesforce as the system of record. We deliver the Workflow and Sequence inventory document to the customer's admin team. We support a one-week hypercare window where we resolve any reconciliation issues raised by the customer's sales team. We do not rebuild HubSpot Workflows as Salesforce Flow inside the migration scope; that is a separate engagement or an internal admin task.
Platform deep dives
HubSpot
Source
Strengths
Weaknesses
Salesforce Sales Cloud
Destination
Strengths
Weaknesses
Complexity grading
Higher-effort than the reverse: HubSpot's automatic association model and single Lifecycle Stage field need explicit Salesforce schema design before any data moves.
Overall complexity
Moderate migration
Derived from compatibility, mapping clarity, API constraints, and data volume across HubSpot and Salesforce Sales Cloud.
Object compatibility
1 of 8 objects need a mapping; the rest are 1:1.
Field mapping clarity
Hand-curated field mapping is published for this pair.
Timeline complexity
1–2 weeks including Salesforce schema design; faster for orgs without heavy custom objects.
API constraints
HubSpot: 110 requests per 10 seconds per installed account for OAuth apps on the latest platform versions (2025.2 / 2026.03). Free accounts: 100 req/10s and 250,000 daily requests. Professional and Enterprise: 190 req/10s. The CRM Search API has a separate ceiling of 4 requests per second per auth token. 429 is returned on exhaust..
Data volume sensitivity
HubSpot exposes a bulk API — large-volume migrations stream efficiently.
Estimator
Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.
Step 1
Pick a category, then your source and destination platforms.
Category
FAQ
Answers to the questions buyers ask most during HubSpot to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.
Walk through your HubSpot to Salesforce Sales Cloud migration with a real engineer — 30 minutes, free, written quote within 24 hours.
Book a free 30 minute consultationAdjacent paths
Other ways to leave HubSpot
Other ways to arrive at Salesforce Sales Cloud
Ready when you are
Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.