Skip to content
Demo output

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.

A completed CRM migration, showing every record type and how many of each moved.
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.

Demo output from a system we run, holding synthetic records.

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.

The migration plan for Companies: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Companies plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

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.

The migration plan for Contacts: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Contacts plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

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.

The migration plan for Deals: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Deals plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

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%
The migration plan for Notes: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Notes plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

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%
The migration plan for Tasks: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Tasks plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

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%
The migration plan for Calls: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Calls plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

Products

640 records, 3 fields

Standard fields, 3

Filled in

NameText
100%
Product codeText
98%
Unit priceAmount
100%
The migration plan for Products: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Products plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

Line items

18,300 records, 3 fields

Standard fields, 3

Filled in

QuantityNumber
100%
Unit priceAmount
100%
Line totalAmount
100%
The migration plan for Line items: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Line items plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

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%
The migration plan for Delivery routes: every field with the share of records that fill it in and a switch saying it is migrating.
Demo output. The Delivery routes plan as the product shows it. View at full size.

Demo output from a system we run, holding synthetic records.

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.

Two readiness checks, each marked action needed, with the fix under each and a re-check button.
Demo output. The readiness checks as the product shows them, with the fix under each and a re-check. View at full size.

Demo output from a system we run, holding synthetic records.

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
The Deals plan, with the product's note under each field whose value changes on the way and a group of fields kept as extra text fields.
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.

Demo output from a system we run, holding synthetic records.

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.

An estimated price of $4,999, one time, in US dollars, for 190,945 records on the up to 200,000 records plan, after one read-only connection.
Demo output. The price screen after the source alone is connected. The destination is still to be connected above it. View at full size.

Demo output from a system we run, holding synthetic records.

See every plan and work out your price.

Try it on your data

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.