Portmux
CRM → CRM MIGRATION

HubSpot to Salesforce
migration service.

Portmux is a HubSpot to Salesforce migration service for teams growing into the Salesforce platform. We move Contacts, Companies, Deals, custom properties, and lifecycle stage history with the Lead-vs-Contact split and Account hierarchy that Salesforce expects.

HubSpot uses one Contact object with lifecycle stages. Salesforce splits that into Leads (pre-qualification) and Contacts (post-qualification with an Account). The migration's hardest decision is which HubSpot Contacts become Leads and which become Contacts, and that decision comes from your lifecycle stage and qualification rules, not from a default mapping. We get that right in week one and the rest is mechanical.

FIG. HUBSPOT → SALESFORCE
SOURCE
HubSpot
CRM
DESTINATION
Salesforce
CRM
4–6
Weeks typical
0ms
Cutover downtime
$12k
Starting fee
§ WHAT WE MIGRATE

Every object, every field.
From HubSpot, into Salesforce.

Salesforce's stricter object model means we make decisions HubSpot doesn't force you to make: Lead vs Contact, Account hierarchy, Opportunity Products vs flat Deal amounts, Campaigns as a separate object instead of HubSpot Lists.
Contacts

HubSpot Contacts split into Salesforce Leads and Contacts based on your lifecycle stage and qualification rules.

Companies → Accounts

HubSpot Companies migrated to Salesforce Accounts with parent/child relationships and primary Contact assigned.

Deals → Opportunities

Deals mapped to Opportunities with stage history, close dates, amounts, and Deal-Contact associations as OpportunityContactRoles.

Custom Properties

HubSpot custom properties on Contacts/Companies/Deals migrated as Salesforce custom fields with the same picklist values and required flags.

Lifecycle Stage

HubSpot lifecycle stage history exported and stored in a Salesforce custom field with the original stage timeline preserved.

Engagements

Notes, Calls, Emails, Meetings, and Tasks from the HubSpot timeline migrated to Salesforce Activities with original timestamps and owners.

Lists → Campaigns

HubSpot Lists imported as Salesforce Campaigns with Campaign Members linked to the appropriate Lead or Contact records.

Files

HubSpot file attachments transferred to Salesforce ContentDocuments with associations to the parent Contact/Company/Deal.

Workflows

Active HubSpot Workflows analyzed and re-implemented as Salesforce Flow Builder flows where the logic is portable.

Email Templates & Sequences

HubSpot Email Templates ported to Salesforce Email Templates; Sequences re-implemented in Salesforce Engage or High-Velocity Sales Cadences.

Owners & Users

HubSpot Users matched to Salesforce Users by email; record ownership preserved or reassigned per your rules.

Forms & Submissions

Form submission data archived in a custom Salesforce object so the original capture context (page, source, UTM) is queryable.

§ HOW THIS MIGRATION RUNS

Three steps. One go-live date.

01
CONNECT

Plug into HubSpot.

We connect to HubSpot via a Private App with read scopes for CRM, Marketing, and Files. The HubSpot CRM API is paginated and rate-limited per token, we run a parallel-friendly extraction that respects daily limits. Within 48 hours you see a complete record count by object type and custom property inventory.

02
MAP

Map to Salesforce.

The biggest mapping decision is Contact-to-Lead-or-Contact. We define the rule (e.g. lifecycle stage = Lead/MQL/SQL → Salesforce Lead; SQL+/Customer → Salesforce Contact with Account). We also map HubSpot Lists to Campaigns and decide which custom properties become standard Salesforce fields versus custom fields.

03
CUTOVER

Flip the connection.

Salesforce Sandbox loads first for UAT. Your team validates Lead/Contact split, Account hierarchies, and Opportunity history against HubSpot. On cutover day, HubSpot is set to read-only (or downgraded to Marketing-only), Salesforce becomes authoritative, and we run a final delta of post-cutover HubSpot activity.

