CRM migration

Migrate from HubSpot to Salesforce Sales Cloud

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 logo

HubSpot

Source

Salesforce Sales Cloud

Destination

Salesforce Sales Cloud logo

Compatibility

78%

14 of 18

objects map 1:1 between HubSpot and Salesforce Sales Cloud.

Complexity

CModerate

Timeline

4-6 weeks

Rollback included Accuracy guarantee Field-level validation

Try the reverse

Salesforce Sales Cloud
HubSpot

Overview

What this migration involves

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.

Field-level fidelity

Every standard and custom field arrives verified.

Schema-aware mapping

AI proposes the map; you confirm before any record moves.

Relationships preserved

Parent–child, lookups, and ownership stay linked.

Full activity history

Calls, emails, meetings — with original timestamps.

Attachments & notes

Documents, uploads, and inline notes move with the record.

Why teams make this switch

Two sides of the same decision

Leaving

HubSpot logo

HubSpot

What's pushing teams away

  • Feature tier surprises drive churn — sequences, calling, quoting, and advanced automation are locked behind Professional at $100/seat, causing sticker shock when teams outgrow Starter.
  • Workflow configuration complexity increases at scale — multiple reviewers on Capterra and G2 note that HubSpot experts or significant admin time are required to maintain advanced automation.
  • Cost scales linearly with seats and marketing contacts, creating large bills for teams that grow quickly or inherit high contact counts from a previous CRM.
  • Frequent product updates and UI changes force ongoing re-training — Reddit reviewers in r/hubspot cite difficulty keeping up with constant new features and interface shifts.
  • Multi-brand, multi-region, and complex permission structures expose friction that Enterprise pricing cannot fully resolve, according to RevOps feedback in HubSpot community discussions.

Choosing

Salesforce Sales Cloud logo

Salesforce Sales Cloud

What's pulling them in

  • The AppExchange marketplace with 5,000+ prebuilt apps gives enterprises integrations for nearly every business workflow without custom development.
  • Native Einstein AI for lead scoring, opportunity insights, and predictive forecasting adds intelligence without a separate platform purchase.
  • Territory management, multi-currency support, and advanced forecasting satisfy the needs of complex B2B sales organizations with structured revenue teams.
  • Slack, Tableau, and CPQ are deeply integrated into the core platform, keeping the sales stack unified for teams already in the Salesforce ecosystem.
  • Organizations with a large, established Salesforce implementation choose it because switching costs — integrations, custom code, trained admins — are prohibitive.

Object mapping

How HubSpot objects map to Salesforce Sales Cloud

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

maps to

Salesforce Sales Cloud

Lead or Contact (split required)

1:many
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Account

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Opportunity

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Opportunity Stage

lossy
Fully supported

Each 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

maps to

Salesforce Sales Cloud

Record Type + Sales Process

lossy
Fully supported

HubSpot'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)

maps to

Salesforce Sales Cloud

Lead

1:1
Fully supported

HubSpot'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

maps to

Salesforce Sales Cloud

Product2

1:1
Fully supported

HubSpot Products map to Salesforce Product2 records, with Standard Price Book entries created during import. ProductCode maps from HubSpot hs_sku.

HubSpot

Line Item

maps to

Salesforce Sales Cloud

OpportunityLineItem

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Quote

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

User

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

EmailMessage + Task

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Task (TaskSubtype = Call)

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Event

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Note

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Task

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Case

1:1
Fully supported

HubSpot 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

maps to

Salesforce Sales Cloud

Custom Object

1:1
Fully supported

HubSpot 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)

maps to

Salesforce Sales Cloud

Multi-Select Picklist or Topic

lossy
Fully supported

HubSpot 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.

Gotchas + challenges

What specifically takes care here

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 logo

HubSpot gotchas

High

Marketing Contacts billing model is migration-critical

High

Feature tier gating is not visible until onboarding

Medium

Mandatory onboarding fees inflate year-one cost

Medium

HubSpot CSV importer cannot migrate engagements or attachments

Medium

Custom objects require Enterprise and a pre-existing schema

Salesforce Sales Cloud logo

Salesforce Sales Cloud gotchas

High

Workflow Rules and Process Builder are retired

High

Bulk API batch quota exhaustion during large imports

Medium

Storage overage billing is non-obvious

Medium

Account-Contact many-to-many relationship mapping

Low

Territory and team member import ordering dependencies

Pair-specific challenges

  • Lead vs Contact split has no automated answer

    HubSpot's single Contact object with a Lifecycle Stage property does not have a direct Salesforce equivalent. Salesforce expects unqualified prospects to live as Leads and qualified buyers as Contacts attached to Accounts. We define the split rule during scoping based on the customer's Lifecycle Stage matrix, run it as the first transform during migration, and preserve the original Lifecycle Stage in a custom field on both Lead and Contact for audit. Migrations that skip this design step end up with Contacts that have no Account (orphaned) or Leads that should have been converted on day one.

  • HubSpot Workflows do not migrate to Salesforce Flow

    HubSpot Workflows and Salesforce Flow are different automation models. HubSpot uses property-triggered branching with built-in delays and CRM actions; Salesforce Flow uses record-triggered, scheduled, and screen variants with different action types and limits. We do not migrate Workflows as code. We deliver a written inventory of every active HubSpot Workflow with its trigger, conditions, actions, and recommended Salesforce Flow equivalent, and the customer's admin or a Salesforce partner rebuilds them post-migration. Sequences (sales engagement cadences) do not migrate either.

  • Activity history exceeds CSV loader capacity

    Salesforce's Data Loader and Data Import Wizard are not suitable for large engagement migrations. A mid-market HubSpot account typically has hundreds of thousands of email, call, meeting, and task records. We use the Salesforce Bulk API 2.0 with batch chunking, parent-record lookup resolution (WhoId, WhatId, AccountId), and exponential backoff on API limit responses. Without Bulk API, migrations either time out or silently drop activity records, breaking the historical timeline that sales reps rely on.

  • Salesforce field-level security and validation rules can block import

    Salesforce orgs commonly enforce validation rules (required formats, conditional requireds, picklist whitelists) and field-level security that the migrating user must explicitly bypass during data load. We coordinate with the customer's Salesforce admin to grant the migration user Modify All Data and the relevant Bulk API permission, and we either temporarily disable validation rules during load or extend them with a migration-context check. Skipping this step results in 5-30 percent record rejection on the first import attempt.

  • Marketing Contacts billing flag has no Salesforce analog

    HubSpot's Marketing Contacts billing model (a flag that determines whether the contact counts against the marketing-priced contact tier) has no direct Salesforce equivalent. Sales Cloud uses per-user licensing instead of per-contact. If the customer also uses HubSpot Marketing Hub or moves marketing automation to Salesforce Marketing Cloud Account Engagement (Pardot) or Marketing Cloud, we map opt-in status to HasOptedOutOfEmail and CampaignMember Status. Email subscription preferences migrate to Salesforce subscription management or Pardot Prospect equivalents.

