Skip to content
Available now · First supported path

Salesforce to HubSpot, before you commit to it.

Portablov connects read-only to both platforms and tells you what would move, what would break, who actually needs a seat, and what has no HubSpot equivalent at all — with the exact people and records behind every number. The assessment is free, and plenty of them end in a decision to stay.

What an assessment produces

A worked example, in full.

This is Portablov’s own output over a 2,840-user Salesforce estate — 4,327,906 records, 309 fields and 96 automations. Every figure is computed by the same engine that would run against yours.

Synthetic demo estate — not a real customer

Licence spend avoided

$824,940/yr

$1,835,880 for the recommended seats against $2,660,820 for a seat-for-seat move.

Users who should move

1,933 of 2,840

528 are dormant, deactivated or hold a licence with no equivalent. 379 need a human call.

Fields with no destination

65

Of 309 mapped fields. 75 more are recommended to leave behind; 122 are barely populated today.

Blockers before you can move

3

Each one names the exact people, records or fields it affects, and the consequence.

Automations to redesign

45 of 96

No destination equivalent. Each one is a decision: rebuild, replace or retire.

Records owned by people not moving

188,084

Owned by 528 excluded users. The destination requires an owner, so these are rejected on load until reassigned.

Licence and user implications

You are about to buy 2,840 seats. You need 1,933.

A seat-for-seat move of this estate costs $2,660,820 a year. The recommended set costs $1,835,880 — $824,940 that never needed buying.

Recommended to migrate
1,933
Require review
379
Recommended to exclude
528
Dormant past the threshold
737
Already inactive in Salesforce
224
Never logged in
89

528 of 2,840 source logins are inactive, dormant past the abandonment threshold, or hold a licence type with no destination equivalent. Each carries the signals behind the call.

What typically needs review

42 failures, 74 warnings.

Each names the object, field, user or automation it concerns, how many records it affects, and whether Portablov can fix it or a person has to decide.

Fields with no HubSpot target
65
Fields recommended to leave behind
75
Fields populated on under half your records
122
Automations with no equivalent
45
Automations that carry over
51
Permission-set combinations in use
176

Fill rate is measured per field across the discovered records; 122 of 309 fields are populated on fewer than 50% of them. 45 of 96 automations have no destination equivalent under the destination connector's declared capabilities; 13 is already switched off in the source.

What can fail

3 things would stop this cutover today.

A blocker is not a warning. It is a specific reason the load would be rejected, or a consequence you would not want to discover on the day — each one tied to named people or a record count, with the decision it needs.

  • 379 users still need a migrate decisionYour call
    Why it breaks
    Portablov will not provision or exclude a seat on evidence alone. Each of these people has signals pointing both ways — recent activity against a licence with no clean equivalent, or ownership that would be stranded by excluding them.
    Who or what is affected
    aiden.rossi@acme-industrial.com, evelyn.vogel@acme-industrial.com and 377 more users
    How many
    379 users
    Can Portablov fix it automatically?
    No. It needs a business decision Portablov will not make for you.
    What you need to decide
    Open each user, read the evidence, and approve or override the recommendation. Licence savings recalculate as you go.
  • 188,084 records are owned by users who are not migratingYour call
    Why it breaks
    The destination requires an owner on companies, contacts, deals, tickets and tasks. A record whose owner has no seat is rejected on load rather than arriving unowned.
    Who or what is affected
    nadia.costa@acme-industrial.com, raj.mwangi@acme-industrial.com and 526 more excluded owners
    How many
    188,084 records
    Can Portablov fix it automatically?
    No. It needs a business decision Portablov will not make for you.
    What you need to decide
    Nominate who inherits each excluded owner’s records — a named person, a team fallback, or a holding seat you are willing to pay for.
  • 1,933 people will receive a HubSpot onboarding emailYour call
    Why it breaks
    The destination user-provisioning API sends an onboarding email and exposes no documented parameter to suppress it. If seats are created before you are ready to announce the change, your entire go-live communications plan is pre-empted by an automated email.
    Who or what is affected
    evelyn.kim@acme-industrial.com, elijah.dubois@acme-industrial.com and 1,931 more users
    How many
    1,933 users
    Can Portablov fix it automatically?
    No. It needs a business decision Portablov will not make for you.
    What you need to decide
    Agree the communications window, then approve provisioning inside it.

Object and field mapping

Where each Salesforce object lands in HubSpot.

The two platforms do not share a data model. Some objects have a clean twin, some are reshaped on the way, and one of the busiest — Lead — does not exist in HubSpot at all. Below is the field-level detail for each, drawn from the same mapping engine the product runs.

Objects with no HubSpot equivalent at all — Salesforce Contract is the usual one — are reported as such rather than quietly mapped onto something that nearly fits. Campaign maps only partially: hierarchy, member status history and ROI rollups have nowhere to go.

Salesforce Account → HubSpot Company

Does a Salesforce Account become a HubSpot Company? Direct equivalent. Account hierarchy maps to HubSpot parent/child company associations.

Accountcompanies

Direct equivalent · exact confidence
Salesforce Account
The organisation record in Salesforce. Carries billing and shipping addresses, a record type, an owner, a parent-account hierarchy, and — in most real orgs — a long tail of custom fields for territory, tier and renewal.
HubSpot Company
The company record in HubSpot. Addresses are a single flat set of properties, hierarchy is expressed as parent/child company associations, and there is no record-type concept at all.
Transfer directly
32 / 60
Transformed on the way
8 / 60
Lose fidelity
0 / 60
No equivalent
7 / 60
Field by field

Every field Portablov discovered on this object, grouped by what happens to it. “Populated” is the share of records where the source field actually has a value — the number that decides whether a gap matters.

Transfers directly

32 fields

A destination property of a compatible type exists. The value arrives unchanged.

