Skip to content

Migration guide · CRM Platform

Salesforce to HubSpot migration

SalesforceHubSpot

Short answer

A Salesforce to HubSpot migration moves accounts, contacts, opportunities, activities and custom objects into HubSpot companies, contacts, deals and custom objects, and rebuilds automation as HubSpot workflows. Firms make the move to simplify administration, improve adoption and bring marketing and sales onto one platform.

Why firms make this move

Many mid-sized firms find they are paying for Salesforce complexity they do not use. HubSpot offers a simpler admin model, strong marketing tools and fast adoption, with Enterprise editions supporting custom objects and permissions for more complex needs.

The key decisions are which Salesforce customizations are still needed, how to model them in HubSpot, and how much history to bring.

What moves

  • Accounts, contacts and leads
  • Opportunities with stages, products and line items
  • Activities, emails, notes and tasks
  • Custom objects and their associations
  • Campaign and marketing history where needed
  • Users, teams and ownership

How the data maps

FromTo
AccountCompany
Contact / LeadContact (with lifecycle stage)
OpportunityDeal
Opportunity productsLine items
Task / EventTask / Meeting
Custom objectCustom object (Enterprise)
Flow / processWorkflow

See the field-by-field map ↓  ·  Migration architecture ↓

What to watch out for

  • Salesforce customizations with no direct HubSpot equivalent
  • Custom objects requiring HubSpot Enterprise
  • API limits on the Salesforce side during extraction
  • Reports leadership depends on that must be rebuilt
  • Seat types and HubSpot credits affecting cost

How Vantage Point runs the migration

  1. Discovery and data inventory: what exists, what is clean, what is worth moving
  2. Target design: objects, record types, households or companies, ownership and security
  3. Field-by-field data mapping document, signed off by business owners
  4. Cleanup and deduplication before the move, not after
  5. Test loads into a sandbox with reconciliation reports
  6. User acceptance testing with real scenarios
  7. Cutover: final delta load, integrations switched, old system set to read-only
  8. Hypercare and adoption support

Typical timeline

Typically 6 to 12 weeks for mid-sized orgs.

Frequently asked questions

Can HubSpot handle our Salesforce custom objects?

Yes, with HubSpot Enterprise, which supports custom objects, associations and permissions.

Can we run both systems during the transition?

Yes. The HubSpot–Salesforce connector can keep data in sync during a phased move.

Last reviewed October 2, 2026 by the Vantage Point team. Browse all migration paths →

Migration architecture

How data flows: Salesforce to HubSpot migration

CRM Middleware / connector layer Connected system
What syncs between systems
FromToWhatDirectionTimingHow
SalesforceHubSpotvia Extract, clean & map Companies, contacts, deals & activity → one-way test loads, then final deltamigration tooling
SalesforceHubSpotvia HubSpot–Salesforce connector Records changed during transitionOptional, for a phased cutover. ⇄ two-way real-timenative connector
SalesforceRead-only archive Full history after cutover → one-way at cutoverexport

A typical pattern, simplified. Your design depends on licenses, data ownership and volumes, which we settle in discovery.

Field-level map

Salesforce to HubSpot: field by field

50 mappings we start from on this migration, 30 of which need a transform, a lookup or a decision. Every project gets its own signed-off version; this is the baseline.

