Home/ Blog/ Revenue Operations

Salesforce to HubSpot Migration: The Playbook Nobody Gives You Upfront

A Salesforce to HubSpot migration guide: object mapping, rebuilding fields and Flows, import order, consent and a clean cutover plan.

Most Salesforce to HubSpot migrations do not fail on the day the data moves. They fail three weeks later, when a sales manager opens a deal and the contact roles are missing, the activity history stops in March, and nobody can say which of two "Acme Ltd" companies is the real one. The export was fine. The mapping was the problem.

This is the order we work in when a B2B team moves from Salesforce to HubSpot. If you are still deciding whether to switch at all, read our honest HubSpot vs Salesforce comparison first. This post assumes the decision is made.

Step 1: Map Objects Before You Touch a CSV

Salesforce and HubSpot do not share a data model, and the gaps are where records go missing. Write the mapping down in a sheet that sales, marketing and finance sign off before anyone exports a file.

  • Accounts to Companies. HubSpot deduplicates companies on domain. Salesforce does not care about website fields, so expect several Accounts to collapse into one Company, or none to match at all where the website field is blank.
  • Contacts and Leads to Contacts. Salesforce keeps unconverted Leads as a separate object. Decide whether they become HubSpot contacts at lifecyclestage = Lead, records in HubSpot's Leads object if your Sales Hub tier includes it, or get archived. Do not import both and hope.
  • Opportunities to Deals. Each Salesforce Record Type with its own sales process usually becomes its own HubSpot deal pipeline. Map every Stage to a pipeline stage and write down the probability each one carries.
  • Opportunity Contact Roles to association labels. "Economic Buyer" and "Champion" do not survive a flat import. Recreate them as deal-to-contact association labels before the deal import, not after.
  • Custom objects. Check your HubSpot tier supports custom objects before promising a like-for-like move. If it does not, decide which fields flatten onto Companies or Deals.

Create a single-line text property such as legacy_salesforce_id on every object you import, and fill it from the Salesforce 18-character ID. It is the only reliable key for re-associating records, fixing a bad batch, or answering an auditor six months later.

Step 2: Rebuild Fields and Logic, Not Just Data

A Salesforce org that has been live for years carries picklists nobody uses, formula fields nobody understands and Flows that fire on edits nobody remembers. Moving all of it into HubSpot recreates the mess on a new platform. Our junk drawer post shows where that ends up.

  • Picklists. Pull field usage first. Any field empty on most records is a candidate to drop. For the rest, set HubSpot dropdown internal values to match the Salesforce API values exactly, or your import file will reject rows.
  • Validation rules. Replace them with property validation rules and required properties on deal stage changes, set per pipeline in Settings, Objects, Deals, Pipelines.
  • Flows and Apex triggers. List each automation, what triggers it and what it changes. Most rebuild as HubSpot workflows; some should simply be retired. Anything that writes to finance or billing systems needs an owner named before cutover.
  • Owners. Create HubSpot users first and map Salesforce User IDs to hubspot_owner_id by email address. Records imported before their owner exists land unassigned.

If you are building the HubSpot side from scratch, run it against our HubSpot implementation checklist so lifecycle definitions, permissions and consent settings exist before the first record arrives.

Free 30-Minute Migration Review

Planning a move from Salesforce to HubSpot?

We'll review your object mapping, pipelines and consent fields before anything is exported, so the first import is the right one.

Book Your Free Discovery Call →
Free 60-Second RevOps Diagnostic

How much pipeline revenue is your CRM leaking right now?

Unworked MQLs, stalled deal stages, and attribution blind spots all leak pipeline — how much depends on your own numbers. Answer 8 quick questions to estimate your annual revenue leak and get a prioritised fix roadmap.

Calculate Your Revenue Leak in 60 Seconds → ✓ 8 questions · ✓ Instant £ estimate · ✓ No credit card

Step 3: Import in the Right Order

Order matters because associations can only point at records that already exist. The sequence we use:

  1. Users and teams.
  2. Companies, deduplicated on domain, carrying legacy_salesforce_id.
  3. Contacts, deduplicated on email, with the parent Account's Salesforce ID in the file so they associate to the right Company.
  4. Deals into the correct pipeline and stage, with close dates and amounts in one currency format.
  5. Deal-to-contact associations with their labels.
  6. Activities: tasks, calls, emails, meetings and notes, timestamped to their original dates.

HubSpot's import tool handles the first five well for most portals. Activity history at any volume usually goes through the API or a migration tool, because file imports struggle to preserve the original timestamps and associations together. Run a test import of a few hundred records into a sandbox or a filtered test segment, check them by hand, then run the full set.

Clean before you load. HubSpot's deduplication catches exact email and domain matches but not "Acme Ltd" against "ACME Limited". Our duplicate contacts guide covers the clean-up if some get through.

Step 4: Carry Consent Across and Plan the Cutover

Marketing permissions are the field most often lost in a migration. If you email UK or EU contacts, map Salesforce opt-out and consent fields to HubSpot subscription types and set hs_legal_basis on import, so you can still show the lawful basis the ICO expects under UK GDPR and PECR. A contact imported without that history is a contact you should not email. A larger migration that changes how personal data is processed may also justify a data protection impact assessment. Our HubSpot GDPR checklist lists the settings.

Then the cutover itself:

  • Freeze. Pick a date after which nobody edits Salesforce. Export the delta since the main import and load it the night before go-live.
  • Do not run the sync connector as the migration. The HubSpot-Salesforce integration is built for two systems living side by side. Using it as a one-way move tool tends to create sync errors and overwritten fields.
  • Reconcile. Compare record counts per object, total open pipeline value and a sample of named deals between the two systems. Sign-off is a number match, not a feeling.
  • Keep Salesforce read-only for an agreed period instead of cancelling on day one. Someone will need an old record.

Frequently Asked Questions

How long does a Salesforce to HubSpot migration take?

It depends on record volume, the number of custom objects and automations, and how clean the Salesforce data is. A simple org with standard objects moves far faster than one with years of custom Apex and several Record Types. Scope it from an inventory of objects, fields and Flows rather than a calendar guess.

Can I use the HubSpot-Salesforce integration to migrate my data?

It is designed to keep both systems in sync while both are in use, not as a one-way migration tool. For a full move, import files, the HubSpot API or a dedicated migration tool are usually cleaner, with the connector switched off at cutover.

What happens to Salesforce Leads in HubSpot?

Decide before importing. Common options are contacts at the Lead lifecycle stage, records in HubSpot's Leads object where your Sales Hub tier includes it, or archiving stale Leads outside HubSpot altogether.

Will I lose my activity history?

Not if you plan for it. Tasks, calls, emails, meetings and notes can be moved with their original timestamps and associations, usually through the API, as long as the related contacts, companies and deals are imported first.

How do I keep marketing consent when moving from Salesforce?

Map Salesforce opt-out and consent fields to HubSpot subscription types and set the lawful basis property on import. Without that history you cannot show why you are allowed to email a contact.

Want a second pair of eyes on your setup?

Book a free 30-minute discovery call. We'll show you where we see the biggest leverage — no pitch deck, no fluff.

Book a Free Discovery Call →