Salesforce fieldHubSpot propertyWhat happensPopulated
Account Namestring(255)nameType-compatible property in the destination; the value is copied as-is.100%
Annual Revenuecurrency(18,0)annualrevenueType-compatible property in the destination; the value is copied as-is.41%
EmployeesintnumberofemployeesType-compatible property in the destination; the value is copied as-is.52%
PhonephonephoneType-compatible property in the destination; the value is copied as-is.81%
WebsiteurlwebsiteType-compatible property in the destination; the value is copied as-is.69%
Billing StreettextareaaddressType-compatible property in the destination; the value is copied as-is.78%
Billing Citystring(40)cityType-compatible property in the destination; the value is copied as-is.79%
Billing State/Provincestring(80)stateType-compatible property in the destination; the value is copied as-is.71%
Billing Zip/Postal Codestring(20)zipType-compatible property in the destination; the value is copied as-is.76%
Billing Countrystring(80)countryType-compatible property in the destination; the value is copied as-is.80%
Created DatedatetimecreatedateType-compatible property in the destination; the value is copied as-is.100%
Territory Codestring(12)territory_codeType-compatible property in the destination; the value is copied as-is.66%
Renewal Datedaterenewal_dateType-compatible property in the destination; the value is copied as-is.38%
Territory Codestringterritory_codeType-compatible property in the destination; the value is copied as-is.91%
Industry Segmentpicklistindustry_segmentType-compatible property in the destination; the value is copied as-is.62%
Contract Valuecurrencycontract_valueType-compatible property in the destination; the value is copied as-is.86%
Renewal Monthpicklistrenewal_monthType-compatible property in the destination; the value is copied as-is.58%
Primary Regionpicklistprimary_regionType-compatible property in the destination; the value is copied as-is.61%
Support Planpicklistsupport_planType-compatible property in the destination; the value is copied as-is.81%
Last QBR Datedatelast_qbr_dateType-compatible property in the destination; the value is copied as-is.63%
Preferred Languagepicklistpreferred_languageType-compatible property in the destination; the value is copied as-is.93%
Lifecycle Stage Detailpicklistlifecycle_stage_detailType-compatible property in the destination; the value is copied as-is.90%
Annual Seat Countintannual_seat_countType-compatible property in the destination; the value is copied as-is.73%
Payment Termspicklistpayment_termsType-compatible property in the destination; the value is copied as-is.87%
Churn Risk Flagbooleanchurn_risk_flagType-compatible property in the destination; the value is copied as-is.90%
Signed Datedatesigned_dateType-compatible property in the destination; the value is copied as-is.91%
Billing Frequencypicklistbilling_frequencyType-compatible property in the destination; the value is copied as-is.58%
Competitor Displacedstringcompetitor_displacedType-compatible property in the destination; the value is copied as-is.59%
Procurement Contactstringprocurement_contactType-compatible property in the destination; the value is copied as-is.84%
Discount Bandpicklistdiscount_bandType-compatible property in the destination; the value is copied as-is.77%
Source Campaign Namestringsource_campaign_nameType-compatible property in the destination; the value is copied as-is.85%
Product Familypicklistproduct_familyType-compatible property in the destination; the value is copied as-is.81%

Transfers with a transformation

8 fields

The value arrives, but a named, deterministic transform runs on the way — a value map, a lookup, a type conversion. Nothing here is invented at load time.

Salesforce fieldHubSpot propertyWhat happensPopulated
Account IDidnoneWritten to a dedicated unique salesforce_id property so every load is idempotent and re-runnable.100%
Account TypepicklisttypeMap Salesforce account types onto HubSpot company types.87%
IndustrypicklistindustryHubSpot’s industry list is a fixed enumeration and cannot be extended.74%
Owner IDreferencehubspot_owner_idRecords owned by users excluded from the migration have no destination owner.100%
Parent Accountreferencehs_parent_company_idResolve the parent account via its migrated salesforce_id.19%
Health Scoreformula(number)health_scoreFormula fields cannot be recreated in HubSpot; the value freezes at cutover.93%
Health Scoredoublehealth_scoreFormula fields cannot be recreated in HubSpot; the value freezes at cutover.66%
Pricing Waterfall StatetextareastateType-compatible property in the destination; the value is copied as-is.32%

No destination equivalent

7 fields

The destination has nowhere to put this. Options are a custom property, a different model, or accepting the loss — but it will not happen by itself.

Salesforce fieldHubSpot propertyWhat happensPopulated
Record Type IDreferencenoneHubSpot has no record types. Record-type-driven page layouts, picklist filtering and permissions must be rebuilt as teams, pipelines or property options.100%
Strategic TierpicklistnoneNo destination property matches this field.22%
Territory Assignment MatrixtextareanoneNo destination property matches this field.41%
Commission Split (JSON)textareanoneNo destination property matches this field.24%
Approval Chain OverridetextareanoneNo destination property matches this field.21%
Forecast Override ReasontextareanoneNo destination property matches this field.46%
Multi-Currency Rate LockdoublenoneNo destination property matches this field.31%

Recommended to leave behind

13 fields

Portablov suggests not carrying these across — barely populated, referenced by nothing, or set by the destination itself and unwritable.

Salesforce fieldHubSpot propertyWhat happensPopulated
Last Modified Datedatetimehs_lastmodifieddatehs_lastmodifieddate is set by HubSpot and cannot be written.100%
Legacy ERP Idstring(30)noneOnly 11% populated and referenced by no active automation — recommended for exclusion.11%
Deprecated Stage 2015stringnonePopulated on only 1% of records — recommended for exclusion.1%
Old Category 2016picklistnonePopulated on only 2% of records — recommended for exclusion.2%
Migration Source 2018doublenonePopulated on only 4% of records — recommended for exclusion.4%
Legacy Stage 2018booleannonePopulated on only 2% of records — recommended for exclusion.2%
Deprecated Status 2016stringnonePopulated on only 4% of records — recommended for exclusion.4%
Legacy Ref 2021doublenonePopulated on only 1% of records — recommended for exclusion.1%
Legacy Region 2015doublenonePopulated on only 3% of records — recommended for exclusion.3%
Legacy Category 2019stringnonePopulated on only 2% of records — recommended for exclusion.2%
Migration Group 2016picklistnonePopulated on only 2% of records — recommended for exclusion.2%
Temp Stage 2014stringnonePopulated on only 3% of records — recommended for exclusion.3%
Backup Score 2016datenonePopulated on only 1% of records — recommended for exclusion.1%
What each gap costs

