Agency Migration Guide
Salesforce to HubSpot Migration
What actually transfers, what quietly does not, and what has to be rebuilt by hand.
We mapped Salesforce against HubSpot feature by feature: 115 features, 11 synced objects, 15 documented traps and 24 items that have to be rebuilt. The whole map is on this page, ungated.
The PDF is the same reference, formatted to send to a client.
Get The Guide And The Calculator
The full Salesforce to HubSpot reference as a branded PDF you can send straight to a client, plus the Excel calculator we scope these migrations with: every one of the 115 features as a row, enter your counts, get hours.
Three files: the guide as a PDF, the same guide unbranded in Markdown for your AI tool, and the full Excel effort calculator.
Salesforce to HubSpot is a very high migration, typically 4-12 weeks. Of 115 features we mapped, 29 carry across as they are and 82 land with something lost. The work is not moving records: it is the 24 items nothing moves for you.
Migration Scorecard
- Migration complexity
- Very high
- Typical timeline
- 4-12 weeks
- Recommended method
- Sync then migrate
- Native sync
- Dedicated native connector, two way
- Smart transfer
- Supported
- HubSpot subscription
- Any paid HubSpot plan (Starter, Professional, or Enterprise). Salesforce side requires Professional edition or any edition with API access. Custom object sync requires HubSpot Enterprise. Custom field mappings require Data Hub Starter+.
Feature parity across 115 capabilities
- Maps directly: 29 (25%)
- Maps partially: 82 (71%)
- No equivalent: 4 (3%)
11
Objects synced natively
15
Limitations and traps
24
Manual rebuild items
3
Source editions covered
Where this comes from: Our own research corpus, verified 2026-07-31, behind every number on this page.
The Eleven Objects That Sync Natively
What the connector moves for you, and which way each one flows.
Leads
Two wayBecomes Contacts
Salesforce Leads and Contacts both map to HubSpot Contacts. When a HubSpot contact syncs to Salesforce, you can configure whether it creates a Lead or Contact in Salesforce. Lead conversion in Salesforce updates lifecycle stage in HubSpot. Both lead and contact fields with the same internal name sync to both object types.
Contacts
Two wayBecomes Contacts
Contact sync is the only REQUIRED sync: all other objects are optional. Inclusion lists and selective sync can control which records sync. Field-level sync direction can be configured independently (two-way, always use Salesforce, always use HubSpot).
Accounts
Two wayBecomes Companies
Company sync must be turned on before deal sync for proper associations. Salesforce account import must be completed first. Association labels can sync. Account hierarchies have limited support.
Opportunities
Two wayBecomes Deals
Each Salesforce record type creates a separate pipeline in HubSpot named 'Salesforce - [record type ID]'. Multi-currency orgs sync numeric values only: no exchange rate conversion. Company sync must be enabled for proper deal-company associations. Number of pipelines limited by Sales Hub subscription tier.
Cases
Two wayBecomes Tickets
Salesforce Cases sync to HubSpot Tickets. Association toggles let you choose which related objects sync alongside tickets.
Tasks (Salesforce)
Two wayBecomes Tasks
Salesforce task sync can be toggled independently. Creating a task in Salesforce can auto-create one in HubSpot when enabled. Task sync is separate from activity sync.
Activities (HubSpot timeline events)
Out to sourceBecomes Activities (emails, notes, meetings, calls)
Primary direction is HubSpot to Salesforce: HubSpot timeline events sync as Salesforce tasks. Marketing email events only sync if they occurred within 30 days of contact sync. Form submissions only sync if within 1 year. Emails created via Salesforce Einstein Activity Capture do NOT sync to HubSpot. Sales emails, meetings, notes, and content views sync only after the associated contact has been triggered to sync.
Campaigns
Into HubSpotBecomes Contact property (Salesforce Campaign ID)
Salesforce campaigns do NOT sync as HubSpot campaigns (they are conceptually different objects). Only the Salesforce Campaign ID syncs to a contact property in HubSpot. HubSpot campaigns cannot sync to Salesforce. Forms can be associated with Salesforce campaigns.
Custom Objects
Two wayBecomes Custom Objects
Requires HubSpot Enterprise subscription. Must create the custom object in HubSpot first before setting up sync. Custom objects must have at least one required field. Lookup fields on custom objects CANNOT be mapped. Associations between custom objects and standard objects only work if the standard object is already syncing. Bidirectional custom object sync available on Content Enterprise, Enterprise Customer Platform, Marketing Enterprise, Data Enterprise, Sales Enterprise, and Service Enterprise.
Person Accounts
Into HubSpotBecomes Contacts
Person Accounts map to HubSpot Contacts, a mapping distinct from the Accounts and Contacts entries. Documented in HubSpot's Smart Transfer data sync object mappings (knowledge.hubspot.com/integrations/supported-apps-for-hubspot-smart-transfer, read 2026-07-31).
Notes
Into HubSpotBecomes Notes
Note transfer is supported. Documented in HubSpot's Smart Transfer data sync object mappings (knowledge.hubspot.com/integrations/supported-apps-for-hubspot-smart-transfer, read 2026-07-31).
Fifteen Things the Sync Does Not Tell You
Each one is documented, and each one has ended a migration in a bad week.
API Call Limits Constrain Sync Throughput
A single contact sync can consume up to 4 API calls. The total available API calls are determined by your Salesforce edition and license. The 'Allocated to HubSpot' setting caps how many Salesforce API calls the integration can use per rolling 24-hour period. Heavy sync volumes can exhaust daily API limits.
Workaround: Monitor API usage on the Sync Health tab. Adjust the 'Allocated to HubSpot' setting. Use inclusion lists or selective sync to limit sync volume. Consider upgrading Salesforce edition for higher API limits.
15-minute Sync Interval for Incremental Changes
HubSpot checks for new information to sync between systems every 15 minutes. This is not real-time synchronization.
Workaround: For near-real-time needs, consider Data Hub Data Sync which syncs within seconds, or use API-based custom integration.
Products and Line Items Do NOT Sync
Products and deal line items are not synced between HubSpot and Salesforce in either direction. Opportunities sync without their associated products/line items.
Workaround: Manually recreate products in HubSpot. Use CSV import or API to migrate product/line item data. Third-party tools like Commercient or custom API development.
Files and Attachments Do NOT Sync Natively
Salesforce Files and attachments on records (opportunities, accounts, contacts) do not sync to HubSpot via the native integration.
Workaround: Use HubSpot Smart Transfer one-time transfer for attachments. Or use third-party migration tools. Manual download and re-upload for critical files.
Formula Fields Do Not Trigger Sync
Updates to Salesforce formula fields will not trigger a record sync to HubSpot. The formula value change is not detected as a record modification.
Workaround: Create a workflow in Salesforce that updates a non-formula field when the formula value changes, which will trigger the sync.
Field Type Mismatches Cause Sync Errors
Property types in HubSpot and field types in Salesforce must be compatible for mapping. Incompatible types produce 'Type mismatch' errors. Option limit exceeded errors occur when picklist fields have too many values.
Workaround: Ensure matching field types before mapping. Delete unused property options. Create new properties of compatible types if needed.
Custom Object Lookup Fields Cannot Be Mapped
Salesforce lookup fields on custom objects cannot be created as field mappings in the integration. This limits relational data sync for custom objects.
Workaround: Use text-based ID fields instead of lookup relationships. Map associations manually post-sync. Consider API-based custom sync for lookup relationships.
Custom Object Associations Not Fully Maintained
When syncing custom objects, associations between custom objects and other objects are not automatically maintained. Associations can only pass between objects that are already syncing with HubSpot.
Workaround: Map associations manually. Ensure all related standard objects are syncing before custom object sync. Use workflows to re-create associations.
Custom Objects Require Enterprise Subscription
Custom object sync requires a HubSpot Enterprise plan. Custom objects must be created in HubSpot before sync setup and must have at least one required field.
Workaround: No workaround: Enterprise subscription is required. Plan custom object architecture in HubSpot before enabling sync.
Marketing Email Events Limited to 30-day Lookback
Marketing email events only sync to Salesforce if they occurred within 30 days of the contact being synced. Older email engagement data is lost.
Workaround: Export historical email engagement data separately. Consider importing as custom properties or notes on contact records.
Form Submissions Limited to 1-year Lookback
Form submission data only syncs if submissions occurred within one year of the contact being synced to Salesforce.
Workaround: Export older form submission data separately and import via CSV or API.
Campaign Removal Does Not Trigger Sync
Removing a Salesforce record from a Campaign does not trigger a sync. The related contact or custom object record must be independently triggered to sync for the change to be reflected.
Workaround: Manually trigger a sync on affected records, or update another field on the record to initiate sync.
Multi-currency Values Sync Without Exchange Rates
For multi-currency Salesforce orgs, only the numeric value syncs. No exchange rate conversion is applied. Currency code does not transfer.
Workaround: Standardize on a single currency before sync, or manually apply exchange rate conversions post-sync.
Einstein Activity Capture Emails Do Not Sync
Emails captured by Salesforce's Einstein Activity Capture tool are not created as standard task/email activities in Salesforce and therefore do not sync to HubSpot.
Workaround: Log emails manually as Salesforce tasks, or use HubSpot's email tracking to capture email activity directly.
HubSpot Campaigns Are Conceptually Different From Salesforce Campaigns
HubSpot campaigns (groups of marketing assets) and Salesforce campaigns (lists of members with statuses) are fundamentally different objects. They cannot be directly synced or mapped to each other.
Workaround: Recreate campaign tracking strategy using HubSpot campaigns for asset grouping and lists/active segments for member-based tracking.
Four Salesforce Features HubSpot Cannot Replace
Not a workaround away. If a client depends on one of these, it belongs in the conversation before the contract.
Field Service Lightning
HubSpot has no field service management capability. Requires third-party integration (e.g., ServiceTitan, Jobber, or custom solution).
Visual Remote Assistant
No HubSpot equivalent. Requires third-party AR/remote support tools if needed.
Chatter Groups
No HubSpot equivalent. Recommend Slack channels, Microsoft Teams, or other collaboration tools.
Partner Relationship Management (PRM)
HubSpot has no native PRM. Third-party PRM solutions (PartnerStack, Allbound, Channeltivity) can integrate with HubSpot. Deal registration can be approximated with forms and deal pipelines.
Twelve Things a Migration Does Not Rebuild
These are Salesforce's own code and products. A HubSpot migration does not port them, so they carry no hours in any estimate. They still need a decision, because the client is giving something up.
Apex Triggers
Apex triggers represent custom business logic that cannot be directly ported. Each trigger must be analyzed: can the logic be replicated with workflows, custom code actions, or does it need an external service? Before-save validation triggers are hardest to replicate. Count lines of Apex code as a complexity metric.
Apex Classes (Controllers, Services, Utilities)
Total Apex line count and class count are key complexity drivers. Categorize: utility classes (often not needed), integration classes (need rewriting for HubSpot API), business logic (workflow or custom code), and UI controllers (complete rewrite). Estimate 4-8 hours per significant Apex class.
Scheduled Apex / Batch Apex
Batch Apex often handles data volumes that exceed HubSpot workflow capabilities. Must evaluate data volume and processing needs. May need external ETL or scheduled serverless functions.
Visualforce Pages
Visualforce pages require complete rewrite. Assess each VF page's purpose: if it's a PDF template, use HubSpot quote templates or external PDF generation. If it's a custom form, use HubSpot forms or custom code. If it's a complex UI, may need a separate web app.
Lightning Web Components (LWC)
LWC components need complete rewrite. Assess each component: is it a simple data display (use HubSpot record customization), interactive tool (CRM extension card), or full application (external web app)? The LWC-to-HubSpot gap is one of the largest in any migration.
Einstein Analytics / Tableau CRM / CRM Analytics
CRM Analytics dashboards and datasets need complete rebuild in external BI tools. SAQL queries, data recipes, and predictions cannot migrate. Assess client's analytics sophistication and recommend appropriate BI tool.
Salesforce Connect (External Objects)
External objects fundamentally differ from HubSpot's approach. Must decide: sync external data into HubSpot (data duplication), show via CRM cards (display only), or maintain separate access. Architecture decision with significant implications.
MuleSoft Integration
MuleSoft integrations are enterprise-grade with significant investment. Client may retain MuleSoft and repoint to HubSpot APIs, or migrate to lighter-weight middleware. Each MuleSoft flow/API needs evaluation. This is often a separate workstream.
Experience Cloud (Communities)
Experience Cloud sites are essentially custom web applications. Each must be evaluated: customer portal (HubSpot Customer Portal), knowledge base (HubSpot KB), partner portal (no equivalent; need third-party), community forums (no equivalent; need Discourse, Khoros, etc.). Custom pages need complete rebuild.
Partner Relationship Management (PRM)
PRM is a separate solution category. Clients using Salesforce PRM need a dedicated third-party PRM alongside HubSpot. This is a major scope and budget consideration.
Salesforce CPQ (Configure, Price, Quote)
Salesforce CPQ is one of the most complex products to migrate from. Pricing rules, configuration rules, product bundles, and approval chains need complete rearchitecting. If client heavily uses CPQ, this alone can double the migration timeline. Assess CPQ complexity separately.
Salesforce Billing
Billing is a specialized financial system. HubSpot is not a billing replacement. Must integrate with dedicated billing platform. Migration scope includes both CRM and billing system transition.
The 24 Items That Get Rebuilt by Hand
This is the list that separates a quote that holds from one that does not.
Data And Objects
Products and Price Books
Salesforce Products, Price Books, and Price Book Entries do not sync. Product catalog must be rebuilt in HubSpot.
Line Items on Deals/Opportunities
Historical line items on existing opportunities do not sync. Only new associations work post-integration.
Custom Object Schemas
Custom object schemas must be defined in HubSpot before sync. Property types and required fields need manual setup.
Campaign Data and Member Statuses
Salesforce campaign membership, statuses, and response history do not transfer. Only Campaign ID syncs as a contact property.
Attachments and Files
Salesforce Files, Attachments, and ContentDocument objects do not sync natively.
Account Hierarchies
Salesforce parent-child account hierarchies do not transfer to HubSpot.
Automation
Workflows / Process Builder / Flows
All Salesforce automation (Workflow Rules, Process Builder, Flows, Apex triggers) must be rebuilt from scratch in HubSpot.
Approval Processes
Salesforce approval processes do not transfer and have limited direct equivalents in HubSpot.
Lead Assignment Rules
Salesforce lead assignment rules and territory management must be recreated.
Email Sequences and Templates
Salesforce email templates and Lightning Email Templates do not migrate.
Validation Rules
Salesforce validation rules on field entries do not have a direct equivalent and must be manually recreated.
Reporting
Reports
All Salesforce reports must be rebuilt in HubSpot. Report types and capabilities differ significantly between platforms.
Dashboards
Salesforce dashboards must be rebuilt from scratch.
Forecasting
Salesforce forecasting configuration, categories, and historical forecast data do not transfer.
Sales And Marketing Config
Lead Scoring
Salesforce lead scoring models (native or Einstein) must be recreated in HubSpot.
Territories and Territory Management
Salesforce Enterprise Territory Management does not have a direct equivalent.
Quotes and CPQ
Salesforce CPQ or native quotes must be rebuilt.
Web-to-Lead / Web-to-Case Forms
Salesforce web forms must be replaced with HubSpot forms.
Landing Pages
Any Salesforce-hosted or Pardot landing pages need to be migrated to HubSpot.
Users And Permissions
Roles, Profiles, and Permission Sets
Salesforce user roles, profiles, and permission sets do not transfer.
Record-Level Sharing Rules
Salesforce OWD settings and sharing rules have no direct HubSpot equivalent. The nearest model is Enterprise teams with record access permissions and permission sets, which partitions by owner and team rather than by an org-wide default with rule-based exceptions.
Owner Mapping
Salesforce user IDs must be mapped to HubSpot user IDs for record owner assignment.
Integrations
Third-Party App Integrations
Any apps connected to Salesforce (Outlook, Slack, Zoom, accounting software, etc.) must be reconnected to HubSpot.
Data Warehouse / BI Integrations
Reporting pipelines pulling Salesforce data into data warehouses for revenue reporting, attribution, and forecasting break at migration.
How It Runs
Sync First, Then Migrate
Because the connector is bidirectional, you can run both systems together and move the weight across gradually, rather than betting the client's revenue operation on a single weekend. The order matters: these are dependencies, not a menu.
- 1
Audit
Document every object, field, automation, report and integration. The integrations are the ones that hide, and they are often owned by someone outside the project.
- 2
Pre-Clean In Salesforce
Deduplicate, standardise picklist values, fix email and phone formats. Picklists that do not match between systems throw sync errors later, and it is far cheaper to fix them at source.
- 3
Map And Write Down The Transformations
Map every Salesforce field to a HubSpot property and record the picklist value differences as a transformation table. Design the custom objects now.
- 4
Configure HubSpot First
Pipelines, custom properties, custom objects, teams and user permissions, all before a single record moves.
- 5
Install The Connector
Set up sync settings, inclusion lists and selective sync so the first run does not try to move everything at once.
- 6
Initial Sync, In Order
Contacts, then companies, then deals, then tickets. Out of order the associations do not form. Watch the error log throughout.
- 7
Smart Transfer The One-Time Items
Attachments and segments that the ongoing sync never touches. Easy to skip and expensive to notice later.
- 8
Rebuild
Workflows, lead scoring, reports, dashboards, email templates and sequences.
- 9
Validate Against Counts
Record counts, field values, associations and pipeline totals. Then test the automation and the reporting as separate exercises.
- 10
Train, And Run Parallel
Train the users on HubSpot and keep both systems running briefly. The connector is bidirectional, so this is the cheap part of the plan, not a luxury.
- 11
Cut Over
Disable the sync, make HubSpot the primary CRM, and repoint every integration.
- 12
Monitor For A Month
Two to four weeks of watching for data quality issues and workflow tuning. This is part of the job, not aftercare.
Typical timeline: 4 to 12 weeks. Complexity is driven by automation and reporting depth, not by record count.
Effort Estimator
How Big Is This Migration?
A handful of questions, no email required. The ranges come from the research above: every feature we mapped carries an effort figure, and this adds up the ones that apply to you.
Estimated Effort
Answer a couple of questions and an hours range appears here.
Built from our research on 115 Salesforce features. It is a range, not a quote.
A planning range, not a quote. It is delivery effort only, with no project management line and no agency markup, so add your own. What moves it most in practice is data quality.
What Goes Wrong Most Often
The failures that show up again and again, in roughly the order they bite.
Products and Line Items Do Not Sync
must be migrated separately via CSV or API
Salesforce Campaigns Are Fundamentally Different From HubSpot Campaigns
requires re-architecture of campaign strategy
Multi-currency Orgs Lose Exchange Rate Data During Sync
only numeric values transfer
API Call Limits Can Throttle Large Initial Syncs
plan for multi-day initial sync for large orgs
Einstein Activity Capture Emails Are Invisible to the Integration
Einstein Activity Capture emails are invisible to the integration
Formula Field Updates Do Not Trigger Sync
create workaround field updates
Custom Object Lookup Fields Cannot Be Mapped
relational data requires alternative approaches
Account Hierarchies Do Not Transfer Automatically
Account hierarchies do not transfer automatically
Marketing Email Engagement Data Older Than 30 Days at Time of Contact Sync Is Lost
Marketing email engagement data older than 30 days at time of contact sync is lost
Attempting to Migrate Everything at Once Over a Weekend Is a Common Failure Pattern
use phased approach
Picklist Values Must Be Standardized and Matched Between Systems to Prevent Sync Errors
Picklist values must be standardized and matched between systems to prevent sync errors
Deactivated Salesforce Users Need to Be Handled
their owned records may fail to sync
Common Questions
Salesforce To HubSpot, Answered
Four to twelve weeks for most mid-market orgs, and the range is wide for a reason. The record count is rarely what drives it. What drives it is how much automation, reporting and custom schema has to be rebuilt, and how quickly the client can make decisions about the things that have no equivalent.
A clean org with standard objects and light automation can land near the bottom of that range. A heavily customised org with Apex, CPQ and a warehouse pipeline will exceed the top of it.
Yes, and for most migrations you should. The connector is a genuine two-way sync, not an importer, so running both systems in parallel is the recommended approach rather than a compromise. It also gives you a real rollback position, which a weekend cutover does not.
Attempting to move everything in one weekend is the most common way these fail.
The short list that catches people: products and line items, files and attachments, campaign membership, account hierarchies, formula field triggers, exchange rates in multi-currency orgs, and any email captured by Einstein Activity Capture.
Beyond that, all Salesforce automation, reporting, forecasting, lead scoring, quoting, permissions and connected apps are rebuild work rather than transfer work.
Only for custom objects, where it is a hard requirement with no workaround. The connector itself runs on any paid HubSpot plan, and custom field mappings need Data Hub Starter or above. On the Salesforce side you need Professional edition or any edition with API access.
If the client's org leans on custom objects, the HubSpot tier decision has to happen before you quote, not after.
There is no honest single number, and anyone quoting one before seeing the org is guessing. The cost tracks the rebuild, not the records: a clean org with standard objects and a handful of workflows is a fraction of a heavily customised org with Apex, CPQ, custom objects and a warehouse pipeline.
The useful way to bound it early is to count four things: how many workflows and Flows exist, how many reports and dashboards are genuinely in use, whether custom objects are involved, and whether anything downstream reads Salesforce data. Those four drive most of the variance.
Yes, but with three conditions that catch people. Custom object sync requires HubSpot Enterprise, with no workaround at a lower tier. The object has to be created in HubSpot before the sync is configured, and it needs at least one required field.
Even then, lookup fields on custom objects cannot be mapped, and associations between custom objects are not automatically maintained. Relational data on custom objects usually needs a custom API pass on top of the connector.
Yes. It is a genuine bidirectional sync on a 15-minute cycle, not a one-time import, and field-level sync direction can be set independently per field (two way, always use Salesforce, or always use HubSpot).
Two objects are exceptions. Salesforce campaigns only push a Campaign ID into HubSpot, and HubSpot timeline events push out to Salesforce as tasks rather than the other way around.
Not through the ongoing sync. Salesforce Files, attachments and ContentDocument records are invisible to the connector in both directions.
HubSpot's Smart Transfer can move attachments as a separate one-time operation, and it is worth using. The failure mode is finishing a migration without realising the files were never part of it.
They stay in Salesforce. Every report and dashboard is rebuilt in HubSpot, and forecasting configuration and forecast history do not transfer at all.
Rebuilding like for like is often the wrong goal. The two reporting engines model data differently, and a straight recreation tends to produce reports that are technically equivalent and practically worse. It is usually better to ask what each report is used to decide.
Records themselves come across intact. Engagement history is where the losses are, and they are time-boxed rather than partial: marketing email events only sync if they occurred within 30 days of the contact syncing, and form submissions within one year.
Anything older is not carried and cannot be recovered by re-running the sync. If multi-year engagement history matters, export it before the migration starts, not after.
A one-time bulk transfer tool HubSpot provides for a specific list of supported apps, distinct from the always-on data sync. For Salesforce it moves things the ongoing connector does not, most usefully attachments.
It is worth checking coverage per platform rather than assuming. The supported-app list changes, and several widely repeated claims about which platforms are on it are out of date.
Sometimes the answer is no, and it is worth establishing that early. If the client depends on field service management, partner relationship management, opportunity splits or joined reports, HubSpot has no equivalent at any tier and the migration becomes a change to how they operate rather than a change of tool.
Where HubSpot tends to win is consolidation: marketing, sales and service on one record, with reporting that non-technical staff can actually build themselves.
Only if you want us to. We work white-label by default: your agency owns the relationship, the reporting and the credit. Most of our migration work is delivered under a partner agency's brand and the end client never learns our name.
Ready to get started?
Let's do something great together.
Augment your agency's marketing team's bench with our end-to-end inbound and digital solutions and find out why we're "The HubSpot Agency for HubSpot Agencies."
Fill out this form, and someone from our Solutions team will be in touch with you soon!