CRM Migration

How to Clean Data for CRM Migration: The Complete Pre-Migration Checklist

CRM migrations fail because of dirty data, not bad software. The contacts you are moving from your old CRM carry every duplicate, every formatting inconsistency, and every dead email address into your new system. This guide covers the exact data cleaning process you need before migrating between HubSpot, Salesforce, Zoho, or any other CRM.

March 2026·14 min read

Why CRM Migrations Fail

Most teams treat a CRM migration as a technology project. They evaluate the new platform, negotiate a contract, configure pipelines and custom fields, build integrations, and then export their data from the old CRM and import it into the new one. The import succeeds. Every record transfers. And then the problems start.

Sales reps find duplicate contacts. Marketing discovers that 18% of their email list bounces because the addresses were already dead in the old system. Date fields that said "March 15, 2024" in Zoho are now showing as "15/03/2024" in HubSpot and breaking workflow automation triggers. Phone numbers are missing country codes and the new CRM's dialer cannot parse them. Custom picklist values from the old system do not match the dropdown options in the new system, so thousands of records have blank fields where they should have "Enterprise" or "Mid-Market."

The root cause is always the same: dirty data from the source system carries over into the destination system. A CRM migration does not fix your data. It duplicates your problems in a new database. The only way to prevent this is to clean your data before you migrate.

The 3 Most Common CRM Migrations

HubSpot to Salesforce

Companies outgrowing HubSpot's CRM typically move to Salesforce when they need more complex reporting, advanced workflow automation, or enterprise-grade permission structures. The biggest data challenge in this migration is field mapping. HubSpot uses a flat property structure while Salesforce uses objects with relationships. HubSpot's "Lifecycle Stage" does not map directly to Salesforce's "Lead Status" and "Opportunity Stage." Contact properties that were free-text in HubSpot need to become picklist values in Salesforce. Date formats must shift from HubSpot's ISO 8601 standard to Salesforce's expected format. Multi-select properties use semicolons in HubSpot but may need different delimiters depending on your Salesforce configuration.

Salesforce to HubSpot

Mid-market companies frequently migrate from Salesforce to HubSpot to reduce cost and complexity. Salesforce exports can be messy: 18-character record IDs, lookup fields that export as IDs instead of names, formula fields that export as calculated values, and multi-object relationships that flatten into confusing CSV structures. Phone fields in Salesforce often store numbers in inconsistent formats because Salesforce does not enforce phone formatting by default. You may find numbers like "(555) 123-4567," "5551234567," "+1-555-123-4567," and "555.123.4567" all in the same column.

Zoho to HubSpot

Zoho CRM exports tend to include every custom field you ever created, including abandoned ones with mostly empty values. Zoho's date handling is particularly inconsistent across modules: you might see "03-15-2024," "2024/03/15," and "Mar 15, 2024" in different export files from the same Zoho instance. Zoho also exports boolean fields as "true" and "false" strings, which HubSpot may not recognize unless converted to "Yes" and "No" or HubSpot's internal boolean format.

The Data Cleaning Checklist Before Migration

This is the checklist you need to work through after exporting from your old CRM and before importing into your new one. Skip any step and you will carry that specific type of dirty data into your new system.

1. Deduplicate Contacts

Export your contacts and run deduplication on the email column. Most CRMs accumulate duplicates through form submissions, manual entry, and list imports over time. A typical CRM with 50,000 contacts has between 5% and 15% duplicates. These duplicates will cause merge conflicts in the new system, inflate your contact count (which affects pricing on platforms like HubSpot that charge per contact), and create confusion for sales reps who see multiple records for the same person. Use NoSheet's deduplication tool to identify and remove exact and fuzzy duplicates before migration.

2. Standardize Field Formats

Every CRM has different formatting requirements for dates, phone numbers, currencies, and enumerated values. After deduplication, standardize every field to match the destination CRM's expected format. Dates should be converted to ISO 8601 (YYYY-MM-DD) for most modern CRMs. Phone numbers should be converted to E.164 format with country codes. Currency values should be numeric only, no dollar signs or commas. State and country names should use the exact values your destination CRM expects, whether that is full names ("California") or abbreviations ("CA").

3. Validate Email Addresses

Do not migrate dead email addresses. Every invalid email you import into your new CRM is a contact you are paying to store that will never convert. Run email validation to check syntax, verify that the domain has valid MX records, and flag disposable email addresses. If your old CRM had 50,000 contacts, expect 8% to 20% of email addresses to be invalid, depending on the age of your database and how aggressively you acquired contacts. Remove or tag these records before migration. Read our email list cleaning guide for the complete process.

4. Format Phone Numbers

Phone numbers are the most inconsistently formatted field in every CRM export. You will find numbers with parentheses, dashes, dots, spaces, leading zeros, missing country codes, and extension suffixes all in the same column. Your destination CRM's calling integration will not work if phone numbers are not in a consistent format. Convert all phone numbers to E.164 format (+15551234567) to ensure compatibility with every major CRM and telephony provider.

5. Clean Up Custom Fields

Export your custom fields and audit them. How many are actually used? Most CRMs accumulate custom fields that someone created for a specific campaign or report and then abandoned. Fields with more than 80% empty values are candidates for removal. Fields with inconsistent data entry (free-text fields where some reps typed "Enterprise" and others typed "enterprise" or "Ent" or "ENT") need standardization before migration.

6. Map Picklist Values