A mapping gap is only worth arguing about once you know how many records it touches. These are the issues Portablov raised on this object, with the count behind each.

  • high148,209 records affected

    Account.Record Type ID cannot be migrated

    HubSpot has no record types. Record-type-driven page layouts, picklist filtering and permissions must be rebuilt as teams, pipelines or property options.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium32,606 records affected

    Account.Strategic Tier cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium60,766 records affected

    Account.Territory Assignment Matrix cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium35,570 records affected

    Account.Commission Split (JSON) cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium31,124 records affected

    Account.Approval Chain Override cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium68,176 records affected

    Account.Forecast Override Reason cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium45,945 records affected

    Account.Multi-Currency Rate Lock cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • low128,942 records affected

    Account.Account Type needs a value map

    Source and destination use different option sets. Portablov proposed a mapping; unmapped values fall back to the destination default.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

  • low109,675 records affected

    Account.Industry needs a value map

    HubSpot’s industry list is a fixed enumeration and cannot be extended.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

What a person has to decide

  1. 1

    Where does record-type behaviour go? HubSpot has no record types, so anything a record type currently drives — page layouts, filtered picklists, permissions — has to be rebuilt as teams, pipelines or property options, or dropped.

  2. 2

    Which industry values survive? HubSpot’s industry list is a fixed enumeration that cannot be extended, so any source value outside it needs a target or a custom property.

  3. 3

    Who inherits accounts owned by people who are not moving? The destination requires an owner on every company.

Synthetic demo estate These figures come from a full Portablov run over a fabricated Salesforce estate. How a specific field behaves depends on how your org is configured — Portablov reads your actual schema, fill rates and record counts rather than assuming this one.

Salesforce Contact → HubSpot Contact

Does a Salesforce Contact become a HubSpot Contact? Direct equivalent. HubSpot requires a unique email per contact; Salesforce does not.

Contactcontacts

Direct equivalent · exact confidence
Salesforce Contact
A person, related to exactly one Account, optionally reporting to another Contact. Email is not required and is not unique.
HubSpot Contact
A person, associated to zero or more companies. Email is the primary key: HubSpot enforces one contact per email address.
Transfer directly
27 / 61
Transformed on the way
6 / 61
Lose fidelity
2 / 61
No equivalent
11 / 61
Field by field

Every field Portablov discovered on this object, grouped by what happens to it. “Populated” is the share of records where the source field actually has a value — the number that decides whether a gap matters.

Transfers directly

27 fields

A destination property of a compatible type exists. The value arrives unchanged.

Salesforce fieldHubSpot propertyWhat happensPopulated
First Namestring(40)firstnameType-compatible property in the destination; the value is copied as-is.96%
Last Namestring(80)lastnameType-compatible property in the destination; the value is copied as-is.100%
EmailemailemailHubSpot enforces a unique email per contact. Salesforce contacts sharing an email will collide.88%
Business PhonephonephoneType-compatible property in the destination; the value is copied as-is.62%
Mobile PhonephonemobilephoneType-compatible property in the destination; the value is copied as-is.44%
Titlestring(128)jobtitleType-compatible property in the destination; the value is copied as-is.71%
Email Opt Outbooleanhs_email_optoutType-compatible property in the destination; the value is copied as-is.100%
Created DatedatetimecreatedateType-compatible property in the destination; the value is copied as-is.100%
Engagement Scorenumber(3,0)engagement_scoreType-compatible property in the destination; the value is copied as-is.72%
GDPR Consent Datedatetimegdpr_consent_dateType-compatible property in the destination; the value is copied as-is.55%
Customer Tierpicklistcustomer_tierType-compatible property in the destination; the value is copied as-is.84%
Industry Segmentpicklistindustry_segmentType-compatible property in the destination; the value is copied as-is.81%
Account Manager Emailemailaccount_manager_emailType-compatible property in the destination; the value is copied as-is.87%
Renewal Monthpicklistrenewal_monthType-compatible property in the destination; the value is copied as-is.84%
Onboarding Completebooleanonboarding_completeType-compatible property in the destination; the value is copied as-is.80%
Partner Sourcedbooleanpartner_sourcedType-compatible property in the destination; the value is copied as-is.74%
Expansion Potentialpicklistexpansion_potentialType-compatible property in the destination; the value is copied as-is.79%
Health Scoredoublehealth_scoreType-compatible property in the destination; the value is copied as-is.82%
Primary Use Casepicklistprimary_use_caseType-compatible property in the destination; the value is copied as-is.58%
Billing Frequencypicklistbilling_frequencyType-compatible property in the destination; the value is copied as-is.83%
Competitor Displacedstringcompetitor_displacedType-compatible property in the destination; the value is copied as-is.75%
Deployment Modelpicklistdeployment_modelType-compatible property in the destination; the value is copied as-is.68%
Reference Customerbooleanreference_customerType-compatible property in the destination; the value is copied as-is.73%
Named Accountbooleannamed_accountType-compatible property in the destination; the value is copied as-is.85%
Security Review Datedatesecurity_review_dateType-compatible property in the destination; the value is copied as-is.82%
Source Campaign Namestringsource_campaign_nameType-compatible property in the destination; the value is copied as-is.75%
Product Familypicklistproduct_familyType-compatible property in the destination; the value is copied as-is.93%

Transfers with a transformation

6 fields

The value arrives, but a named, deterministic transform runs on the way — a value map, a lookup, a type conversion. Nothing here is invented at load time.

Salesforce fieldHubSpot propertyWhat happensPopulated
Contact IDidnoneWritten to a dedicated unique salesforce_id property so every load is idempotent and re-runnable.100%
Account IDreferenceassociatedcompanyidResolve the migrated company by its salesforce_id property.94%
Owner IDreferencehubspot_owner_idResolve owner by email.100%
Mailing Citystring(40)cityType-compatible property in the destination; the value is copied as-is.57%
Mailing Countrystring(80)countryType-compatible property in the destination; the value is copied as-is.60%
PersonapicklistpersonaNormalise picklist labels to HubSpot internal option values.49%

Transfers with a loss of fidelity

2 fields

The record still arrives, but something about it does not survive the conversion. Each one is a call about whether the reduced version is good enough.

