CRM migrations have a bad reputation they mostly don't deserve. The data model of a sales team is small — people, companies, deals, and the notes connecting them — and every serious CRM exports it as CSV. What goes wrong is never the export; it's skipping the audit, mapping fields on the fly, and cutting over on a Friday. This guide is the checklist we walk teams through. It's written from HubSpot, but the shape works from any CRM.
Week 0: audit before you export
- —Count your objects. Contacts, companies, deals, and how many custom properties each carries. If you have 40 custom properties, expect that 30 are empty theater — migration is the cheapest moment you'll ever have to delete them.
- —Find the real identifiers. Email for people, domain for companies. Rows without either need a human decision: enrich, merge, or drop.
- —Decide the archive line. Deals closed more than ~2 years ago and contacts with zero activity can move to a cold CSV kept in storage instead of your live CRM. Migrate the working set, archive the museum.
What exports cleanly — and what transfers nowhere
| DATA | EXPORTS FROM HUBSPOT? | LANDS IN BEIGE AS |
|---|---|---|
| Contacts + properties | Yes — CSV per object | People with mapped custom fields |
| Companies | Yes — CSV | Companies (matched by domain) |
| Deals + stages | Yes — CSV | Deals mapped to your new pipeline |
| Notes & activity log | Yes — with export tooling | Timeline entries on the record |
| Email threads | Partially | Reconnect inboxes via OAuth; history syncs from your mail provider, not the old CRM |
| Workflows / automations | No — screenshots only | Rebuilt in the visual builder (better than importing five years of patches) |
The last row is true of every CRM pair, in both directions — automations are logic, not data. Budget an afternoon to rebuild the 3–5 that matter and let the rest die.
Map fields on paper before touching an importer
Open a two-column sheet: source property → destination field. Three rules keep it sane. One: map to Beige's built-ins wherever one exists (lifecycle stage → status; owner email → assignee). Two: create custom fields only for properties with real data density — that 40-to-10 cut from the audit. Three: write down the type conversions (HubSpot checkbox → boolean, multi-select → tags) so nothing gets silently stringified.
The cutover week
- —Tuesday, not Friday: import companies first, then contacts, then deals — relationships need their targets to exist. Spot-check twenty records against the old CRM, including your five weirdest.
- —Reconnect the live wires: email accounts via OAuth, your phone number, the booking pages. These aren't imports — they're fresh connections, and they're the moment the new CRM becomes the real one.
- —Freeze the old CRM to read-only the same day. A week of parallel writing in two CRMs creates the exact data-disagreement problem you're migrating to escape.
- —Keep the old subscription one billing cycle as a read-only safety net, then export a final archive CSV and cancel.
Honest caveats
Two things this guide can't give you: your HubSpot email thread history lives with your mail provider, so history depth after reconnecting depends on Gmail/Outlook, not on us. And if your team runs on Marketing Hub's content tools — blogging, SEO recommendations, ad management — those have no equivalent here; we compared the two products honestly in BeigeCRM vs HubSpot. Migrate the sales stack, keep what's genuinely working.
Most teams complete this checklist inside one week, with the import itself taking under an hour. The audit is the real work — and it pays for itself in a cleaner CRM than the one you left.