Migration approach

Six steps for a successful HubSpot to Salesforce Sales Cloud data migration

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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

Context on both ends of the pair

HubSpot logo

HubSpot

Source

Strengths

  • Genuinely useful free CRM tier with no seat limit on contact records.
  • All-in-one sales engagement layer (sequences, email tracking, calling, dialer) embedded natively in the CRM, eliminating a separate integration.
  • Intuitive interface and fast onboarding for individual reps, per G2 and Capterra reviews.
  • Workflow automation triggers across contacts, deals, and tickets with a visual builder.
  • API coverage for all standard objects including custom objects at Enterprise tier.

Weaknesses

  • Pricing model is contact-based at the marketing layer — importing all records as marketing contacts can multiply the monthly bill by 4×.
  • Feature tier cliffs are frequent surprises: sequences, calling, advanced reporting, and quoting are all gated, often requiring plan upgrades mid-implementation.
  • Mandatory onboarding fees at Professional ($1,500) and Enterprise ($3,500) are not prominently disclosed on the pricing page.
  • API rate limits are restrictive for bulk migration — burst limits of 100-200 req/10sec and search endpoint limits of 4 req/sec require careful job queuing.
  • Custom objects, additional pipelines, and advanced forecasting are Enterprise-only, making cost projections difficult for growing teams.
Salesforce Sales Cloud logo

Salesforce Sales Cloud

Destination

Strengths

  • Largest enterprise app ecosystem in CRM with 5,000+ AppExchange integrations covering nearly every vertical workflow.
  • Native Einstein AI delivers lead scoring, opportunity insights, and predictive forecasting without a third-party layer.
  • Advanced territory management, multi-currency, and flexible forecasting satisfy complex B2B revenue structures.
  • Deep platform extensibility: Custom Objects, Apex, Flow, and the Metadata API allow full schema customization.
  • Well-documented REST API, Bulk API, and Composite API with published rate limits for programmatic migration.

Weaknesses

  • Pricing model is layered and opaque in practice: per-seat fees plus storage overages, add-on subscriptions, and annual uplifts compound to 30–40% above sticker price.
  • Workflow Rules and Process Builder are deprecated, forcing all orgs onto Salesforce Flow — a migration task that catches many teams by surprise.
  • Steep administrative complexity: meaningful configuration requires a dedicated Salesforce admin or consultant.
  • API rate limits are edition-gated (100k/day base for Enterprise) and easily exhausted by large historical imports without throttling.
  • Data export is exportable via Data Loader but preserving relationship integrity across 30+ objects requires careful ETL sequencing.

Complexity grading

How hard is this migration?

Higher-effort than the reverse: HubSpot's automatic association model and single Lifecycle Stage field need explicit Salesforce schema design before any data moves.

C

Overall complexity

Moderate migration

Derived from compatibility, mapping clarity, API constraints, and data volume across HubSpot and Salesforce Sales Cloud.

  • Object compatibility

    B

    1 of 8 objects need a mapping; the rest are 1:1.

  • Field mapping clarity

    A

    Hand-curated field mapping is published for this pair.

  • Timeline complexity

    B

    1–2 weeks including Salesforce schema design; faster for orgs without heavy custom objects.

  • API constraints

    B

    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

    A

    HubSpot exposes a bulk API — large-volume migrations stream efficiently.

Estimator

Estimate your HubSpot to Salesforce Sales Cloud migration cost

Rule-based pricing — no per-record fees, no manual quotes. Migrations over 2M records are scoped individually.

Step 1

What are you migrating?

Pick a category, then your source and destination platforms.

Category

FAQ

Frequently asked questions about HubSpot to Salesforce Sales Cloud data migrations

Answers to the questions buyers ask most during HubSpot to Salesforce Sales Cloud migration scoping. Not seeing yours? Book a call.

Can't find your answer?

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 consultation

Most migrations land between four and six weeks for accounts under 25,000 Contacts and 5,000 Deals with no custom objects and a clean Lifecycle Stage matrix. Migrations with custom objects, multi-pipeline Deal structures, large engagement histories (over 500,000 activity records), or multi-org destinations move to ten to sixteen weeks because of Bulk API time, Flow rebuild scope, and Lead-versus-Contact reconciliation.

Adjacent paths

Related migrations to explore

Ready when you are

Move from HubSpot.
Land in Salesforce Sales Cloud, intact.

Tell us record counts and timeline. We'll come back with a written quote inside 1 business day — no commitment, no sales pitch.

Accuracy guarantee Rollback included Quote in 1 business day