Skip to main content

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.

PDF documentPDFMarkdown documentMDExcel workbookXLS
Salesforce logoHubSpot logo

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

Complexity: Very High
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

2925%
8271%
43%
  • 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 wayTwo way

Becomes 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 wayTwo way

Becomes 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 wayTwo way

Becomes 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 wayTwo way

Becomes 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 wayTwo way

Becomes Tickets

Salesforce Cases sync to HubSpot Tickets. Association toggles let you choose which related objects sync alongside tickets.

Tasks (Salesforce)

Two wayTwo way

Becomes 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 sourceOut to source

Becomes 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 HubSpotInto HubSpot

Becomes 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 wayTwo way

Becomes 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 HubSpotInto HubSpot

Becomes 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 HubSpotInto HubSpot

Becomes 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. 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. 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. 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. 4

    Configure HubSpot First

    Pipelines, custom properties, custom objects, teams and user permissions, all before a single record moves.

  5. 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. 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. 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. 8

    Rebuild

    Workflows, lead scoring, reports, dashboards, email templates and sequences.

  9. 9

    Validate Against Counts

    Record counts, field values, associations and pipeline totals. Then test the automation and the reporting as separate exercises.

  10. 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. 11

    Cut Over

    Disable the sync, make HubSpot the primary CRM, and repoint every integration.

  12. 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.

Custom fields and properties across all records

Everything beyond the out-of-the-box fields, added up across contacts, companies, deals and anything custom.

Automations, workflows and rules

Anything that fires on its own: workflows, sequences, assignment and validation rules, approvals.

Custom reports and dashboards

Only the ones the business actually uses. Reports nobody opens do not need rebuilding.

Marketing assets to rebuild

Email templates, forms, landing pages, lists and segments taken together.

Custom objects or extra pipelines

Record types beyond contacts, companies, deals and tickets.

Third-party integrations wired into the current system

Anything connected by API, webhook or installed package that has to keep working afterwards.

Roughly how many contact records

This affects the sync approach and the reconciliation effort, not the per-record work. The connector moves records; people do not.

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

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!