Salesforce fieldHubSpot propertyWhat happensPopulated
Lead Sourcepicklisths_lead_statusLead source and lead status are different concepts. Mapping loses original acquisition channel unless a custom property is created.66%
Descriptiontextarea(32000)hs_content_membership_notesSalesforce allows 32,000 characters; long descriptions are preserved but the destination property is not a first-class notes field.28%

No destination equivalent

11 fields

The destination has nowhere to put this. Options are a custom property, a different model, or accepting the loss — but it will not happen by itself.

Salesforce fieldHubSpot propertyWhat happensPopulated
Departmentstring(80)noneNo destination property matches this field.34%
Reports ToreferencenoneHubSpot has no contact-to-contact hierarchy. Reporting lines are lost.12%
Do Not CallbooleannoneHubSpot has no native Do Not Call flag; requires a custom property plus a workflow to enforce it. Regulatory relevance — do not silently drop.100%
Entitlement Milestone StatetextareanoneNo destination property matches this field.15%
Revenue Schedule DetailtextareanoneNo destination property matches this field.36%
Multi-Currency Rate LockdoublenoneNo destination property matches this field.15%
Legal Clause MatrixtextareanoneNo destination property matches this field.45%
Rolled-up Child ARRcurrencynoneNo destination property matches this field.20%
Quota Credit AllocationtextareanoneNo destination property matches this field.22%
Regulatory FlagsmultipicklistnoneNo destination property matches this field.23%
Audit Trail DigesttextareanoneNo destination property matches this field.40%

Recommended to leave behind

15 fields

Portablov suggests not carrying these across — barely populated, referenced by nothing, or set by the destination itself and unwritable.

Salesforce fieldHubSpot propertyWhat happensPopulated
Preferred LanguagepicklistnoneNo destination property. Create one during preparation if localisation matters.31%
Interim Category 2021doublenonePopulated on only 3% of records — recommended for exclusion.3%
Interim Group 2014datenonePopulated on only 2% of records — recommended for exclusion.2%
Migration Region 2018stringnonePopulated on only 4% of records — recommended for exclusion.4%
Migration Region 2014stringnonePopulated on only 4% of records — recommended for exclusion.4%
Backup Region 2018doublenonePopulated on only 3% of records — recommended for exclusion.3%
Old Bucket 2015picklistnonePopulated on only 1% of records — recommended for exclusion.1%
Migration Source 2021doublenonePopulated on only 3% of records — recommended for exclusion.3%
Temp Ref 2021doublenonePopulated on only 3% of records — recommended for exclusion.3%
Deprecated Rating 2018picklistnonePopulated on only 2% of records — recommended for exclusion.2%
Temp Source 2015doublenonePopulated on only 1% of records — recommended for exclusion.1%
Legacy Stage 2016doublenonePopulated on only 0% of records — recommended for exclusion.0%
Interim Ref 2017booleannonePopulated on only 4% of records — recommended for exclusion.4%
Old Stage 2017picklistnonePopulated on only 3% of records — recommended for exclusion.3%
Legacy Code 2014stringnonePopulated on only 0% of records — recommended for exclusion.0%
What each gap costs

A mapping gap is only worth arguing about once you know how many records it touches. These are the issues Portablov raised on this object, with the count behind each.

  • high612,884 records affected

    Contact.Do Not Call cannot be migrated

    HubSpot has no native Do Not Call flag; requires a custom property plus a workflow to enforce it. Regulatory relevance — do not silently drop.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium208,381 records affected

    Contact.Department cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium73,546 records affected

    Contact.Reports To cannot be migrated

    HubSpot has no contact-to-contact hierarchy. Reporting lines are lost.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium404,503 records affected

    Contact.Lead Source loses information

    Lead source and lead status are different concepts. Mapping loses original acquisition channel unless a custom property is created.

    Portablov recommends: Confirm the reduced fidelity is acceptable, or add a custom property.

  • medium171,608 records affected

    Contact.Description loses information

    Salesforce allows 32,000 characters; long descriptions are preserved but the destination property is not a first-class notes field.

    Portablov recommends: Confirm the reduced fidelity is acceptable, or add a custom property.

  • medium91,933 records affected

    Contact.Entitlement Milestone State cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium220,638 records affected

    Contact.Revenue Schedule Detail cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium91,933 records affected

    Contact.Multi-Currency Rate Lock cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium275,798 records affected

    Contact.Legal Clause Matrix cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium122,577 records affected

    Contact.Rolled-up Child ARR cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium134,834 records affected

    Contact.Quota Credit Allocation cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium140,963 records affected

    Contact.Regulatory Flags cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium245,154 records affected

    Contact.Audit Trail Digest cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • low300,313 records affected

    Contact.Persona needs a value map

    Source and destination use different option sets. Portablov proposed a mapping; unmapped values fall back to the destination default.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

What a person has to decide

  1. 1

    What happens to contacts that share an email address? HubSpot will merge or reject them — you decide which record wins before the load, not after.

  2. 2

    Is Do Not Call a compliance obligation for you? HubSpot has no native flag, so it needs a custom property plus a workflow to enforce it. This is the field most often dropped silently, and it is the one with regulatory weight.

  3. 3

    Do reporting lines matter? Contact-to-contact hierarchy has no HubSpot equivalent and is lost unless modelled another way.

Synthetic demo estate These figures come from a full Portablov run over a fabricated Salesforce estate. How a specific field behaves depends on how your org is configured — Portablov reads your actual schema, fill rates and record counts rather than assuming this one.

Salesforce Lead → HubSpot Contact

What happens to Salesforce Leads in HubSpot? HubSpot has no Lead object. Leads become Contacts with lifecyclestage=lead and the Salesforce Company name written to an associated company. Converted leads must be de-duplicated against their converted Contact or you will create doubles.

Leadcontacts

Equivalent, with transformation · medium confidence
Salesforce Lead
A pre-qualification record holding a person and an unverified company name in one row, with its own status and rating, which is later converted into an Account, a Contact and optionally an Opportunity.
HubSpot Contact
HubSpot has no Lead object. The equivalent is a Contact whose lifecycle stage is `lead`, with the company name resolved into an associated Company record.
Transfer directly
7 / 31
Transformed on the way
5 / 31
Lose fidelity
1 / 31
No equivalent
3 / 31
Field by field