Create a mapping document for every picklist and dropdown field. Your old CRM's "Lead Source" dropdown might have values like "Web," "Referral," "Trade Show," and "Cold Call." Your new CRM might use "Organic Search," "Partner Referral," "Event," and "Outbound." Every value needs an explicit mapping. Values that do not map will either be dropped (data loss) or imported as-is (creating values in your new CRM that do not match your defined options).

7. Handle Null and Empty Values

Decide what to do with empty fields before migration. Some CRMs export empty fields as blank strings, others as "NULL" or "N/A" or "n/a" or a single space character. These are all different values and will be imported differently. Standardize all empty values to truly empty strings. Remove placeholder values like "N/A," "TBD," "Unknown," or "." that previous users entered to bypass required field validation.

8. Normalize Date Formats

A single CRM export can contain dates in five different formats if the data was entered by different people over several years. "03/15/2024" and "15/03/2024" are ambiguous: is the month first or the day? Your destination CRM will guess, and it will guess wrong for some records. Convert all dates to unambiguous ISO 8601 format (2024-03-15) before migration. This eliminates all ambiguity and is accepted by every modern CRM. For help with this, see our guide on standardizing dates in spreadsheets.

The Cost of Migrating Dirty Data

Dirty data is not free to migrate. HubSpot charges based on your marketing contact count. If you migrate 50,000 contacts and 8,000 of them have invalid email addresses, you are paying HubSpot to store 8,000 contacts that will never open an email. At HubSpot's Marketing Hub Professional pricing, those 8,000 dead contacts cost you roughly $800 to $1,200 per year in additional contact tier fees.

Salesforce charges per user, not per contact, but dirty data still costs you. Duplicate records mean sales reps waste time researching contacts that already have notes under a different record. Inconsistent field formatting breaks reports, dashboards, and workflow automations that your admin spent weeks building. The time cost of cleaning data after migration is 3x to 5x higher than cleaning it before migration, because post-migration cleaning requires understanding the new system's data model, permissions, and automation dependencies.

The 5-Phase Migration Cleaning Process

Phase 1: Audit

Export everything from your old CRM. Every object, every custom field, every association. Then audit it. How many total records do you have? How many have valid email addresses? What percentage of fields are populated? Which custom fields are actually used? This phase gives you a baseline and helps you decide what to migrate and what to leave behind.

Phase 2: Map

Build a field mapping document that connects every source field to a destination field. Include the data type, format requirements, and any value transformations needed. This document becomes your migration specification and your QA checklist.

Phase 3: Clean

This is where you apply every step from the checklist above. Deduplicate. Validate emails. Format phones. Standardize dates. Map picklist values. Handle nulls. Clean custom fields. This phase takes the most time and produces the most value. Use NoSheet's CSV cleaner to automate the bulk of this work.

Phase 4: Validate

Before migrating your full dataset, run a test import with a sample of 100 to 500 records. Check that dates parse correctly, phone numbers display properly, picklist values match, and no unexpected duplicates are created. Fix any issues you find, then test again with a larger sample.

Phase 5: Migrate

Import your cleaned, validated data. Because you cleaned everything in Phase 3 and validated in Phase 4, this phase should be uneventful. That is the goal: a boring migration where nothing breaks, no duplicates appear, and every field populates correctly.

How NoSheet Fits Into Migration Prep

NoSheet sits between your old CRM export and your new CRM import. The workflow is simple: export your contacts, companies, and deals as CSV files from your source CRM. Upload them to NoSheet. Run deduplication, email validation, phone formatting, date standardization, and field cleaning operations. Download the cleaned files. Import them into your new CRM.

Because NoSheet is not locked to any specific CRM, it works regardless of which platforms you are migrating between. Whether you are moving from HubSpot to Salesforce, Salesforce to HubSpot, Zoho to HubSpot, Pipedrive to Salesforce, or any other combination, the data cleaning process is the same: fix the data in the CSV before it enters the new system. Read our CRM-specific guides for detailed format requirements: cleaning CSVs for Salesforce, cleaning CSVs for HubSpot, and cleaning CSVs for Zoho.

Real Example: Migrating 50K Contacts from Zoho to HubSpot

A B2B SaaS company with 50,000 contacts in Zoho CRM needed to migrate to HubSpot. Their Zoho instance had been in use for four years and had accumulated significant data quality issues. Here is what the cleaning process looked like:

Audit results: 50,247 contact records. 7,891 duplicate email addresses (15.7%). 4,203 invalid email addresses (8.4%). 12,408 phone numbers in non-standard formats. 3 different date formats across date fields. 47 custom fields, of which 19 had less than 5% population and were candidates for removal.

Cleaning results: After uploading the Zoho export to NoSheet, the team ran deduplication (removed 7,891 duplicates), email validation (flagged 4,203 invalid addresses for removal), E.164 phone formatting (standardized all 12,408 non-standard numbers), and date standardization (converted all dates to ISO 8601). The entire cleaning process took 3 minutes of processing time. The cleaned export contained 38,153 unique contacts with valid, standardized data ready for HubSpot import.

Migration outcome: The HubSpot import completed with zero errors. No duplicate contacts were created. All date-based workflows triggered correctly. The sales team's calling integration worked immediately because every phone number was in E.164 format. The company saved an estimated $1,100 per year in HubSpot contact tier fees by not importing 12,094 dead or duplicate records.

Preparing for a CRM migration?

Upload your CRM export and clean it in minutes. Dedup, validate emails, format phones, and standardize dates before you import.

Clean Your Migration Data Free

Related Resources