Migration guide · Salesforce to HubSpot

Salesforce to HubSpot Migration: checklist, mapping and timeline

Updated October 2026By Joe LaGrutta, Founder, JayOhHubSpot Platinum Partner

The short answerA Salesforce to HubSpot migration takes 8 to 14 weeks for most mid-sized orgs and costs roughly $25K–$55K in services. Accounts, Contacts, Opportunities and activities move natively. Apex, territories, CPQ and field history do not; they are redesigned. Automation and integrations, not record count, set the timeline.
Salesforce → HubSpot Fidelity check
Account → CompanyDedupe on domainNative
Opportunity → DealStages remappedNative
Lead → ContactOne person recordWorkaround
Flows → WorkflowsRebuilt by outcomeWorkaround
Apex triggersNo runtimeGap
CPQ & territoriesRedesignGap
25Salesforce components mapped: 9 native, 12 workaround, 4 gaps.
01 · Timeline and cost

How long does a Salesforce to HubSpot migration take, and what does it cost?

Records are cheap to move. Logic is expensive. Count your active automations and integrations before you look at record counts.

Org sizeRecordsObjectsAutomation & integrationsTimelineServices cost
SmallUnder 50KStandard objects onlyUnder 25 active automations, 0–2 integrations, no Apex4–6 weeks$10K–$20K
Mid50K–500KStandard + products, 1–3 custom objects25–100 automations, 3–6 integrations, light Apex8–14 weeks$25K–$55K
Complex500K+ or multiple orgs4+ custom objects, CPQ, territories100+ automations, 7+ integrations, material Apex14–24 weeks$55K–$150K+

JayOh guidance from 75+ CRM and marketing automation migrations. Services only: HubSpot licenses, Salesforce overlap months and any middleware are separate. Ranges are built on the same hourly economics as JayOh’s published pricing. Run your own numbers in the CRM migration cost estimator.

15–25%of effort: audit and design
15–20%of effort: cleanup and data load
35–50%of effort: automation, integrations, reports
10–15%of effort: cutover, training, hypercare

Typical effort split on a Mid-band Salesforce to HubSpot project (JayOh guidance).

02 · Object and field mapping

How do Salesforce objects and fields map to HubSpot?

Native means it moves. Workaround means it moves with a design choice. Gap means there is no equivalent, and somebody decides what replaces it.