Every field Portablov discovered on this object, grouped by what happens to it. “Populated” is the share of records where the source field actually has a value — the number that decides whether a gap matters.

Transfers directly

7 fields

A destination property of a compatible type exists. The value arrives unchanged.

Salesforce fieldHubSpot propertyWhat happensPopulated
First Namestring(40)firstnameType-compatible property in the destination; the value is copied as-is.92%
Last Namestring(80)lastnameType-compatible property in the destination; the value is copied as-is.100%
EmailemailemailLeads and Contacts both become HubSpot contacts; shared emails will merge records.84%
PhonephonephoneType-compatible property in the destination; the value is copied as-is.51%
Territory Codestringterritory_codeType-compatible property in the destination; the value is copied as-is.79%
Onboarding Completebooleanonboarding_completeType-compatible property in the destination; the value is copied as-is.81%
Lifecycle Stage Detailpicklistlifecycle_stage_detailType-compatible property in the destination; the value is copied as-is.93%

Transfers with a transformation

5 fields

The value arrives, but a named, deterministic transform runs on the way — a value map, a lookup, a type conversion. Nothing here is invented at load time.

Salesforce fieldHubSpot propertyWhat happensPopulated
Lead IDidnoneWritten to a dedicated unique salesforce_id property so every load is idempotent and re-runnable.100%
Companystring(255)noneBecomes an associated company, created if it does not exist. Expect new company records for unconverted leads.100%
Lead Statuspicklisths_lead_statusMap lead status values.100%
ConvertedbooleanlifecyclestageDerive lifecycle stage from conversion state.100%
Owner IDreferencehubspot_owner_idResolve owner by email.100%

Transfers with a loss of fidelity

1 fields

The record still arrives, but something about it does not survive the conversion. Each one is a call about whether the reduced version is good enough.

Salesforce fieldHubSpot propertyWhat happensPopulated
Lead Scorenumber(3,0)engagement_scoreSalesforce lead score and HubSpot engagement score are computed differently; the number is not comparable after migration.68%

No destination equivalent

3 fields

The destination has nowhere to put this. Options are a custom property, a different model, or accepting the loss — but it will not happen by itself.

Salesforce fieldHubSpot propertyWhat happensPopulated
Commission Split (JSON)textareanoneNo destination property matches this field.12%
Forecast Override ReasontextareanoneNo destination property matches this field.42%
Legal Clause MatrixtextareanoneNo destination property matches this field.30%

Recommended to leave behind

15 fields

Portablov suggests not carrying these across — barely populated, referenced by nothing, or set by the destination itself and unwritable.

Salesforce fieldHubSpot propertyWhat happensPopulated
RatingpicklistnoneHot/Warm/Cold has no destination equivalent; HubSpot uses lead scoring instead.43%
Lead SourcepicklistnoneOriginal acquisition channel has no destination property unless one is created.79%
Converted Account IDreferencenoneConversion links are resolved during the association pass rather than copied as properties.21%
Converted Contact IDreferencenoneConversion links are resolved during the association pass rather than copied as properties.21%
Converted Opportunity IDreferencenoneConversion links are resolved during the association pass rather than copied as properties.14%
MQL DatedatetimenoneHubSpot tracks lifecycle stage transition timestamps natively once the record is in the destination.36%
Migration Tier 2020booleannonePopulated on only 0% of records — recommended for exclusion.0%
Migration Code 2016booleannonePopulated on only 1% of records — recommended for exclusion.1%
Temp Source 2018stringnonePopulated on only 3% of records — recommended for exclusion.3%
Interim Flag 2015picklistnonePopulated on only 1% of records — recommended for exclusion.1%
Interim Category 2015picklistnonePopulated on only 1% of records — recommended for exclusion.1%
Deprecated Rating 2020doublenonePopulated on only 3% of records — recommended for exclusion.3%
Migration Score 2021picklistnonePopulated on only 4% of records — recommended for exclusion.4%
Migration Segment 2020stringnonePopulated on only 4% of records — recommended for exclusion.4%
Legacy Stage 2016stringnonePopulated on only 1% of records — recommended for exclusion.1%
What each gap costs

A mapping gap is only worth arguing about once you know how many records it touches. These are the issues Portablov raised on this object, with the count behind each.

  • medium478,948 records affected

    Lead.Lead Score loses information

    Salesforce lead score and HubSpot engagement score are computed differently; the number is not comparable after migration.

    Portablov recommends: Confirm the reduced fidelity is acceptable, or add a custom property.

  • medium84,520 records affected

    Lead.Commission Split (JSON) cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium295,821 records affected

    Lead.Forecast Override Reason cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium211,301 records affected

    Lead.Legal Clause Matrix cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • low704,336 records affected

    Lead.Lead Status needs a value map

    Source and destination use different option sets. Portablov proposed a mapping; unmapped values fall back to the destination default.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

  • low704,336 records affected

    Lead.Converted needs a value map

    Source and destination use different option sets. Portablov proposed a mapping; unmapped values fall back to the destination default.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

What a person has to decide

  1. 1

    How are converted leads de-duplicated against the Contact they converted into? Both sides become HubSpot contacts, so without a de-duplication rule you create doubles.

  2. 2

    Should unconverted leads create Company records? Every distinct company name on a lead becomes a company in HubSpot unless you decide otherwise — that is typically where an unexpected company count comes from.

  3. 3

    Is lead source worth a custom property? HubSpot tracks lead *status*, not acquisition channel, so the original source is lost unless a property is created for it.

Synthetic demo estate These figures come from a full Portablov run over a fabricated Salesforce estate. How a specific field behaves depends on how your org is configured — Portablov reads your actual schema, fill rates and record counts rather than assuming this one.

Salesforce Opportunity → HubSpot Deal

Does a Salesforce Opportunity become a HubSpot Deal? Stages must be mapped into a specific HubSpot pipeline; a stage name alone has no meaning in HubSpot.

Opportunitydeals

