Integrations & data
How to switch CRMs without losing data
A step-by-step CRM data migration plan: export, clean, map fields, dedupe, import in the right order, verify, run in parallel and cut over.

Key takeaways
- Export everything, including notes, activities, files and user lists, before you cancel the old CRM.
- Clean and dedupe in the spreadsheet, not after import; it's faster and safer.
- Write a field map that says where every old column goes and how it changes on the way.
- Import in order (companies, then contacts, then deals) so records link to each other correctly.
- Verify with record counts and spot-checks, run both systems briefly in parallel, then cut over on a fixed date.
Switching CRMs is mostly a data project. The new software is the easy part; the risk is losing notes, linking contacts to the wrong companies or importing three copies of your best customer. This guide walks you through a migration plan that small teams can run themselves: export, clean, map, dedupe, import in order, verify, run in parallel and cut over.
The same steps work whether you’re moving from another CRM, from spreadsheets or from a mix of both.
Step 1: take inventory
Before exporting anything, list what you have and where it lives:
- Records: leads, contacts, companies, deals (open and closed), products and price lists
- History: notes, call logs, emails, texts, tasks and appointments
- Files: attachments, signed quotes, photos
- Settings: pipeline stages, custom fields, tags, lost reasons, users and owners
- Other sources: spreadsheets, phone contacts, form tools, your accounting system
Then decide what to bring. A good default is active leads and contacts, all customers, open deals and the last two years of closed deals. Everything else goes into an archive.
Step 2: export everything
Export each object to its own CSV file, and keep the record IDs from the old system. Those IDs are how you’ll link contacts to companies and deals to contacts later.
Export more than you plan to import. Once the old account is closed, anything you didn’t export is gone. Make a full backup copy, store it somewhere secure and don’t edit the original files; work on copies.
Step 3: clean the data
Cleaning in a spreadsheet is far faster than cleaning inside a CRM one record at a time. Bad data is the norm, not the exception: among sales professionals on teams using AI agents, manual errors and duplicate data were the two most common data issues in Salesforce’s 2026 State of Sales survey of 4,050 sales professionals in 22 countries, and 46% of those with agents said data quality issues hurt their sales (Salesforce State of Sales, 7th edition).
Work through this list:
- Remove junk: test records, spam form fills, “asdf” entries, people who asked not to be contacted (keep their opt-out record if your new CRM can store it).
- Standardize formats: phone numbers in one format with country code, emails in lowercase, states and countries spelled one way.
- Split combined fields: “Full name” into first and last name; “City, State” into two columns.
- Fill gaps that matter: owner, lead source and status for active records.
- Normalize picklists: “FB,” “facebook” and “Facebook Ads” should become one value.
Step 4: map your fields
A field map is a short table that says where every column goes. It prevents most import mistakes.
| Old column | New field | Change on the way |
|---|---|---|
| Full Name | First name, Last name | Split on first space; check the odd ones by hand |
| Mobile | Phone | Format with country code, e.g. +1 512 555 0142 |
| Email Address | Trim spaces, lowercase | |
| Lead Source | Source | Map to your new source list |
| Roof Type | Roof type (custom field) | Create the custom field before import |
| Account Name | Company | Must match a company already imported |
| Deal Stage | Pipeline stage | Map old stages to new ones (see below) |
| Rep | Owner | Match to users in the new CRM |
Map pipeline stages deliberately. If you’re simplifying from nine stages to six, decide where each old stage lands and write it down.
Step 5: dedupe before import
Merge duplicates in your files before they reach the new CRM. Sort by email, then by phone, then by name and company, and look for matches. When you find two versions of the same person, keep the most complete record and copy over any unique notes.
Then decide your duplicate rule for the import itself: should a row that matches an existing record be skipped, update the existing record or create a new one anyway? For a first import into an empty CRM, updating is usually safest. Our guide to duplicate management covers matching rules in depth.
Step 6: import in the right order
Records depend on each other, so the order matters:
- Users and settings: add team members, custom fields, pipelines and stages first.
- Companies: so contacts have something to link to.
- Contacts and leads: linked to companies by name or old ID.
- Deals: linked to contacts and companies, with stage, value, owner and close date.
- Notes, tasks and files: attached to the right records last.
Always run a test import first with 20 to 50 rows that include your messiest data: accented names, missing emails, long notes with line breaks. Fix the mapping, delete the test records and then import the full file.
CSV tips that save hours
Most CRM imports use CSV files, and most import problems come from the CSV itself:
- Quote fields that contain commas, quotes or line breaks. The CSV format described in RFC 4180 says such fields should be enclosed in double quotes, with any double quote inside a field written twice. Most export tools do this for you, but hand-edited files often break it.
- Keep one header row with clear column names, and no blank rows or merged cells.
- Save as UTF-8 so names like “Muñoz” and “Nguyễn” survive the trip.
- Watch out for spreadsheet reformatting. Microsoft notes that when Excel opens a .csv file, it uses its current default data format settings to interpret each column, and that you may need to convert a column to text to preserve leading zeros (Microsoft Support). ZIP codes, phone numbers and dates are the usual victims.
- Use one date format, ideally year-month-day (2026-09-29), so 03/04 doesn’t become April 3 for half your records.
- Keep the old record ID in a column or custom field. It makes troubleshooting and re-imports much easier.
Step 7: verify
Don’t assume the import worked. Check it:
- Counts: the number of records in the CRM should match the number of rows you imported, minus skipped duplicates.
- Spot-checks: open 20 random records and compare every field with the source file.
- Relationships: check that contacts sit under the right companies and deals under the right contacts.
- Totals: compare open pipeline value and deal counts by stage against the old system.
- Owners: make sure each rep sees their own records.
Step 8: run in parallel, then cut over
Run both systems for a short, fixed period, usually a few days to two weeks. During that time, new leads go into the new CRM, and the old one is used only to look things up. Avoid entering data in both places; that’s how the systems drift apart.
Pick a cutover date and announce it. On that day:
- Make a final export from the old CRM.
- Import any records created or changed since the main import.
- Switch web forms, lead sources and integrations to the new CRM.
- Set the old CRM to read-only, or remove edit access.
Step 9: retire the old system safely
Keep a final full export in secure storage, then close the old account. Delete the working copies of your CSV files from laptops and shared drives. The FTC’s guidance for businesses is to “properly dispose of what you no longer need” (FTC, Protecting Personal Information), and a folder of customer exports on someone’s desktop is exactly the kind of file that gets forgotten.
How Exa helps
Exa’s CSV import maps your columns to Exa fields, including custom fields you create first, and gives you a duplicate rule for each import: skip, update or create. After import, live duplicate detection flags matches by email, phone and name, and you can merge records that slipped through. Notes, pinned notes, tags and attachments keep the context you bring over, and every lead, contact, company and deal has an activity timeline.
During a parallel run, Exa’s embeddable forms and server-to-server lead API can send new leads into Exa while you finish moving the rest. Audit logs record creates, updates and deletes with old and new values, which helps if you need to trace what an import changed. For the rest of the rollout, see our 30-day implementation plan.
Final thoughts
A CRM migration goes well when you treat it as a short, careful data project: export everything, clean and dedupe in the spreadsheet, map every field, import in order, verify with counts and spot-checks, and cut over on a fixed date. A week of preparation saves months of cleanup later.
Try it with your own leads
Exa puts leads, pipeline, inbox and an AI assistant in one simple app.
Sources
FAQ
Frequently asked questions
Short answers to the questions we hear most about this topic.
Still have questions?
Start a free trial and see Exa with your own leads and pipeline, or email our team.
How long does a CRM migration take?
For a small business with a few thousand records, plan on one to three weeks, including cleanup, a test import, the full import and a short parallel run.
Should I migrate all of my old data?
Migrate active contacts, customers, open deals and recent history. Keep an archive of everything else in a secure spreadsheet export so you can find it if you need it.
What is a field map?
A simple table that lists each column in your old data, the field it goes to in the new CRM and any change it needs on the way, such as reformatting phone numbers or splitting a full name.
Why do records end up duplicated after an import?
Usually because the same person exists in several source files, or because the import created new records instead of matching existing ones. Dedupe before import and choose a duplicate rule during import.
Can I move my email history to a new CRM?
It depends on both systems. Often the practical approach is to export key notes and activity summaries, attach important files, and let new conversations build up in the new CRM from the cutover date.
What should I do with the old CRM after switching?
Keep it read-only until the end of your contract or a set period, make a final full export, then close the account and securely delete any spare export files.
Recommended reading

Duplicate records in your CRM: prevent and merge them
Why CRM duplicates happen, how to match records on email, phone and name, how to stop duplicates at entry and import, and rules for merging safely.
6 min readRead
CRM implementation: a 30-day plan for small teams
A week-by-week CRM rollout plan for small teams: goals, pipeline design, data import, integrations, automations, training and adoption metrics.
7 min readRead
Contact management: one record for every relationship
How to organize leads, contacts and companies in a CRM: the fields that matter, timelines, notes, tags, custom fields and habits that keep records clean.
7 min readRead
CRM API and webhooks: connect your CRM to anything
REST APIs vs webhooks explained, common CRM integration use cases, how to keep API keys safe, verify HMAC signatures, and handle retries and idempotency.
7 min readRead