Updated October 2026By Joe LaGrutta, Founder, JayOhHubSpot Platinum Partner
Decide this before anything else. It changes the scope, the timeline and who owns forms, scoring and attribution.
| Question | Keep HubSpot for marketing | All-in on Salesforce + Account Engagement |
|---|---|---|
| What moves | CRM objects, pipelines, sales automation, reports | All of that, plus every email, form, landing page, list and nurture |
| Added timeline | Connector design and testing, usually 1–2 weeks | Marketing asset rebuild, often 4–8 weeks more |
| Marketing team impact | Minimal; tools stay the same | New tool, retraining, scoring and attribution rebuilt |
| Integration risk | Sync conflicts if field ownership is unclear | One vendor, but a second admin-heavy platform |
| Choose when | Marketing runs well on HubSpot and the driver is sales complexity | Leadership mandates one vendor or needs Salesforce-native campaign influence |
Regional teams, overlays and partner visibility that need role hierarchy and sharing rules.
TriggerCPQ, multi-step approvals, ERP and billing integrations that expect a Salesforce data model.
Most commonPE platforms and acquirers that standardize portfolio reporting on Salesforce. See post-acquisition CRM consolidation.
TriggerHere the Salesforce build, not the data load, is the long pole. User count and quoting matter more than record count.
| Band | Users | Records | Salesforce build scope | Timeline | Services cost |
|---|---|---|---|---|---|
| Small | Under 15 | Under 50K | Standard objects, one sales process, HubSpot stays for marketing | 5–8 weeks | $12K–$20K |
| Mid | 15–75 | 50K–500K | Products and price books, 2–3 sales processes, 3–6 integrations, roles and sharing | 10–16 weeks | $30K–$55K |
| Complex | 75+ | 500K+ | Custom objects, CPQ, territories, marketing also moves, ERP integration | 16–26 weeks | $55K–$150K+ |
JayOh guidance from 75+ CRM and marketing automation migrations. Services only; Salesforce licenses and HubSpot overlap are separate. Ranges use the same hourly economics as JayOh’s published pricing. Compare every migration path in the CRM migration cost and timeline guide.
Salesforce enforces relationships HubSpot never did. Load out of order and records fail, or worse, load orphaned.
| HubSpot | Salesforce | When | Design note |
|---|---|---|---|
| HubSpot record IDs | External ID field on every object | All | Store the HubSpot ID as an External ID so every load is an upsert. Re-runs and delta loads then update instead of duplicating. |
| Users and owners | Users, roles, profiles and permission sets | Load 1 | Owners must exist as Salesforce users before records load. Records owned by departed reps need a holding user or the org permission for inactive owners. |
| Companies | Accounts | Load 2 | Load parent companies before children. Salesforce does not dedupe on domain, so add matching and duplicate rules after the load, not during it. |
| Contacts associated with a company | Contacts | Load 3 | Every Salesforce Contact needs an Account. For contacts tied to several companies, pick the primary and log the rest as relationships. |
| Contacts with no company, early lifecycle | Leads | Load 3 | Write the rule in advance, for example: no company and lifecycle before SQL becomes a Lead. Everything else becomes a Contact. |
| Lifecycle stage and lead status | Lead Status + a lifecycle field on Lead and Contact | Load 3 | Salesforce has no native lifecycle across Lead and Contact. Keep a custom lifecycle field so funnel reporting survives conversion. |
| Deal pipelines | Sales processes + Opportunity record types | Config | One pipeline usually becomes one sales process and record type. Build these before any Opportunity loads. |
| Deal stages | Opportunity stages with probability and forecast category | Config | Forecast category is a decision HubSpot never asked you to make. Agree it with finance before the build. |
| Deals | Opportunities | Load 4 | Every Opportunity needs an Account. Deals with no company, or several, need a primary-account rule. |
| Deal–contact associations and labels | Opportunity Contact Roles | Load 5 | Labels such as Champion or Decision Maker become role values. Pick one primary contact role per Opportunity. |
| Products | Product2 + PricebookEntry | Load 5 | Products need an entry in the standard price book before any custom price book, and one entry per currency. |
| Line items | OpportunityLineItem | Load 6 | A line item fails if its product has no PricebookEntry in the Opportunity’s price book and currency. |
| Tickets | Cases | Load 6 | Ticket pipelines become case record types and support processes. Help desk channels become email-to-case or a service tool. |
| Custom objects | Custom objects (lookup or master-detail) | Load 6 | Master-detail cascades deletes and sharing and enables roll-up summaries. Choose per relationship, deliberately. |
| Engagements: emails, calls, meetings, notes, tasks | Tasks, Events, EmailMessage, Notes | Load 7 | The heaviest load by volume, and it counts against Salesforce data storage. Decide years of history and check storage before loading. |
| Dropdown properties | Picklists / global value sets | Config | Restricted picklists reject unknown values. Load internal values as API names and map retired values first. |
| Calculated properties | Formula fields | Config | Most translate directly. Cross-object math may need Flow. |
| Rollup properties | Roll-up summary fields (master-detail) or Flow | Config | Native roll-ups only work on master-detail. Lookup roll-ups need Flow or a tool. |
| Workflows | Record-triggered and scheduled Flows | After load | Rebuild by outcome. Keep every Flow inactive, or bypassed, during the data load. |
| Sequences | Salesforce cadences, or keep HubSpot sequences | Decision | If HubSpot stays for marketing, reps can keep sequences through the connector. Decide before training. |
| Lists | List views, reports and campaigns | After load | Operational lists become list views; marketing lists stay in the marketing tool. |
| Forms | HubSpot forms via the connector, or MCAE forms / Web-to-Lead | Decision | Follows the architecture choice above. Do not run two form systems creating Leads. |
| Quotes | Salesforce Quotes or a CPQ / Revenue Cloud build | Decision | Simple quotes are native. Bundles, approvals and discount schedules are a CPQ project of their own. |
| Teams | Role hierarchy, public groups, sharing rules | Config | Set org-wide defaults first, then open access with roles and sharing. Test as three real users. |
| Reports and dashboards | Reports, custom report types, dashboards | After load | Rebuild the reports leadership uses and match them to HubSpot numbers for the same period. |
“Load 1–7” is the dependency order for data loads. “Config” is built in a sandbox before any load. “Decision” follows the architecture choice. Picklist values need matching in both systems; the picklist alignment tool helps.
Seven inputs. You get a band, a timeline, a services range and where the hours go, by workstream.
–
Illustrative estimate from JayOh scoping weights, not a quote. Excludes Salesforce and HubSpot licenses. Your fixed scope comes from a read-only audit.
Going the other direction? Read the Salesforce to HubSpot migration guide. Keeping both platforms? See HubSpot–Salesforce integration.
We engineer growth systems. JayOh builds the RevOps architecture, GTM execution and data infrastructure that turn messy revenue operations into predictable pipeline for B2B SaaS and PE-backed teams.