The CRM Migration Guide
Switching CRMs is never the problem. Losing notes, losing deal history, losing custom fields, breaking integrations — that's the problem. This guide walks through every step so nothing falls through the cracks.
What actually needs to migrate
Most migration disasters come from under-scoping. Before you export anything, list what needs to survive:
- Contacts (name, email, phone, company, tags, custom fields)
- Companies / accounts (with parent-child relationships if applicable)
- Deals / opportunities (stage, value, close date, custom fields)
- Activities (notes, calls, emails, meetings — especially notes)
- Email threads synced from Gmail / Outlook
- Pipelines (custom stages, automations, forecasting)
- Integrations (Stripe, Clerk, Supabase, Mailchimp, etc. — what to reconnect)
- Users + permissions (who has access to what)
Missing one of these is how "we migrated our CRM" becomes "we rebuilt our CRM from screenshots six weeks later."
Provider-specific export checklists
HubSpot: Settings → Account → Import & Export → Export → All records. Select Contacts, Companies, Deals separately. Note: HubSpot's CSV doesn't include email thread bodies — those need a second export via the Communications module.
Pipedrive: Tools → Export data → choose People, Organizations, Deals, Activities, Notes separately. Pipedrive's activities CSV is the most comprehensive of the big four.
Salesforce: Data Export via Setup → Data → Export. Schedule a manual full export. Download everything in weekly-schedule format.
Notion / Airtable: Export database as CSV. For Notion, pick "Everything including subpages" so linked pages (notes) come along. Airtable: export each table separately.
Google Sheets: File → Download → CSV. For multi-tab workbooks, export each tab.
For detailed step-by-step instructions per provider, see the HubSpot migration post, spreadsheet migration guide, and CRM migration checklist.
The mapping problem (and how to solve it)
Every CRM has slightly different field names. HubSpot has "Lifecycle Stage"; Pipedrive has "Status"; Salesforce has "Lead Status" AND "Lead Source" AND "Stage." When you migrate, you need an explicit mapping of old field → new field.
The worst thing you can do is let the import tool auto-map. Common disasters:
- "Company" field in old CRM is a string; new CRM expects a Company object with its own ID.
- "Deal value" in old CRM is in cents; new CRM expects dollars.
- Custom fields exported as "Custom Field 14" with no label.
Sambandh's MoveTo tool surfaces every mapping decision for you to confirm. It will never silently coerce data. If a column can't be mapped, it shows up as a warning before import, not a lost field after.
Preserving notes and email threads
Contact lists and pipeline stages are the easy part. Notes and email threads are where migrations die.
- Notes: Export as a separate CSV in most CRMs (HubSpot, Pipedrive, Salesforce). Include created_at, author, and parent_record_id so they import attached to the right contact.
- Email threads: The old CRM usually has these synced from Gmail/Outlook. The fastest path is often: disconnect old CRM from Gmail, connect new CRM to Gmail, let new CRM backfill from Gmail directly. Don't try to export thread bodies from the CRM itself — almost no export includes them.
- Call logs: Usually exported with activities. Double-check recording URLs survive.
The principle: for primary data (contacts, deals) migrate via CSV. For secondary data synced from a third-party (email, calendar), re-sync directly from the third-party.
Reconnecting integrations
Once data is in, reconnect the integrations that matter:
- Stripe first — see the Stripe CRM guide. If your CRM is Stripe-native, Stripe customer data matches CRM contact data.
- Email provider (Gmail, Outlook) — lets new CRM backfill email activity.
- Auth / identity (Clerk, Supabase, WorkOS, Auth0) — see /integrations for full list.
- Calendar (Calendly, Zoom, Google Calendar).
- Marketing tools (Mailchimp, Resend, Postmark).
Do these in order. Each one informs how data is enriched in the CRM.
How long should migration take?
For a small team (< 10k contacts) moving from HubSpot Pipedrive Notion Airtable or spreadsheets:
- Export: 10–20 minutes
- Upload + mapping: 20–30 minutes
- Reconnecting integrations: 30–60 minutes
- Sanity-checking the data: 30 minutes
Total: 1.5–2.5 hours. Plan for a half-day. Don't try to migrate on a Friday afternoon.
For larger teams (> 100k contacts or complex Salesforce setups), plan for a full day plus a day of parallel-running both CRMs before cutover.
When to do it (and when not to)
Do it now if:
- Your current CRM costs more than $200/month and you're under 10 users.
- Stripe, Supabase, Clerk, or your actual stack isn't first-class in the CRM.
- You dread opening the CRM more than opening a spreadsheet.
Wait if:
- You're in the middle of a hard fundraising sprint (don't change systems when stakes are highest).
- Your team just adopted the current CRM (< 90 days). Give it a real try first.
- Your current CRM is genuinely fine and you just read a blog post. Pick the battle that matters most.
Dive deeper
Related posts and pages in this topic cluster.
Frequently asked questions
- Is there downtime during migration?
- No. Keep the old CRM live until you've verified the new one. Run both in parallel for a few days.
- What if I realize something got lost?
- Keep the old CRM's export files. You can re-import specific fields without redoing the whole migration.
- Can I migrate custom fields?
- Yes — every CRM's custom fields become Sambandh custom fields with the same name. Mapping is explicit.
- What about API integrations?
- API integrations need to be reconnected. Budget 30–60 minutes for this.
Ready to try a CRM built for how you actually work?
Start Free Trial