Equivalent, with transformation · high confidence
Salesforce Opportunity
A revenue record with an amount, a close date, a stage from a global picklist, a per-record win probability and a forecast category.
HubSpot Deal
A deal inside a specific pipeline. Stages belong to a pipeline rather than existing globally, and probability is derived from the stage rather than set per record.
Transfer directly
24 / 57
Transformed on the way
6 / 57
Lose fidelity
2 / 57
No equivalent
9 / 57
Field by field

Every field Portablov discovered on this object, grouped by what happens to it. “Populated” is the share of records where the source field actually has a value — the number that decides whether a gap matters.

Transfers directly

24 fields

A destination property of a compatible type exists. The value arrives unchanged.

Salesforce fieldHubSpot propertyWhat happensPopulated
Opportunity Namestring(120)dealnameType-compatible property in the destination; the value is copied as-is.100%
Amountcurrency(18,2)amountType-compatible property in the destination; the value is copied as-is.91%
Currencypicklistdeal_currency_codeMulti-currency requires the destination portal to have those currencies enabled with exchange rates configured.100%
Close DatedateclosedateType-compatible property in the destination; the value is copied as-is.100%
Next Stepstring(255)hs_next_stepType-compatible property in the destination; the value is copied as-is.46%
Descriptiontextarea(32000)descriptionType-compatible property in the destination; the value is copied as-is.39%
Created DatedatetimecreatedateType-compatible property in the destination; the value is copied as-is.100%
Discount %percentdiscount_pctType-compatible property in the destination; the value is copied as-is.58%
Contract Term (Months)number(3,0)contract_term_monthsType-compatible property in the destination; the value is copied as-is.72%
Territory Codestringterritory_codeType-compatible property in the destination; the value is copied as-is.73%
Customer Tierpicklistcustomer_tierType-compatible property in the destination; the value is copied as-is.60%
Account Manager Emailemailaccount_manager_emailType-compatible property in the destination; the value is copied as-is.91%
Preferred Languagepicklistpreferred_languageType-compatible property in the destination; the value is copied as-is.63%
Annual Seat Countintannual_seat_countType-compatible property in the destination; the value is copied as-is.91%
Payment Termspicklistpayment_termsType-compatible property in the destination; the value is copied as-is.81%
Partner Sourcedbooleanpartner_sourcedType-compatible property in the destination; the value is copied as-is.91%
Expansion Potentialpicklistexpansion_potentialType-compatible property in the destination; the value is copied as-is.59%
Primary Use Casepicklistprimary_use_caseType-compatible property in the destination; the value is copied as-is.81%
Billing Frequencypicklistbilling_frequencyType-compatible property in the destination; the value is copied as-is.61%
Competitor Displacedstringcompetitor_displacedType-compatible property in the destination; the value is copied as-is.64%
Deployment Modelpicklistdeployment_modelType-compatible property in the destination; the value is copied as-is.65%
Procurement Contactstringprocurement_contactType-compatible property in the destination; the value is copied as-is.85%
Discount Bandpicklistdiscount_bandType-compatible property in the destination; the value is copied as-is.66%
Product Familypicklistproduct_familyType-compatible property in the destination; the value is copied as-is.84%

Transfers with a transformation

6 fields

The value arrives, but a named, deterministic transform runs on the way — a value map, a lookup, a type conversion. Nothing here is invented at load time.

Salesforce fieldHubSpot propertyWhat happensPopulated
Opportunity IDidnoneWritten to a dedicated unique salesforce_id property so every load is idempotent and re-runnable.100%
Account IDreferencenoneDestination property "associatedcompanyid" does not exist in the target portal and will be created during preparation.98%
StagepicklistdealstageDeal stages are pipeline-scoped in HubSpot. Confirm the target pipeline before cutover or every deal lands in the default pipeline.100%
Forecast Categorypicklisths_forecast_categoryUppercase to HubSpot enumeration values.100%
Owner IDreferencehubspot_owner_idResolve owner by email.100%
ARRformula(currency)arrFormula field is frozen at cutover and will not recalculate in HubSpot.91%

Transfers with a loss of fidelity

2 fields

The record still arrives, but something about it does not survive the conversion. Each one is a call about whether the reduced version is good enough.

Salesforce fieldHubSpot propertyWhat happensPopulated
Probability (%)percenths_deal_stage_probabilityHubSpot derives probability from the deal stage. Per-record overrides are lost.100%
Opportunity TypepicklistdealtypeHubSpot offers only newbusiness/existingbusiness. Renewal, Expansion and Upsell collapse into one value — reporting that distinguishes them will break.62%

No destination equivalent

9 fields

The destination has nowhere to put this. Options are a custom property, a different model, or accepting the loss — but it will not happen by itself.

Salesforce fieldHubSpot propertyWhat happensPopulated
Campaign IDreferencenoneDeal-level campaign attribution has no HubSpot equivalent; attribution reporting must be rebuilt.27%
Primary CompetitormultipicklistnoneHubSpot has no multi-select equivalent that preserves Salesforce multipicklist semantics without a custom property and a delimiter convention.33%
Approval Chain OverridetextareanoneNo destination property matches this field.28%
Revenue Schedule DetailtextareanoneNo destination property matches this field.13%
Consumption Tier FormulastringnoneNo destination property matches this field.43%
Territory Hierarchy PathstringnoneNo destination property matches this field.37%
Quota Credit AllocationtextareanoneNo destination property matches this field.18%
Escalation Path OverridetextareanoneNo destination property matches this field.45%
Audit Trail DigesttextareanoneNo destination property matches this field.24%

Recommended to leave behind

16 fields

Portablov suggests not carrying these across — barely populated, referenced by nothing, or set by the destination itself and unwritable.

