Article content and detailed guides remain in English. The selected language applies to controls and quick instructions.

Back to articles

Data Quality Checklist for CRM Migrations: How to Avoid a Messy Transfer

On this page

Why CRM Migrations Go Wrong

CRM migrations fail more often from bad data than from bad technology. Common migration failures and their causes:

Failure Cause Impact
Duplicate contacts flood new CRM Duplicates not resolved before migration Sales reps see 3-5 records per contact; reporting inflated
Missing email addresses Emails in non-standard fields; not mapped correctly Cannot contact thousands of existing customers
Broken deal history Activity and deal data not linked to correct contacts Lost institutional knowledge; broken pipeline reporting
Invalid data in required fields Old CRM had optional fields; new CRM requires them Migration errors; records rejected
Custom field data loss Custom fields not mapped; data types incompatible Months of lost segmentation and qualification data
Compliance data missing Consent records, opt-out status not migrated GDPR/CAN-SPAM violations; sending to opted-out contacts
Ownership assignment errors User IDs do not map between systems Contacts assigned to wrong reps; orphaned records

Migration complexity by CRM combination

From To Complexity Key challenges
Spreadsheet / CSV Any CRM Low-medium Data standardisation; field mapping; deduplication
HubSpot Salesforce Medium Object model differences; custom properties to fields
Salesforce HubSpot Medium Salesforce object complexity; custom objects; Apex logic
Pipedrive HubSpot or Salesforce Medium Deal structure differences; custom field mapping
Zoho Any CRM Medium Module naming differences; workflow migration
Legacy CRM (Act!, Goldmine) Modern CRM High Old data formats; no API; manual export required
Custom / homegrown system Any CRM High Non-standard data structures; custom business logic
Multiple CRMs (consolidation) One CRM Very high Deduplication across systems; conflicting data

Pre-Migration Data Audit

Step 1: Inventory your data

Data category What to document Why it matters
Contacts / leads Total count; field coverage; data age Scope of migration; cleaning effort
Companies / accounts Total count; relationship to contacts; hierarchy Account structure mapping
Deals / opportunities Total count; stages; values; associated contacts Pipeline migration; historical reporting
Activities (emails, calls, meetings) Volume; date range; associated records Interaction history preservation
Notes and attachments Volume; file types; sizes Storage requirements; format compatibility
Custom fields Field names; data types; picklist values; usage rate Mapping complexity; data type conflicts
Tags / labels / lists Number; membership counts; naming conventions Segmentation migration
Consent / compliance records Opt-in dates; consent types; opt-out records Legal compliance continuity
Integrations Connected tools; sync directions; data dependencies Integration replacement planning
Automation / workflows Number; triggers; actions; dependencies Re-creation in new system

Step 2: Assess data quality

Quality dimension How to measure Acceptable threshold Action if below
Completeness (email field populated) Count records with vs without email 90%+ Find or remove records without email
Validity (email format correct) Regex validation on email field 95%+ Clean invalid formats
Uniqueness (no duplicates) Count duplicate emails; duplicate company names Under 5% duplication rate Deduplicate before migration
Accuracy (data is current) Check bounce rates; verify sample 85%+ Verify and update stale records
Consistency (standardised format) Review field values for variations 90%+ Standardise before migration
Timeliness (data is recent) Check last modified dates 80%+ modified in last 2 years Archive or flag stale records

Data Cleaning Checklist

Contact data cleaning

Task Method Priority Notes
Remove obvious test records Search for "test", "example.com", "asdf" Critical These pollute the new system from day one
Standardise email format Lowercase all; trim whitespace Critical Prevents duplicate creation in new CRM
Validate email format Regex check for valid email pattern Critical Remove or flag malformed addresses
Verify emails (batch verification) Use verification service (ZeroBounce, NeverBounce, etc.) High Remove invalid; flag risky
Deduplicate contacts Match on email (primary); fuzzy match on name + company Critical Merge duplicate records; keep most complete data
Standardise phone formats Strip to digits; format consistently Medium Prevents confusion; enables calling features
Standardise names Title case; remove extra spaces; separate first/last High Clean display; proper personalisation
Standardise company names Remove Inc/LLC variations; standardise abbreviations High Proper account matching
Clean addresses Standardise street types; validate ZIP codes Medium Enables territory assignment; location features
Update job titles Standardise common variations (VP, Vice President) Medium Enables title-based segmentation
Tag data source Add field noting where each contact originated Medium Enables source tracking in new CRM
Flag stale records Mark contacts not engaged in 12-24+ months Medium Decide whether to migrate or archive
Verify consent status Confirm opt-in/opt-out records are accurate and complete Critical Legal compliance

