A working preview of the migration plan: classify the export diff, plan the replacement properties for field-type changes, resolve the property-limit question, and validate the result against a fresh export. Built by Muhannad for this engagement's exact scope.
SYNTHETIC DATA 26 sample properties stand in for the real 543 / 92 / 35 / 10. Your comparison workbook replaces this dataset on award.
1. Classified export diff
Every row is classified by code from the raw source and destination exports embedded in this page. Click a type-change row to open its plan.
Property
Class
Type / field
Group
What changes in the destination portal
How the real run scales this
Against your workbook the same classifier covers 543 creates, roughly 92 cosmetic fixes, roughly 35 dropdown option corrections, and the 10 field-type changes. Creates and cosmetic fixes push through the Properties API batch endpoints with a dry-run diff printed first; nothing writes until the printed plan is approved.
2. Field-type change plans
HubSpot puts stored values at risk on in-place field-type edits, and several conversions are blocked outright. So each of the 10 gets a replacement property, a scripted value migration, and dependency repointing.
3. Property slot ledger
Creates cannot start until the destination portal has room. The ledger makes the cleanup-versus-upgrade decision explicit before anything writes.
Sample scale (this page's 26 properties)
slots needed = creates + type-change replacements
Your scale (numbers from the job post)
543 creates + 10 replacements = 553 slots needed vs 91 open
Cleanup alone cannot close a gap this size. The plan: an unused-property audit (zero-fill scan across contacts, forms, workflows, lists, reports) to reclaim what your team approves, plus a contact property limit upgrade recommendation sized to the remainder, before the first create runs.
Cleanup candidates (sample)
Property
Filled on
Referenced by
Status
Approval gate, mirrored from your brief: cleanup candidates are flagged for your sign-off only. Approved candidates are archived through the API, which HubSpot can restore. No property is ever deleted.
4. Validation and handoff
After the run, a fresh destination export is compared field-by-field against the source definitions. Every property gets a PASS or FAIL, and the handoff document is generated from the same comparison.
Property
Checked
Result
Detail
Handoff document preview (generated from the comparison above)
5. Selftest
Do not take this page's word for it. The button below re-derives every headline number in your browser from the raw exports embedded in the page, then diffs the recomputed values against the displayed ones.
What gets recomputed
Classification of all 26 rows and the per-class counts, both slot ledgers, the mapped and unmapped value queues for all four type changes, the validation verdicts against the fresh export, and a writing-hygiene scan of the rendered page. All values are discrete (counts, strings, verdicts), so the comparison requires exact equality; there is no rounding tolerance to hide behind.