Skip to content
Capra Digitals

How to Migrate From Salesforce to HubSpot Without Losing Data

Most Salesforce migrations don't lose records. They lose meaning — the history, the ownership, the reason a deal was closed lost. Here's the sequence that keeps it.

Published 30 August 2026 · Updated 30 August 2026 · 10 min read · Capra Digitals

The short answer

To migrate from Salesforce to HubSpot: map objects first (Account → Company, Contact → Contact, Opportunity → Deal, Case → Ticket), export with record IDs intact, clean and de-duplicate before import, load in dependency order (companies, then contacts, then deals, then activities), and finish with a field-level reconciliation report comparing source and target counts. A mid-market migration typically runs 4–8 weeks, with data cleanup — not the import itself — taking most of the time.

Map the object model before you touch an export

HubSpot and Salesforce look similar and behave differently. Salesforce lets a Contact exist without an Account; HubSpot associates records more loosely but drives automation off association labels. Get this wrong and every downstream report is wrong.

SalesforceHubSpotWhat breaks if you skip it
AccountCompanyDomain-based auto-association creates duplicate companies
Contact / LeadContact (with lifecycle stage)Leads imported as a separate object nobody maintains
OpportunityDealStage probabilities and close-lost reasons lost
CaseTicketSLA history and pipeline stage timing disappear
Task / EventActivity (call, meeting, task)Timeline looks empty on day one and reps stop trusting it
Custom objectCustom object (Enterprise) or child recordsSilent data loss if the edition doesn't support it

Clean before you load, not after

Every hour spent de-duplicating in the staging file saves three in HubSpot. Once bad records are live and workflows have fired on them, unwinding means undoing emails, task assignments and lifecycle-stage history.

  • De-duplicate on email for contacts and on root domain for companies — not on company name.
  • Normalise picklists. 'Closed Won', 'closed-won' and 'Won' must become one value before import.
  • Decide what happens to records with no owner and no activity in 24 months. Usually: import to a quarantine list, not the main database.
  • Fix date formats and country codes at the file level. HubSpot will accept nonsense and report on it forever.
  • Keep the Salesforce record ID in a custom property. It is your only reliable key for reconciliation and rollback.

Load in dependency order

Run a pilot with 200 records of each object before the full load. You will find at least one mapping error, and finding it at 200 records costs an afternoon rather than a weekend.

  1. 01Companies — the parent record everything else associates to.
  2. 02Contacts, associated to companies by domain or by the Salesforce Account ID you carried across.
  3. 03Deals, with pipeline and stage mapped, associated to both.
  4. 04Tickets, if you're moving Service Cloud.
  5. 05Activities and notes — the largest volume and the slowest step.
  6. 06Attachments and files, last, once associations are verified.

Reconciliation: the step that makes it defensible

A migration isn't done when the import finishes. It's done when you can hand the client a report showing source count, target count and variance for every object and every critical field, with an explanation for each variance.

We reconcile at field level rather than record level, because record counts hide the common failure: 68,000 deals imported, 12,000 of them missing close-lost reason. On our largest ticket migration we moved over 70,000 records with a full reconciliation report and 100% data integrity.

Cutover and the two weeks after

Freeze Salesforce writes on Friday, run the delta load, verify, and open HubSpot Monday morning with training already delivered. Keep Salesforce read-only for at least 60 days — it costs a little licence money and buys enormous confidence.

Plan hypercare. The first two weeks generate more support tickets than the whole build, and almost all of them are 'where did X go' rather than genuine faults.

What changed recently that affects migrations

HubSpot's pricing is seat-based, so licence planning during migration is now about who needs a paid Core Seat versus a free View-Only seat — a change that meaningfully reduces cost on large teams if you audit seat needs during the project rather than after.

Breeze AI features across the hubs lean heavily on clean, well-associated CRM data. AI summaries and prospecting agents inherit whatever mess you import, which raises the payoff for cleaning during migration rather than promising to do it later.

Common mistakes

  • Importing activities before associations are verified, so half the timeline attaches to the wrong record.
  • Dropping the Salesforce record ID — you lose your ability to reconcile or roll back.
  • Migrating everything because 'it's already there', including 40,000 dead leads you then pay to store.
  • Turning workflows on before the import finishes, so thousands of contacts get an onboarding email.
  • Cancelling Salesforce on go-live day.

Questions

People also ask

How long does a Salesforce to HubSpot migration take?

Four to eight weeks for most mid-market teams. Data cleanup and decision-making take the time; the imports themselves are days. Custom objects, ERP integrations and regulated data push it to three months or more.

Can we keep activity history?

Yes. Tasks, events, emails and notes can all be migrated and attached to the right records, but it is the highest-volume and most error-prone part of the job. Budget time for it specifically.

Do we need HubSpot Enterprise to migrate custom objects?

Custom objects require Enterprise editions. If you're on Professional, the usual answer is to model the data as an existing object with a record-type property, or to reconsider whether the custom object was ever earning its keep.

What does a reconciliation report actually contain?

Per object and per critical field: source count, imported count, variance, and the reason for each variance. It's the document that lets your CFO sign off that nothing was lost.

Can you run the migration while we keep selling?

Yes — that's the normal case. Salesforce stays live until the delta load and cutover weekend. Book a consultation and we'll map your objects on the call.

Keep reading

Next step

Want this done in your portal, not just explained?

Bring us the portal as it is. We will tell you what is worth fixing, what it costs and in what order.