Portmux is a Salesforce to HubSpot migration service that moves your accounts, opportunities, custom objects, and activity history into HubSpot with full field-level mapping and zero data loss. From $12K. One go-live date.
Salesforce to HubSpot is the most common CRM migration we deliver. The data models look similar on the surface, but the work lives in the differences: Salesforce's Lead vs Contact split, Account hierarchies, OpportunityLineItems with custom price books, and a decade of Activity History tied to specific User IDs that don't exist in HubSpot yet. We map every record, every relationship, and every attachment so your reps log into HubSpot on day one and find the same pipeline they had on Friday.
All Contact records with custom fields, including merged Lead-to-Contact records and their original LeadSource attribution.
Account records mapped to HubSpot Companies, with parent/child Account hierarchies preserved as company associations.
Opportunities mapped to Deals, with stage history, probability, ForecastCategory, and OpportunityLineItems flattened to line items.
Open Leads imported as HubSpot Contacts with a "Lead" lifecycle stage; converted Leads merged to existing Contacts.
Salesforce custom objects (e.g. Project__c, Subscription__c) recreated as HubSpot custom objects with all relationships intact.
Tasks, Events, EmailMessages, and Logged Calls migrated to the HubSpot timeline with original timestamps and owners.
ContentDocuments, Attachments, and ContentVersions transferred to HubSpot Files with associations to source records.
Salesforce Notes and ContentNotes moved to HubSpot Notes on the parent Contact, Company, or Deal.
Salesforce Users matched to HubSpot Users by email; ownership of every record preserved or reassigned per your rules.
Critical Salesforce reports rebuilt as HubSpot saved views and reports; legacy Reports archived as exports.
Active Salesforce automations re-implemented as HubSpot Workflows where possible; complex Apex flagged for redesign.
Salesforce Email Templates and Lightning Email Templates ported to HubSpot Marketing Email templates.
We connect to your Salesforce org via OAuth using a read-only Connected App. Bulk API 2.0 indexes every standard and custom object, including Field-Level Security and Validation Rules. You see a complete schema map within 48 hours, including every custom field, picklist, and lookup relationship.
Our engineers draft a field-level mapping document covering every Salesforce object you want migrated. Picklist values are unified, custom objects are mirrored in HubSpot, and Lead-vs-Contact merge logic is defined per your dedup rules. Nothing is written until your team signs off.
We dual-write to HubSpot for a rehearsal week so your team can validate workflows, sequences, and reports against live data. On cutover day, we redirect SFDC integrations to HubSpot, run a final Bulk API delta, and deliver a row-level reconciliation report.
Every migration has its own gotchas. Here's what we plan for on this specific path.
Salesforce splits unconverted Leads from Contacts. HubSpot has only Contacts with lifecycle stages. We define the exact dedup rule for matching converted Leads to existing Contacts, and decide what happens to open Leads owned by inactive users.
Salesforce custom objects (Project__c, Subscription__c, etc.) need to be recreated as HubSpot custom objects with the right associations. Each junction object becomes a separate associations table. We handle the API quota math.
Salesforce Activity History is queryable but rate-limited and has a 24-month default retention via UI. We use the EventLogFile and Bulk API to extract the full Task, Event, and EmailMessage history without throttling your production org.
Salesforce OLIs reference a PricebookEntry which references a Product2. HubSpot Line Items are simpler. We flatten the price book hierarchy into denormalized line items while preserving discount and quantity history.
Single-system migrations like Salesforce to HubSpot 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 →
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.