Demo output from a system we run, holding synthetic records.
What a HubSpot assessment looks like, in full.
This is what Migratez produced for a HubSpot CRM organisation we run, populated with synthetic records and moving to Salesforce CRM, in the order the product shows it: what is in the source, how full each custom field is, where it all lands, what the destination cannot hold, what arrives changed, and the price. None of it is a customer's data.
01 Objects and record counts
One read-only connection to the source is enough for this part. Nothing is written to either CRM during the assessment.
190,945 records, counted object by object.
The total is what the price is based on. History counts: a note, a call or a task is a record the same as a contact is. Custom fields and the links between records are not counted, because they belong to the records and come with them.
Object
Records
Companies
12,480
Contacts
48,930
Deals
9,860
Notes
61,240
Tasks
21,470
Calls
14,905
Products
640
Line items
18,300
Delivery routes
3,120
Total in the source
190,945
The nine objects and their counts are from the completed run's summary on the same organisation. They sum to the total the assessment reported.
Demo output. The same run, completed. Every record type and the count that moved, which is where the table above comes from. View at full size.
02 Custom-field fill rate
Every field on every object, and how many records fill it in.
This is what lets a field nobody uses any more be left behind on purpose rather than carried over by default. 9 objects and 51 fields, each with the share of records that fill it in. Where a value changes shape on the way, the plan says so under the field, and those notes are quoted here as the product shows them.
Companies
12,480 records, 10 fields
Standard fields, 8
Filled in
NameText
100%
Website domainText
95%
IndustryChoiceValues with no matching option are left empty. The original value is kept beside it, in an extra field.
73%
Annual revenueAmount
35%
EmployeesNumber
48%
PhonePhone number
71%
OwnerPerson on your team
100%
DescriptionLong text
26%
Your own fields, 2
Filled in
Account tierkestrel_tier, choice
82%
Route densityroute_density, number
61%
2 more fields from the source have no equivalent in Salesforce CRM. It stays behind unless asked for.
Demo output. The Companies plan as the product shows it. View at full size.
Contacts
48,930 records, 9 fields
Standard fields, 8
Filled in
EmailEmail address
94%
First nameText
98%
Last nameText
99%
Job titleText
64%
PhonePhone number
79%
Mobile phonePhone numberArrives as text, not a phone number.
45%
OwnerPerson on your team
100%
Email opt outYes or no
Not counted
Your own fields, 1
Filled in
Preferred depotpreferred_depot, choice
59%
1 more field from the source has no equivalent in Salesforce CRM. It stays behind unless asked for.
Kept as extra fields, 1
Lifecycle stageHS_Source_Lifecycle_Stage__c, text
Kept as text
Salesforce CRM has no matching field for these, so each one is created there as an extra text field holding the original value.
Demo output. The Contacts plan as the product shows it. View at full size.
Deals
9,860 records, 9 fields
Standard fields, 9
Filled in
NameText
100%
AmountAmountYour destination replaces this with a value of its own. Salesforce works a deal's amount out from its line items, so it becomes the total of the lines that came across.
97%
CurrencyText
100%
Close dateDate
95%
Deal typeChoiceValues with no matching option are left empty. The original value is kept beside it, in an extra field.
83%
Lead sourceChoiceValues with no matching option are left empty. The original value is kept beside it, in an extra field.
75%
Next stepText
40%
Lost reasonTextAdded to a text field, readable but no longer its own value.
22%
OwnerPerson on your team
100%
Kept as extra fields, 2
StageHS_Source_Stage__c, text
Kept as text
PipelineHS_Source_Pipeline__c, text
Kept as text
Salesforce CRM has no matching field for these, so each one is created there as an extra text field holding the original value.
Demo output. The Deals plan as the product shows it. View at full size.
Notes
61,240 records, 3 fields
Standard fields, 3
Filled in
BodyFormatted textFormatting is removed, the words are kept.
100%
DateDate and time
100%
OwnerPerson on your team
98%
Demo output. The Notes plan as the product shows it. View at full size.
Tasks
21,470 records, 5 fields
Standard fields, 5
Filled in
SubjectText
100%
StatusChoice
100%
PriorityChoice
84%
DateDate and time
100%
OwnerPerson on your team
100%
Demo output. The Tasks plan as the product shows it. View at full size.
Calls
14,905 records, 5 fields
Standard fields, 5
Filled in
SubjectText
100%
DirectionChoice
100%
DurationDuration
93%
DateDate and time
100%
RecordingLinkThe link arrives as a reference you can look up, not a live link.
28%
Demo output. The Calls plan as the product shows it. View at full size.
Products
640 records, 3 fields
Standard fields, 3
Filled in
NameText
100%
Product codeText
98%
Unit priceAmount
100%
Demo output. The Products plan as the product shows it. View at full size.
Line items
18,300 records, 3 fields
Standard fields, 3
Filled in
QuantityNumber
100%
Unit priceAmount
100%
Line totalAmount
100%
Demo output. The Line items plan as the product shows it. View at full size.
Delivery routes
3,120 records, 4 fields
Your team built this one, so it is rebuilt at your destination before the migration runs.
Standard fields, 1
Filled in
NameText
100%
Your own fields, 3
Filled in
Depot codedepot_code, text
100%
Weekly stopsweekly_stops, number
93%
Service windowservice_window, choice
68%
Demo output. The Delivery routes plan as the product shows it. View at full size.
Each custom field is recreated at the destination with the same values before any record is written.
03 The plan
What travels, and what each value becomes.
The plan is composed from what the two systems declare, so nobody builds a field map. You decide what to leave behind, what to bring along that has no native home, which losses to accept, and, where a source owner has no match in the destination, who inherits their records. Where a value cannot arrive intact, the plan says so before the run.
04 Readiness checks
What Salesforce needs answered before the run.
The plan reports what this organisation's destination cannot do yet and what the connector could not reach, each with the fix and a re-check. It does not quote a vendor page or an API allowance. 2 came up for this run, and either can be fixed and re-checked or carried on without.
Records linked to more than one company
Action needed
Your destination keeps a single company per record unless you turn its multiple-company feature on. 2,310 of your records are affected.
In Salesforce, open Setup and enter "Account Settings" in the Quick Find box. Turn on "Allow users to relate a contact to multiple accounts", save, then re-check.
How your products get priced
Action needed
Salesforce CRM
Salesforce prices products from a price book, so each one we bring gets an entry in your standard book. If we can't reach it, your products arrive but can't be sold.
Ask your Salesforce admin for access to the standard price book, then re-check.
Demo output. The readiness checks as the product shows them, with the fix under each and a re-check. View at full size.
05 Lossy conversions
What arrives changed, and the original carried alongside it.
Where a value has no matching option at the destination, the plan leaves the field empty and keeps the original beside it in an extra field. Where the destination has no field at all, the original goes into a text field of its own. Every case the plan marked for this organisation is below, in the product's words.
Changed on the way, 8
Object
IndustryValues with no matching option are left empty. The original value is kept beside it, in an extra field.
Companies
Mobile phoneArrives as text, not a phone number.
Contacts
AmountYour destination replaces this with a value of its own. Salesforce works a deal's amount out from its line items, so it becomes the total of the lines that came across.
Deals
Deal typeValues with no matching option are left empty. The original value is kept beside it, in an extra field.
Deals
Lead sourceValues with no matching option are left empty. The original value is kept beside it, in an extra field.
Deals
Lost reasonAdded to a text field, readable but no longer its own value.
Deals
BodyFormatting is removed, the words are kept.
Notes
RecordingThe link arrives as a reference you can look up, not a live link.
Calls
Kept as extra fields, 3
Object
Lifecycle stageHS_Source_Lifecycle_Stage__c, text
Contacts
StageHS_Source_Stage__c, text
Deals
PipelineHS_Source_Pipeline__c, text
Deals
Demo output. The Deals plan again, because it carries every kind: a value the destination works out for itself, choices with no matching option, and two fields kept as text. View at full size.
06 The price
$4,999, one time, from the record count and nothing else.
190,945 records is inside the top tier's 200,000, so it is that tier's base price. It is a price rather than an estimate that moves later: the destination's capabilities are known when the migration is created, so the price is settled from the source alone.
Demo output. The price screen after the source alone is connected. The destination is still to be connected above it. View at full size.
See the same assessment for your own CRM, for free.
Create an account and connect the CRM you are leaving with read-only access. You get your own record count, your own fill rates and your price before you connect the destination. Nothing moves until you ask for it.