Deal and pipeline data cleaning

Task Method Priority Notes
Close old stuck deals Deals open 2x+ beyond normal cycle High Clean pipeline in new system
Verify deal amounts Check for outliers; confirm currency High Accurate pipeline reporting
Standardise deal stages Map old stages to new CRM stages Critical Pipeline reporting accuracy
Link deals to contacts and companies Verify associations are correct Critical Relationship integrity
Archive lost deals older than 2 years Move to archive; do not migrate Medium Cleaner pipeline
Verify close dates Check for future dates on closed deals; past dates on open High Accurate forecasting

Field Mapping

Common field mapping challenges

Challenge Example Solution
One field maps to multiple "Full Name" to "First Name" + "Last Name" Split with formula or script before migration
Multiple fields map to one Separate "Work Phone" and "Mobile" to single "Phone" Decide priority; put secondary in notes
Picklist values differ Old: "Hot/Warm/Cold"; New: "A/B/C/D" Create mapping table; transform before import
Data type mismatch Text field "Revenue" to number field "Annual Revenue" Clean and convert; remove non-numeric characters
Required field missing New CRM requires "Industry"; old has no equivalent Enrich or set default; clean up post-migration
Custom field with no equivalent Old CRM custom field; no matching field in new Create custom field in new CRM or merge into notes
Multi-select to single-select Old allows multiple; new allows one Decide primary value; move others to separate field

Mapping document template

Source CRM field Source data type Target CRM field Target data type Transformation needed Notes
Full Name Text First Name + Last Name Text (2 fields) Split on first space Handle suffixes (Jr, III)
Email Text Email Email Lowercase; trim Primary identifier
Phone Text Phone Phone Format to E.164 Strip extensions
Company Text Company Name Text Standardise Remove Inc/LLC
Lead Status Picklist Lifecycle Stage Picklist Map values Document value mapping
Revenue Text Annual Revenue Currency Remove $, commas; convert to number Handle "Unknown" values
Created Date Date Create Date Date Format to ISO 8601 Time zone considerations
Notes Rich text Notes Rich text Strip unsupported formatting Check character limits

Post-Migration Verification

Verification checklist

Check Method Acceptable result
Record count matches Compare source count to target count Within 1% (excluding intentionally excluded records)
Email addresses intact Export emails from both; compare 100% match for migrated records
Deals linked to correct contacts Spot-check 50 random deals 100% correct association
Activities linked to correct contacts Spot-check 50 random contacts 95%+ correct association
Custom field data preserved Spot-check 50 records per custom field 95%+ correct values
Picklist values mapped correctly Review all picklist fields 100% valid values (no unmapped entries)
Owner assignment correct Check ownership of 50 random records 100% correct owner
Consent and compliance data intact Verify opt-out list completeness 100% of opt-outs preserved
Integrations reconnected Test each integration end-to-end All integrations functional
Automations re-created and tested Trigger test scenarios Automations fire correctly

Preparing Migration Data

Before migrating, export all your CRM data (contacts, leads, accounts) and any supplementary sources (spreadsheets, email marketing platform exports, event attendee lists, support ticket databases) and upload them to Email Extractor to extract and deduplicate email addresses across all sources. This creates a unified, deduplicated email list that serves as the foundation for your migration. Identifying duplicates before migration prevents creating duplicate records in the new CRM, which is far harder to fix after the fact.

Extract emails

Explore tools

Verify emails

Check address validity before using your list.

ZeroBounce

Email Verification

Verifies email lists and provides tools for monitoring deliverability.

Useful when list cleaning and sender health belong in one workflow.

Explore ZeroBounce (opens in a new tab)