Salesforce fieldHubSpot propertyWhat happensPopulated
Deal Desk ApprovedbooleannoneApproval state is meaningful only alongside the Salesforce approval process, which is not portable.100%
Migration Flag 2015booleannonePopulated on only 3% of records — recommended for exclusion.3%
Legacy Code 2016doublenonePopulated on only 0% of records — recommended for exclusion.0%
Interim Rating 2014booleannonePopulated on only 4% of records — recommended for exclusion.4%
Old Source 2018doublenonePopulated on only 1% of records — recommended for exclusion.1%
Interim Owner 2019datenonePopulated on only 3% of records — recommended for exclusion.3%
Migration Category 2021doublenonePopulated on only 0% of records — recommended for exclusion.0%
Migration Category 2020doublenonePopulated on only 4% of records — recommended for exclusion.4%
Backup Category 2020stringnonePopulated on only 3% of records — recommended for exclusion.3%
Temp Owner 2019stringnonePopulated on only 4% of records — recommended for exclusion.4%
Deprecated Region 2014doublenonePopulated on only 1% of records — recommended for exclusion.1%
Legacy Ref 2021datenonePopulated on only 0% of records — recommended for exclusion.0%
Deprecated Bucket 2014datenonePopulated on only 2% of records — recommended for exclusion.2%
Migration Segment 2020booleannonePopulated on only 1% of records — recommended for exclusion.1%
Legacy Owner 2015doublenonePopulated on only 1% of records — recommended for exclusion.1%
Backup Code 2017stringnonePopulated on only 2% of records — recommended for exclusion.2%
What each gap costs

A mapping gap is only worth arguing about once you know how many records it touches. These are the issues Portablov raised on this object, with the count behind each.

  • medium204,118 records affected

    Opportunity.Probability (%) loses information

    HubSpot derives probability from the deal stage. Per-record overrides are lost.

    Portablov recommends: Confirm the reduced fidelity is acceptable, or add a custom property.

  • medium126,553 records affected

    Opportunity.Opportunity Type loses information

    HubSpot offers only newbusiness/existingbusiness. Renewal, Expansion and Upsell collapse into one value — reporting that distinguishes them will break.

    Portablov recommends: Confirm the reduced fidelity is acceptable, or add a custom property.

  • medium55,112 records affected

    Opportunity.Campaign ID cannot be migrated

    Deal-level campaign attribution has no HubSpot equivalent; attribution reporting must be rebuilt.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium67,359 records affected

    Opportunity.Primary Competitor cannot be migrated

    HubSpot has no multi-select equivalent that preserves Salesforce multipicklist semantics without a custom property and a delimiter convention.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium57,153 records affected

    Opportunity.Approval Chain Override cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium26,535 records affected

    Opportunity.Revenue Schedule Detail cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium87,771 records affected

    Opportunity.Consumption Tier Formula cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium75,524 records affected

    Opportunity.Territory Hierarchy Path cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium36,741 records affected

    Opportunity.Quota Credit Allocation cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium91,853 records affected

    Opportunity.Escalation Path Override cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium48,988 records affected

    Opportunity.Audit Trail Digest cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • low204,118 records affected

    Opportunity.Stage needs a value map

    Deal stages are pipeline-scoped in HubSpot. Confirm the target pipeline before cutover or every deal lands in the default pipeline.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

  • low204,118 records affected

    Opportunity.Forecast Category needs a value map

    Source and destination use different option sets. Portablov proposed a mapping; unmapped values fall back to the destination default.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

What a person has to decide

  1. 1

    Which HubSpot pipeline is the target, and what does each Salesforce stage become inside it? A stage name on its own has no meaning in HubSpot — get this wrong and every deal lands in the default pipeline.

  2. 2

    Can you live with two deal types? HubSpot offers `newbusiness` and `existingbusiness`. Renewal, expansion and upsell collapse together, so any reporting that separates them breaks.

  3. 3

    Do you need per-record probability? HubSpot derives it from the stage; per-record overrides do not survive.

Synthetic demo estate These figures come from a full Portablov run over a fabricated Salesforce estate. How a specific field behaves depends on how your org is configured — Portablov reads your actual schema, fill rates and record counts rather than assuming this one.

Salesforce Case → HubSpot Ticket

Does a Salesforce Case become a HubSpot Ticket? Entitlements, milestones and business-hours calendars have no HubSpot equivalent and are not carried across.

Casetickets

Equivalent, with transformation · high confidence
Salesforce Case
A support record with a customer-facing case number, a status, four priorities, and — where Service Cloud is configured — entitlements, milestones and business-hours calendars driving escalation and SLA.
HubSpot Ticket
A ticket in a pipeline, with a HubSpot-generated id and three priority levels. There is no entitlement, milestone or business-hours model.
Transfer directly
9 / 34
Transformed on the way
5 / 34
Lose fidelity
1 / 34
No equivalent
10 / 34
Field by field

Every field Portablov discovered on this object, grouped by what happens to it. “Populated” is the share of records where the source field actually has a value — the number that decides whether a gap matters.

Transfers directly

9 fields

A destination property of a compatible type exists. The value arrives unchanged.

Salesforce fieldHubSpot propertyWhat happensPopulated
Subjectstring(255)subjectType-compatible property in the destination; the value is copied as-is.97%
Descriptiontextarea(32000)contentType-compatible property in the destination; the value is copied as-is.83%
Closed Datedatetimeclosed_dateType-compatible property in the destination; the value is copied as-is.78%
Industry Segmentpicklistindustry_segmentType-compatible property in the destination; the value is copied as-is.77%
Last QBR Datedatelast_qbr_dateType-compatible property in the destination; the value is copied as-is.63%
Primary Use Casepicklistprimary_use_caseType-compatible property in the destination; the value is copied as-is.91%
Signed Datedatesigned_dateType-compatible property in the destination; the value is copied as-is.76%
Deployment Modelpicklistdeployment_modelType-compatible property in the destination; the value is copied as-is.77%
Reference Customerbooleanreference_customerType-compatible property in the destination; the value is copied as-is.91%

Transfers with a transformation

5 fields

The value arrives, but a named, deterministic transform runs on the way — a value map, a lookup, a type conversion. Nothing here is invented at load time.

Salesforce fieldHubSpot propertyWhat happensPopulated
Case IDidnoneWritten to a dedicated unique salesforce_id property so every load is idempotent and re-runnable.100%
Statuspicklisths_pipeline_stageTwo Salesforce statuses collapse onto one HubSpot stage.100%
Case Originpicklistsource_typeUppercase to HubSpot source enumeration.94%
Owner IDreferencehubspot_owner_idResolve owner by email.100%
Product Areapicklistproduct_areaLowercase to HubSpot option values.72%