FromToHowNotes
AccountName Companyname req direct Company name.
AccountWebsite Companydomain req derive Strip protocol, www and paths. HubSpot de-duplicates companies on domain, so clean this first.
AccountPhone Companyphone direct
AccountBillingStreet / City / State / PostalCode / Country Companyaddress / city / state / zip / country direct Map Billing or Shipping, not both, unless you add custom properties for the second address.
AccountIndustry Companyindustry picklist map HubSpot's industry list is fixed. Map each Salesforce value, or keep the original in a custom property.
AccountNumberOfEmployees Companynumberofemployees direct
AccountAnnualRevenue Companyannualrevenue direct Confirm currency if the org is multi-currency.
AccountType Companytype picklist map
AccountParentId CompanyParent company association association Load all companies first, then create parent–child associations in a second pass.
AccountOwnerId Companyhubspot_owner_id req lookup Match Salesforce users to HubSpot users by email. Unmatched owners go to a holding user.
AccountId Companysalesforce_account_id (custom) req direct Keep the Salesforce ID as a unique property. It drives associations, delta loads and reconciliation.
ContactFirstName / LastName Contactfirstname / lastname req direct
ContactEmail Contactemail req direct HubSpot de-duplicates contacts on email. Resolve duplicates and blanks before loading.
ContactPhone / MobilePhone Contactphone / mobilephone direct
ContactTitle Contactjobtitle direct
ContactMailingStreet / City / State / PostalCode / Country Contactaddress / city / state / zip / country direct
ContactAccountId ContactPrimary company association req association Uses salesforce_account_id to find the company.
ContactLeadSource Contactlead_source (custom) picklist map HubSpot's original source properties are system-set, so history goes in a custom property.
ContactHasOptedOutOfEmail ContactSubscription status req manual review Import opt-outs as unsubscribed from the right subscription types before any email is sent.
ContactId Contactsalesforce_contact_id (custom) req direct
LeadStatus Contacths_lead_status picklist map Converted leads are usually skipped; their contacts carry the history.
LeadCompany Contact / Companycompany + association derive Create or match a company by domain, then associate.
LeadLead / Contact record type Contactlifecyclestage req derive Set lifecycle stage from where the record sits: lead, MQL, SQL, opportunity, customer.
OpportunityName Dealdealname req direct
OpportunityAmount Dealamount req direct
OpportunityCloseDate Dealclosedate req direct
OpportunityRecordType / sales process Dealpipeline req derive One HubSpot pipeline per distinct Salesforce sales process.
OpportunityStageName Dealdealstage req picklist map Map to stage internal IDs, not labels. Closed Won and Closed Lost must map to closed stages.
OpportunityProbability Deal(stage probability) drop HubSpot sets probability per stage.
OpportunityType Dealdealtype picklist map
OpportunityForecastCategoryName Dealhs_forecast_category picklist map
OpportunityAccountId DealCompany association req association
OpportunityContactRoleContactId / Role DealContact association + label association Use association labels (for example Decision maker) to keep the role.
OpportunityOwnerId Dealhubspot_owner_id req lookup
OpportunityLineItemProduct2Id Line itemhs_product_id lookup Load the product library first.
OpportunityLineItemQuantity / UnitPrice Line itemquantity / price direct
CaseSubject / Description Ticketsubject / content req direct
CaseStatus Tickeths_pipeline_stage req picklist map
CasePriority Tickeths_ticket_priority picklist map HubSpot values: LOW, MEDIUM, HIGH, URGENT.
CaseOrigin Ticketsource_type picklist map
CaseContactId / AccountId TicketContact and company associations association
TaskSubject / Description Taskhs_task_subject / hs_task_body direct
TaskActivityDate / Status Taskhs_timestamp / hs_task_status picklist map Status values: NOT_STARTED, IN_PROGRESS, WAITING, COMPLETED, DEFERRED.
EventStartDateTime / EndDateTime Meetinghs_meeting_start_time / hs_meeting_end_time direct
Task / EventWhoId / WhatId Task / MeetingContact, company and deal associations association Polymorphic lookups: resolve the object type before associating.
Note / ContentNoteBody Notehs_note_body direct Keep the original created date in hs_timestamp so the timeline stays in order.
EmailMessageSubject / Body / Dates Emailhs_email_subject / hs_email_html / hs_timestamp manual review Decide how much email history to bring. Older email is often loaded as notes.
ContentDocumentFiles and attachments FilesAttached to notes manual review Check file volume and size limits before planning the load.
Custom objectCustom fields Custom objectCustom properties manual review Needs HubSpot Enterprise. Re-model first: some custom objects become properties or associations.
Flow / Process BuilderAutomation WorkflowWorkflow rebuild Automation is rebuilt, not migrated. Inventory what still runs first.

Field names are the platforms' standard API names; your org's custom fields are mapped during discovery. What the "How" labels mean

How labels
direct
Value copies across unchanged.
picklist map
Each source value is mapped to a target value.
lookup
Matched to an existing record, such as a user by email.
association
Becomes a relationship between records, loaded in a later pass.
derive
Calculated or cleaned during the load.
split / concat
One field becomes several, or several become one.
rebuild
Configuration or automation that is rebuilt rather than moved.
drop
Not migrated, deliberately.
manual review
Needs a decision with your team before the load.