25 components
SalesforceHubSpotFidelityDesign note
LeadContact (lifecycle stage Lead) or Sales Hub Leads objectWorkaroundHubSpot has one person record. Decide whether unconverted Leads become Contacts with a lifecycle stage, or also get a Leads-object record for prospecting. Dedupe Lead vs Contact by email before import.
AccountCompanyNativeDomain is the HubSpot dedupe key. Normalize website values first or auto-association creates duplicates.
Account hierarchy (Parent Account)Parent/child company associationsNativeImport parents first, then children with the parent record ID.
ContactContactNativeEmail is the dedupe key. Contacts with no email need a decision: keep as records without email, or archive.
OpportunityDealNativeMap stage, amount, close date, owner, type. Keep the Salesforce Opportunity ID as a property for reconciliation.
Opportunity record types / sales processesSeparate deal pipelinesWorkaroundEach sales process usually becomes a pipeline. Record types that only changed page layouts become property groups, not pipelines.
Opportunity Contact RolesDeal–contact associations with labelsWorkaroundAssociation labels (Decision Maker, Champion) replace roles. Labels are a Professional/Enterprise feature.
Products and price booksProduct libraryWorkaroundHubSpot has no native multi-price-book model. Multiple prices per product become currency prices, product variants or quote-template logic.
Opportunity line itemsLine items on dealsNativeImport after products and deals. Line items reference the product and deal record.
Quotes / Salesforce CPQHubSpot quotes and Commerce toolsGapBundles, approval chains, and complex discount schedules rarely move one-for-one. Scope CPQ as its own workstream.
CaseTicket (Service Hub)NativeCase record types map to ticket pipelines. Email-to-case becomes a connected inbox or help desk channel.
Campaign and campaign membersCampaigns + lists, or a campaign propertyWorkaroundCampaign membership status does not map cleanly. Store membership as list membership or a timeline of campaign properties.
Tasks, events, emails, notesEngagements (tasks, meetings, emails, notes)NativeImported via API with original timestamps, owners and associations. Decide how many years of activity to keep.
Custom objectsCustom objects (Enterprise)WorkaroundRequires a HubSpot Enterprise hub. Junction objects for many-to-many often become association labels instead of objects.
Picklists and multi-select picklistsDropdown select and multiple checkboxesNativeKeep API names as internal values so integrations and imports match. Inactive picklist values need a mapping rule.
Formula fieldsCalculation propertiesWorkaroundCross-object formulas usually need a workflow or custom code action instead.
Roll-up summary fieldsRollup properties on associated recordsWorkaroundMost sum, count, min and max rollups translate. Filtered rollups need testing.
Validation rulesProperty validation rules + required properties per pipeline stageWorkaroundStage-gated required properties cover most deal rules. Cross-field validation needs a workflow or a UI extension.
Flows, Process Builder, workflow rulesWorkflows (+ custom code actions on Data Hub / Operations Hub Professional)WorkaroundInventory every active automation and rebuild by business outcome, not one-for-one.
Apex triggers and classesCustom code actions, webhooks or middlewareGapNo equivalent runtime. Each trigger needs a redesign decision: workflow, code action, middleware, or retire.
Profiles, permission sets, role hierarchyUsers, teams, permission setsWorkaroundTeam-based visibility replaces role hierarchy. Deep hierarchies with sharing rules simplify, sometimes painfully.
Territory managementOwner rotation, teams and workflow-based assignmentGapNo native territory model. Rebuild territories as assignment logic plus team visibility.
Field history trackingProperty history (going forward)GapHistorical field changes do not import into HubSpot property history. Archive history, and carry key dates as properties.
Reports and dashboardsReports and dashboards (rebuilt)WorkaroundRebuild the reports leadership uses. Cross-object report types become custom report builder or dataset reports.
Files and attachmentsAttachments on recordsNativeMoved via API and associated to records. Large libraries need a storage decision.

Edition-dependent features (custom objects, association labels, calculation properties, custom code actions, sandboxes) reflect HubSpot packaging as of October 2026. Aligning picklists across both systems first? Use the Salesforce–HubSpot picklist alignment tool.

03 · Checklist

The Salesforce to HubSpot migration checklist: 28 stepsIn run order, across six phases. Skipping a phase does not save time; it moves the work to hypercare.

Phase 1

Decide and scope

  1. 01
    Confirm the business case in writingLicense savings, admin cost, adoption. It decides every trade-off later.
  2. 02
    Check HubSpot edition against your data modelCustom objects need Enterprise. Find out now, not in week six.
  3. 03
    Set the Salesforce exit dateWork back from the contract end with 60+ days of overlap.
  4. 04
    Name an internal owner and an exec sponsorOne person who can decide field and stage questions within 48 hours.
Phase 2

Audit Salesforce

  1. 05
    Inventory objects, fields and record countsFlag fields with under 5% fill rate for retirement.
  2. 06
    Inventory every Flow, Process Builder, workflow rule and Apex triggerActive only. Name the business outcome each one produces.
  3. 07
    Inventory integrationsBilling, ERP, support, product usage, enrichment. Note which key on Salesforce IDs.
  4. 08
    List the reports leadership actually usesUsually 10 to 15. Everything else is a nice-to-have.
  5. 09
    Back up the full orgData export plus metadata, stored outside both systems.
Phase 3

Design HubSpot

  1. 10
    Write the object and field mapSalesforce field, HubSpot property, type, internal values, transform rule.
  2. 11
    Design pipelines and stage definitions with salesEntry and exit criteria, required properties per stage.
  3. 12
    Decide the Lead modelContacts with lifecycle stages, the Leads object, or both.
  4. 13
    Design teams, permissions and visibilityReplace role hierarchy and sharing rules deliberately.
  5. 14
    Map automation to workflows by outcomeRetire, rebuild, or redesign each Salesforce automation.
Phase 4