Transfers with a loss of fidelity

1 fields

The record still arrives, but something about it does not survive the conversion. Each one is a call about whether the reduced version is good enough.

Salesforce fieldHubSpot propertyWhat happensPopulated
Prioritypicklisths_ticket_priorityHubSpot has three priorities; Critical and High become indistinguishable.100%

No destination equivalent

10 fields

The destination has nowhere to put this. Options are a custom property, a different model, or accepting the loss — but it will not happen by itself.

Salesforce fieldHubSpot propertyWhat happensPopulated
Case NumberautonumbernoneHubSpot generates its own ticket ids. Customer-facing case numbers change — check any external references, email templates or SLAs that quote them.100%
Contact IDreferencenoneNo destination property matches this field.86%
Account IDreferencenoneNo destination property matches this field.90%
SLA Breachedformula(boolean)noneDepends on Salesforce Entitlements and business hours, neither of which is portable.100%
Entitlement Milestone StatetextareanoneNo destination property matches this field.30%
Sharing Exception NotetextareanoneNo destination property matches this field.43%
Territory Hierarchy PathstringnoneNo destination property matches this field.44%
Escalation Path OverridetextareanoneNo destination property matches this field.36%
Regulatory FlagsmultipicklistnoneNo destination property matches this field.34%
Renewal Uplift FormuladoublenoneNo destination property matches this field.14%

Recommended to leave behind

9 fields

Portablov suggests not carrying these across — barely populated, referenced by nothing, or set by the destination itself and unwritable.

Salesforce fieldHubSpot propertyWhat happensPopulated
EscalatedbooleannoneEscalation is a Salesforce entitlement-process concept with no destination equivalent.100%
CSATnumber(2,1)noneOnly 31% populated; HubSpot has its own feedback surveys.31%
Interim Status 2014doublenonePopulated on only 2% of records — recommended for exclusion.2%
Legacy Rating 2016doublenonePopulated on only 4% of records — recommended for exclusion.4%
Legacy Flag 2014picklistnonePopulated on only 4% of records — recommended for exclusion.4%
Deprecated Owner 2017doublenonePopulated on only 2% of records — recommended for exclusion.2%
Deprecated Segment 2014picklistnonePopulated on only 4% of records — recommended for exclusion.4%
Deprecated Ref 2020doublenonePopulated on only 2% of records — recommended for exclusion.2%
Legacy Rating 2019datenonePopulated on only 0% of records — recommended for exclusion.0%
What each gap costs

A mapping gap is only worth arguing about once you know how many records it touches. These are the issues Portablov raised on this object, with the count behind each.

  • high989,400 records affected

    Case.Case Number cannot be migrated

    HubSpot generates its own ticket ids. Customer-facing case numbers change — check any external references, email templates or SLAs that quote them.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • high850,884 records affected

    Case.Contact ID cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • high890,460 records affected

    Case.Account ID cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • high989,400 records affected

    Case.SLA Breached cannot be migrated

    Depends on Salesforce Entitlements and business hours, neither of which is portable.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium989,400 records affected

    Case.Priority loses information

    HubSpot has three priorities; Critical and High become indistinguishable.

    Portablov recommends: Confirm the reduced fidelity is acceptable, or add a custom property.

  • medium296,820 records affected

    Case.Entitlement Milestone State cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium425,442 records affected

    Case.Sharing Exception Note cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium435,336 records affected

    Case.Territory Hierarchy Path cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium356,184 records affected

    Case.Escalation Path Override cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium336,396 records affected

    Case.Regulatory Flags cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • medium138,516 records affected

    Case.Renewal Uplift Formula cannot be migrated

    No destination property matches this field.

    Portablov recommends: Create a custom HubSpot property and map manually, or confirm the field is genuinely no longer needed.

  • low989,400 records affected

    Case.Status needs a value map

    Two Salesforce statuses collapse onto one HubSpot stage.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

  • low930,036 records affected

    Case.Case Origin needs a value map

    Source and destination use different option sets. Portablov proposed a mapping; unmapped values fall back to the destination default.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

  • low712,368 records affected

    Case.Product Area needs a value map

    Source and destination use different option sets. Portablov proposed a mapping; unmapped values fall back to the destination default.

    Portablov recommends: Review the proposed value map and confirm every source option is covered.

What a person has to decide

  1. 1

    Who owns the fact that case numbers change? HubSpot generates its own ids, so any email template, external system or SLA quoting a Salesforce case number needs updating.

  2. 2

    How do four priorities become three? Critical and High become indistinguishable unless you model the difference elsewhere.

  3. 3

    What replaces SLA and escalation? Both depend on Salesforce entitlements and business hours, neither of which is portable — they are rebuilt in HubSpot or retired.

Synthetic demo estate These figures come from a full Portablov run over a fabricated Salesforce estate. How a specific field behaves depends on how your org is configured — Portablov reads your actual schema, fill rates and record counts rather than assuming this one.

What Portablov assesses

Everything the switch touches.

Objects and fields
Every standard and custom object, every field, its type and how much of it is actually populated across your records.
Users and licences
Every login, its profile and permission sets, last login, records owned, and whether that person already exists in the destination portal.
Automations
Flows, workflow rules, process builders, validation rules and Apex triggers, checked against what the destination can express.
Records, by volume
Counts per object, so a mapping gap is quoted as a number of affected records rather than as a warning.

Why it is read-only

An assessment that can change something is not an assessment.

Nothing is written to either platform
The connectors request read scopes only, and report back the scopes they were actually granted so you can check them against what you expected.
Credentials never reach the browser
OAuth material is held in a managed secret store, referenced by an id. No API response can return it.
You can upload an export instead
If connecting production is a conversation you would rather not have yet, the assessment runs on an export.
The assessment is yours to delete
One action removes the estate snapshot, the user assessments, the mapping proposal and the findings.

The full model — tenant isolation, credential handling, encryption and audit, plus where we honestly stand on certification — is on the Portablov security page.

Find out what your Salesforce estate would actually take with it.

Connect read-only, or upload an export. Nothing is written to either platform, and the assessment is yours to delete.