§ WHERE IT GETS HARD

HubSpot to Salesforce isn't a button.

Every migration has its own gotchas. Here's what we plan for on this specific path.

● 01

Single Contact object → Lead vs Contact

Every HubSpot Contact has to land somewhere in Salesforce. The rule isn't intuitive: a HubSpot Contact with a Company and a closed-won Deal is clearly a Salesforce Contact + Account. A Contact with no Company and no Deal might be a Lead. We define the rule in week one based on your lifecycle stage and dedup keys.

● 02

Deal pipelines to Opportunity stages

HubSpot supports multiple Deal pipelines per portal. Salesforce uses one set of Opportunity stages with Record Types per business line. We map each HubSpot pipeline to a Salesforce Record Type and translate stages, accounting for stage probability and ForecastCategory.

● 03

HubSpot custom objects

Custom Objects in HubSpot (Enterprise tier) need to become Salesforce custom objects with relationships. We recreate each object schema in Salesforce, then load the records with parent associations. HubSpot allows more flexible association schemas than Salesforce, so we lock down the cardinality during mapping.

● 04

Marketing data isolation

HubSpot Marketing data (email opens, page views, form fills) often isn't valuable in Salesforce. We let your team decide what migrates to Salesforce vs what stays in HubSpot Marketing (kept as a marketing-only license) vs what gets archived.

§ STARTING PRICE

HubSpot to Salesforce from $12K.

Single-system migrations like HubSpot to Salesforce run as Track A engagements: one source, one destination, up to 1M records, 4–6 weeks. Final price depends on object volume, custom field count, and integrations, scoped on a 20-minute call before any commitment. See full pricing →

TRACK A
FROM$12K
4–6 weeks · 1 source → 1 destination · up to 1M records
Get a quote
§ QUESTIONS

HubSpot → Salesforce, asked.

How long does a HubSpot to Salesforce migration take? +
Most HubSpot-to-Salesforce migrations run 4–6 weeks. The slowest part is your team's UAT of the Lead/Contact split, since reps need to validate that the right records landed in the right buckets. Smaller portals (under 10K Contacts, single pipeline) can finish in 3 weeks; multi-pipeline portals with custom objects take the full 6.
Should HubSpot Contacts become Salesforce Leads or Contacts? +
Both. The rule is typically: HubSpot Contacts with lifecycle stage of "Lead", "MQL", or "SQL" become Salesforce Leads. HubSpot Contacts with lifecycle stage of "Opportunity", "Customer", or "Evangelist" become Salesforce Contacts attached to an Account derived from their Company. We document the rule in your mapping doc.
Can we keep HubSpot Marketing after the CRM migration? +
Yes, and many customers do. HubSpot Marketing Hub becomes a marketing-only product, with a Salesforce-HubSpot integration syncing form fills, email engagement, and lifecycle stage updates back to Salesforce. The CRM of record is Salesforce; HubSpot becomes the marketing automation platform.
Will my HubSpot Workflows migrate to Salesforce Flow? +
Most simple HubSpot Workflows have a Salesforce Flow equivalent and we re-implement them. Complex workflows that depend on HubSpot-specific actions (set lifecycle stage, enroll in Sequence) need to be redesigned, we deliver a Flow spec for those during mapping. Marketing automations stay in HubSpot if you keep Marketing Hub.
What about HubSpot reporting? Does it port to Salesforce? +
HubSpot Custom Reports and Dashboards don't port directly. We rebuild your top 10 reports as Salesforce Reports during the engagement. The full HubSpot Reports library is exported as PDFs and CSVs for archival. For ongoing analytics, Salesforce Reports + Tableau CRM (formerly Einstein Analytics) covers most use cases.
NEXT CUTOVER

Book a 20-minute
scoping call.

Tell us what's in the source, where it's going, SaaS or custom, and when you need to be live. You'll walk away with a scoped quote, a named engineer, and a go-live date.

§ RELATED MIGRATIONS