Clean and prepare

  1. 15
    Dedupe Leads against Contacts and Accounts by domainBefore export, not after import.
  2. 16
    Normalize picklists and domainsInactive values get a mapping rule. Websites become clean domains.
  3. 17
    Map users and inactive ownersCreate deactivated users or a placeholder owner for history.
  4. 18
    Decide activity history depthCommon choice: two to three years of activity, older archived.
Phase 5

Build and test load

  1. 19
    Create properties, pipelines and associationsIncluding association labels and custom objects.
  2. 20
    Load in dependency orderUsers, companies, contacts, deals, products, line items, tickets, engagements.
  3. 21
    Reconcile counts and amountsRecords per object, open pipeline amount, closed-won by quarter.
  4. 22
    Rebuild workflows and repoint integrationsTest against the loaded data, not empty records.
  5. 23
    Rebuild priority reports and check paritySame numbers as Salesforce for the same period.
Phase 6

Cut over and hypercare

  1. 24
    Freeze Salesforce edits and run the delta loadOnly records changed since the test load.
  2. 25
    Switch integrations and formsIn one window, using a written run sheet.
  3. 26
    Train reps on their daily workflowRole-based, in their own pipeline view, on day one.
  4. 27
    Run daily error and adoption checks for two weeksSync errors, workflow failures, login and activity logging.
  5. 28
    Hold Salesforce read-only until parity sign-offThen export a final archive and decommission.
04 · What breaks

What breaks when you move from Salesforce to HubSpot?Eight places where Salesforce flexibility does not translate, and what we do about each.

Apex triggers and multi-object FlowsLogic that updates five objects on save has no HubSpot runtime. Left unplanned, it surfaces as wrong data three weeks after go-live.Fix: inventory by outcome; rebuild as workflows, custom code actions or middleware; retire what nobody can explain.
Integrations keyed on Salesforce IDsBilling, ERP, support and product-usage tools write to Salesforce record IDs. They stop syncing the moment Salesforce goes read-only.Fix: keep Salesforce IDs as HubSpot properties and build an ID crosswalk before the test load.
Lead and Contact duplicatesSalesforce lets the same person exist as a Lead and a Contact. HubSpot merges on email, so ownership and status collide.Fix: dedupe before export with explicit survivorship rules for owner, status and source.
Stage history and velocity reportsField history and stage timestamps do not import into HubSpot property history. Velocity and time-in-stage reports restart.Fix: archive history; carry key dates (created, SQL date, stage entered) as properties for trend reporting.
CPQ and price booksBundles, approval matrices and multi-price-book discounting do not map to HubSpot quotes one-for-one.Fix: scope quoting as its own workstream; simplify the catalog or keep a dedicated CPQ tool.
Territories and sharing rulesVisibility built on role hierarchy and sharing rules becomes team-based. Some reps suddenly see more, or less.Fix: design teams and permission sets first; test as three real users before go-live.
Record types doing double dutyRecord types that drive layouts, picklists and processes at once do not collapse into a single HubSpot concept.Fix: split by purpose: sales process becomes a pipeline, layout becomes a property group, picklist becomes conditional logic.
Cross-object reportsCustom report types joining four objects are rebuilt in HubSpot’s report builder, and some need a dataset or a warehouse.Fix: rebuild the 10 to 15 reports leadership uses and prove parity before cutover.
What gets simplerMarketing and sales share one recordNo connector between CRM and marketing automation, no sync errors, one lifecycle definition.
What gets simplerAdmin load dropsOps teams change properties, pipelines and workflows without a developer or a deployment cycle.
What gets simplerReps adopt fasterSequences, inbox, meetings and deal views in one place. Adoption is usually the reason the business case works.
05 · Interactive

Is your Salesforce org ready to move to HubSpot?

Ten questions, weighted toward the things that actually stall migrations. Answer honestly; the score tells you what to fix before kickoff.

