Salesforce to HubSpot Migration: A Practical Checklist
A phase-by-phase checklist for moving from Salesforce to HubSpot: how objects map, the import order that keeps associations intact, and what you have to rebuild by hand.
By Kartik Mishra, Revlyn ·
Migrating from Salesforce to HubSpot comes down to three jobs: map Salesforce’s data model onto HubSpot’s, load records in an order that keeps relationships intact, and rebuild automation by hand, because it doesn’t transfer. Plan roughly six to eight weeks for a standard setup, and longer if you have custom objects, Apex code, or heavily customized flows.
This checklist walks through the phases in order, with the checks that catch problems early. It’s written for RevOps leads and Salesforce admins who need a plan they can hand to a team.
Before you start: four decisions
- Why are you moving? Cost, usability, or one platform for marketing and sales. The reason shapes what you bring across and what you leave behind.
- How much history comes with you? Active contacts, open deals, and recent closed deals are the usual core. Archive the rest instead of importing everything.
- Which HubSpot plan do you need? Custom objects require Enterprise, and workflow and reporting features vary by tier. Decide before you design.
- Who owns the project? One named owner, with a Salesforce admin and a sales and marketing sponsor involved.
How Salesforce objects map to HubSpot
| Salesforce | HubSpot | Notes |
|---|---|---|
| Account | Company | Import before contacts and deals |
| Contact | Contact | HubSpot treats email as the unique identifier, so resolve duplicates first |
| Lead | Contact | HubSpot has no Lead object; use lifecycle stage and lead status |
| Person Account | Contact | Decide how to represent any associated company |
| Opportunity | Deal | Rebuild pipelines in HubSpot instead of copying stages blindly |
| Campaign | HubSpot campaign or list | Choose based on how you use campaigns |
| Case | Ticket | Requires Service Hub |
| Custom object | Custom object | Enterprise only; create objects and associations before importing |
| Owner | HubSpot user and owner | Map every owner, or records arrive unassigned |
| Flow, Process Builder, Apex | Workflows or custom code actions | Rebuilt by hand, not migrated |
Phase 1: Audit and clean in Salesforce
Data problems compound in a new system, so fix them at the source. Run a data quality audit before you export anything.
- Find duplicate contacts and companies, invalid emails, and records missing required fields.
- Flag contacts with no account, since they’ll arrive in HubSpot without a company association.
- Decide which stale leads, old deals, and unused custom fields to archive instead of migrating.
- List every report and dashboard leadership relies on, so you can rebuild them.
- Inventory automation, integrations, and AppExchange apps, including who depends on each.
- Review picklist values, because HubSpot dropdowns need matching options.
Phase 2: Design the HubSpot side first
- Pipelines and stages. Build them in HubSpot before loading deals. Use this as a chance to simplify.
- Properties. Create custom properties for the fields you’re keeping, with matching types and dropdown values.
- A Salesforce ID property. Store the original Salesforce record ID on every migrated record, so you can reconcile, de-duplicate, and trace problems later.
- Lifecycle stage and lead status. Decide how Salesforce lead statuses map. Our guide to HubSpot lifecycle stages explains the options.
- Users, teams, and permissions. Create them before import so owners can be mapped.
- Custom objects and associations, if you’re on Enterprise, created before any import.
Then build a field mapping document: one row for every field you plan to migrate, with its type, format, and any picklist translation. Anything not in the document doesn’t move.
Also decide which reporting fields to preserve, because history is hard to rebuild. At minimum, carry over the original lead source and detail, the Salesforce created date (in a custom date property), campaign history, lifecycle stage dates, owner, and closed-lost reason. Without them, your revenue attribution and funnel reports start from zero.
Phase 3: Load in dependency order
Importing in the wrong order breaks associations silently: the records exist, but they’re orphaned. Parents first, then children.
| Order | Load | Check |
|---|---|---|
| 1 | Users and owners | Every owner in Salesforce has a HubSpot match |
| 2 | Companies | Counts match; Salesforce IDs populated |
| 3 | Contacts, with company associations | Duplicate emails resolved; unassociated contacts flagged |
| 4 | Deals: open first, then closed-won history | Pipelines exist; amounts, close dates, and owners correct |
| 5 | Tickets, if used | Associated with the right contacts |
| 6 | Activities and notes | Attached to the right records |
Test the whole sequence in a sandbox or with a small batch first. A tiny rehearsal is cheaper than cleaning up a full load.
Phase 4: Rebuild automation
Salesforce automation does not migrate. Flows, Process Builder automations, Apex triggers, and formula fields all have to be rebuilt.
| Salesforce | HubSpot approach |
|---|---|
| Lead assignment rules | Rotation and routing workflows |
| Flows and Process Builder | Workflows with equivalent branching |
| Apex triggers | Workflows with custom code actions, or an API integration |
| Formula fields | Calculated properties or workflow logic |
| Email alerts | Notifications and internal emails |
| Lead scoring | HubSpot score properties |
Build the workflows but keep them paused until data validation is finished, or a half-checked import will trigger emails and tasks to the wrong people. For background, see What Is a HubSpot Workflow?
Phase 5: Validate before you go live
- Reconcile counts for each object against Salesforce.
- Spot-check about 5% of records by hand for each object, comparing field values and formats.
- Check associations: every contact with a Salesforce account should have the right company, and every deal the right contact and company.
- Verify owners, so no records are unassigned.
- Run key reports side by side in both systems and explain any differences.
- Test workflows with test records, then switch them on.
- Get sign-off from sales and marketing leaders, not just the project team.
Phase 6: Cutover and the first 30 days
- Agree a freeze window for Salesforce edits, or define a delta load for changes made during cutover.
- Load the final delta and re-run your count checks.
- Repoint integrations such as email, calendar, billing, and product data to HubSpot.
- Switch on the validated workflows and train users on the new pipeline.
- Keep Salesforce read-only for a defined period, so people can look things up.
- Review at 30 days: data quality, adoption, broken automation, and report accuracy.
If you run both systems in parallel, HubSpot’s Salesforce connector can keep data in sync during a phased move. Decide which system owns each field and which direction it syncs, and avoid two-way writes on the same field, or the systems will overwrite each other. Hold the sync off during bulk imports.
What doesn’t migrate cleanly
- Automation: Flows, Process Builder, and Apex are rebuilt, not moved.
- Formula fields and other calculated logic.
- Files and attachments: they don’t sync through the native integration, so plan a separate approach if you need them.
- Reports and dashboards: rebuild them in HubSpot.
- Custom object relationships: lookups and associations need manual mapping.
- Account hierarchies: support is limited, so check how parent-child accounts will appear.
A realistic timeline
| Weeks | Focus |
|---|---|
| 1 to 2 | Decisions, audit, and cleanup |
| 3 to 4 | HubSpot design, field mapping, sandbox rehearsal |
| 5 to 6 | Loads and validation |
| 6 to 7 | Automation rebuild and testing |
| 7 to 8 | Cutover and close support |
That’s a standard CRM-only migration. Custom objects, Apex code, and AppExchange apps can push it toward 12 weeks or more. Use your own data volumes and complexity to adjust it.
Mistakes to avoid
- Importing contacts or deals before companies, which orphans associations
- Copying Salesforce stages into HubSpot without redesigning the pipeline
- Migrating every field and record instead of what’s actually used
- Leaving owners unmapped, so automation fails
- Activating workflows before validation
- Skipping original source and date fields, which resets your reporting history
- Declaring victory at go-live without a 30-day review
Summary
A Salesforce to HubSpot migration maps Accounts to Companies, Opportunities to Deals, and Leads to Contacts with lifecycle stage, since HubSpot has no Lead object. Clean and audit in Salesforce first, design pipelines and properties in HubSpot, build a field mapping document, and keep the Salesforce ID on every record. Load users, companies, contacts, deals, tickets, and activities in that order, because the wrong order silently breaks associations.
Automation doesn’t migrate, so rebuild it as workflows and keep it paused until validation is done. Reconcile counts, spot-check about 5% of records, and run key reports side by side. Expect around six to eight weeks for a standard setup and longer with custom objects or code, and preserve source and date fields so your reporting survives the move.
Frequently asked
How long does a Salesforce to HubSpot migration take?
Around six to eight weeks for a standard migration of contacts, companies, deals, and activities. Custom objects, Apex code, and heavily customized automation can push it toward 12 weeks or more.
What happens to Salesforce Leads in HubSpot?
HubSpot has no Lead object, so leads become contacts. Use lifecycle stage and lead status to preserve their status, and plan for duplicate emails, since HubSpot treats email as a unique identifier.
Do Salesforce workflows and flows migrate?
No. Flows, Process Builder automations, Apex triggers, and formula fields must be rebuilt as HubSpot workflows, custom code actions, or integrations.
Which HubSpot plan do we need?
It depends on what you’re bringing. Standard objects work across tiers, but custom objects require Enterprise, and workflow and reporting capabilities vary by plan. Decide the plan before you design the data model.
Can we run Salesforce and HubSpot together during the transition?
Yes, the Salesforce connector can keep data in sync during a phased move. Decide which system owns each field and the sync direction, and avoid two-way writes on the same field.
What should we leave behind?
Outdated leads, unused custom fields, old workflows, and legacy structures that no longer add value. Archive them in Salesforce or an export so nothing is lost, but don’t carry them into the new system.
How do we keep attribution and reporting history?
Map original lead source, created date, campaign history, lifecycle stage dates, and closed-lost reasons into HubSpot properties before you import. Reports rebuilt after the move will only be as good as the fields that came across.
Practical CRM notes, once a month.
HubSpot tips, RevOps playbooks, and what is working for growing revenue teams. Short, useful, and never salesy.