1. Business logic lives mostly in Flows and workflow rules, not custom ApexApex has no HubSpot runtime; each trigger becomes a redesign decision.
2. Custom objects are few (0–3), and HubSpot Enterprise is in budget if you need themCustom objects require an Enterprise hub.
3. Quoting runs without Salesforce CPQ or multi-price-book logicCPQ is the most common reason a migration stalls.
4. Record visibility does not depend on territories or a deep role hierarchyHubSpot uses teams and permission sets, not sharing rules.
5. Every integration has a plan to repoint to HubSpotBilling, ERP and support tools often key on Salesforce IDs.
6. Lead and Contact duplicates are under control, or a dedupe pass is scopedHubSpot dedupes on email and domain; dirty data multiplies on import.
7. You know the 10–15 reports leadership actually usesRebuilding every report is the fastest way to blow the timeline.
8. A named internal owner has time for the projectField and stage decisions stall without one.
9. Your Salesforce contract leaves 60+ days of overlapOverlap is your rollback plan and your parity check.
10. Sales leadership has agreed pipeline stages and definitionsPipelines are the first thing reps see on day one.
Readiness score
–Answer the questions to score your org.
0/10answered
–likely band
–likely timeline
Fix before kickoff
  • Your top fixes appear here as you answer.

Scoring: technical questions 1–5 carry 12 points, organizational questions 6–10 carry 8. Yes = full, Partly = half, No = zero. JayOh guidance, not a quote.

From our migrations

What does a well-run CRM migration look like?

Two shapes we see often: a fast consolidation onto HubSpot, and a post-merger cleanup across both platforms.

Post-merger consolidation

4 platforms unified into 2 in 90 days

  • Audit of both Salesforce and HubSpot environments across two merging companies.
  • Harmonized objects, lifecycle stages, field naming and workflows.
  • 300+ hours of data cleansing and migration into one source of truth per system.
  • Rebuilt permissions, ownership and the HubSpot–Salesforce sync.
JayOh case study
CRM rollout on HubSpot

Live on HubSpot in 40 days

  • Audit of the legacy CRM, data, roles and automation gaps.
  • HubSpot Sales Hub built with custom properties, pipelines and lead routing.
  • Sales and marketing data cleaned and imported.
  • Role-based training with dashboards on day one.
JayOh case study

More stories on the case studies page. Not sure HubSpot is the right destination? Read HubSpot vs. Salesforce first. Moving the other way? See the HubSpot to Salesforce migration guide.

06 · FAQ

Salesforce to HubSpot migration FAQ

How long does a Salesforce to HubSpot migration take?
Most take 8 to 14 weeks. A small org with standard objects and light automation can move in 4 to 6 weeks. Orgs with custom Apex, CPQ, many integrations or 500K+ records take 14 to 24 weeks. The timeline is driven by automation and integrations more than record count.
How much does a Salesforce to HubSpot migration cost?
JayOh guidance: $10K–$20K for a small org, $25K–$55K for a mid-sized org, and $55K–$150K+ for complex orgs, for services only. HubSpot licenses and Salesforce overlap months are separate. See the CRM migration cost and timeline guide.
What does not migrate from Salesforce to HubSpot?
Apex code, territory management, field history, Salesforce CPQ logic and most cross-object report types have no direct equivalent. They are redesigned rather than moved. Data, objects, associations and activity history do migrate.
Can I migrate custom objects to HubSpot?
Yes, on a HubSpot Enterprise hub. Many Salesforce junction objects are better rebuilt as association labels, which avoids custom objects entirely.
What happens to Salesforce Leads in HubSpot?
HubSpot has one person record, the Contact. Unconverted Leads usually become Contacts with a lifecycle stage of Lead, and teams prospecting at volume can also use the Sales Hub Leads object. Dedupe Leads against Contacts before import.
Do I need a migration tool or a partner?
Self-serve tools handle record and association moves well for simple orgs. They do not redesign automation, permissions, pipelines or integrations, which is where most of the effort and risk sits once you have custom logic.
Should we run Salesforce and HubSpot in parallel?
Briefly. Keep Salesforce read-only for 30 to 60 days after cutover as your rollback and parity reference. Running both as live systems of record for longer creates conflicting data.
Next step

Get a fixed-scope migration plan before you give notice to Salesforce.We audit your org read-only, inventory every automation and integration, and return a field map, a timeline and a fixed scope.

Book a migration scoping callOr start with a free CRM audit.
75+CRM and marketing automation migrations delivered
10+HubSpot and Pardot migrations
100+RevOps engagements since 2016
PlatinumHubSpot Solutions Partner