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

Back to articles

Email Data Migration: How to Move Contact Lists Between Platforms Without Losing Data

On this page

When Email Data Migration Happens

Businesses migrate email data between platforms more often than most plan for:

Migration scenario From To Common triggers
ESP switch Mailchimp, Constant Contact, etc. Klaviyo, ActiveCampaign, HubSpot, etc. Outgrowing current platform; better features; cost
CRM migration Salesforce, HubSpot, Zoho, etc. Different CRM Better fit; cost reduction; acquisition/merger
All-in-one to specialised HubSpot (all-in-one) Salesforce (CRM) + Klaviyo (email) Need best-of-breed tools
Specialised to all-in-one Multiple tools HubSpot, Zoho, Salesforce Simplification; reduce tool sprawl
Startup to enterprise Mailchimp, spreadsheets Salesforce, Marketo, Pardot Company growth; enterprise requirements
Acquisition / merger Two companies, two systems One unified system Post-acquisition integration
Platform sunset Discontinued platform New platform Vendor going out of business or deprecating product

What Can Go Wrong

Risk What happens Impact Prevention
Data loss Contacts, fields or engagement history lost during transfer Lost contacts = lost revenue; lost history = blind marketing Full backup before migration; verify counts after
Duplicate contacts Same person imported multiple times Inflated counts; higher costs; duplicate communications Deduplicate before import; use matching rules
Field mapping errors Data ends up in wrong fields (phone in email field, etc.) Broken automations; wrong personalisation Map fields carefully; test with sample data
Broken automations Automations reference old field names, tags or segments Emails stop sending; wrong triggers Audit all automations before and after
Engagement history loss Open/click/purchase history not transferred Lose ability to segment by engagement Export engagement data; re-import as custom fields
Opt-out / consent loss Unsubscribe status not transferred correctly Sending to unsubscribed contacts (legal violation) Verify opt-out status transfer; test before sending
Tag / segment mismatch Tags or lists do not map 1:1 between platforms Contacts in wrong segments; wrong emails sent Document all tags/lists; create mapping document
Formatting inconsistencies Date formats, phone formats, name capitalisation differ Broken personalisation; ugly merge fields Normalise data before import

Migration Process

Phase 1: Audit and planning

Step Action Output
1. Inventory current data List all contact fields, tags, lists, segments, automations Complete data inventory spreadsheet
2. Document engagement data What history exists: opens, clicks, purchases, lead scores Engagement data export plan
3. Map fields to new platform Create field-by-field mapping (old field name to new) Field mapping document
4. Identify data quality issues Duplicates, missing data, inconsistent formats Data quality report
5. Define success criteria What "successful migration" means (counts, fields, automations) Success checklist
6. Create timeline When each step happens; blackout period for sending Migration timeline
7. Assign responsibilities Who handles each step; who approves RACI matrix

Phase 2: Data preparation

Step Action Details
1. Export all data from source platform Full contact export including all fields, tags, lists CSV or native export format
2. Export engagement history Opens, clicks, purchases, lead scores, dates Separate export if needed
3. Export automations / workflows Document all automation logic, triggers, conditions Screenshots + written documentation
4. Export templates Email templates, landing pages, forms HTML export or screenshots
5. Clean and deduplicate Remove invalid emails, duplicates, outdated contacts Clean dataset
6. Normalise formats Standardise dates, phone numbers, names, addresses Consistent formatting
7. Verify opt-out status Ensure unsubscribed contacts are clearly marked Opt-out field verified

Phase 3: Import and configuration

Step Action Verification
1. Test import (small batch) Import 100-500 contacts as a test Verify field mapping, formatting, tags
2. Verify test import Check every field on 10+ test records All fields correct; no data in wrong places
3. Fix any mapping issues Adjust field mapping based on test results Re-test with another small batch
4. Full import Import all contacts Verify total count matches expected
5. Import engagement history Import as custom fields or through API Verify engagement data on sample records
6. Recreate automations Build automations in new platform Test each automation with test contacts
7. Recreate segments / lists Build segments using new platform's logic Verify segment counts match expected
8. Import templates Import or recreate email templates Verify rendering in email clients

Phase 4: Validation and go-live

Step Action Success criteria
1. Count verification Compare total contacts in old vs new platform Counts match (within 1% for deduplication)
2. Field spot-check Check 50+ random records across all fields All fields correct
3. Automation testing Trigger each automation with test contact All automations fire correctly
4. Send test campaigns Send to internal team using migrated data Personalisation works; right segments
5. Opt-out verification Attempt to send to unsubscribed contacts New platform blocks sending to unsubscribed
6. Go-live Begin sending from new platform Monitor bounce rates, engagement
7. Monitor for 2 weeks Watch deliverability, bounce rates, complaints No unusual spikes
8. Decommission old platform Cancel old platform after confirmation period 30-60 days after successful migration

Field Mapping Cheat Sheet

Common field mapping issues

Issue Example Solution
Date format mismatch Old: MM/DD/YYYY; New: YYYY-MM-DD Convert with spreadsheet or script before import
Phone format inconsistency Mix of (555) 123-4567, 555-123-4567, 5551234567 Standardise to one format (E.164 recommended: +15551234567)
Name field differences Old: Full Name; New: First Name + Last Name Split full name into first/last before import
Address field differences Old: one field; New: Street, City, State, Zip Parse address into components
Tag vs custom field Old: tags for industry; New: industry dropdown Convert tags to custom field values
Boolean vs text Old: "Yes"/"No"; New: true/false checkbox Convert text to boolean
Multi-select vs single-select Old: multi-select interests; New: single-select Decide: primary value, or restructure

Essential fields to migrate

Field Priority Notes
Email address Essential Primary identifier; normalise (lowercase, trim)
First name Essential Personalisation
Last name Essential Personalisation
Opt-in / consent status Essential (legal requirement) Do not lose this; verify carefully
Opt-in date Essential (legal) GDPR and CAN-SPAM compliance
Unsubscribe status Essential (legal) Must transfer accurately
Tags / lists High Segment membership
Phone number High Multi-channel communication
Company name High B2B personalisation
Custom fields (industry, role, etc.) Medium-high Segmentation and targeting
Engagement history (last open, last click) Medium Re-engagement segmentation
Lead score Medium Sales prioritisation
Purchase history Medium (e-commerce) E-commerce segmentation
Source / attribution Medium Channel performance analysis
Notes / comments Low-medium Sales context

Deduplication During Migration

Migration is the best time to deduplicate because you are already processing all your data:

Deduplication step Method Tool
Export all contacts from all sources CSV export from each platform Each platform's export function
Merge all exports into one file Combine CSVs Python (pandas), Excel, or Google Sheets
Normalise email addresses Lowercase, trim whitespace, remove duplicates Email Extractor, Python, or spreadsheet formulas
Identify duplicates by email Exact match on normalised email Spreadsheet (COUNTIF) or Python (drop_duplicates)
Choose winner for each duplicate Keep record with most data, most recent activity, or source priority Manual rules or script
Merge duplicate records Combine fields from duplicates into one record CRM deduplication tool or manual merge
Verify final count Confirm no lost records and no remaining duplicates Count comparison

Preparing Data for Migration

Before importing into any new platform, export your contact lists from all sources and upload them to Email Extractor to extract and deduplicate email addresses across all files. This is especially important when migrating from multiple sources (old ESP + CRM + spreadsheets + form submissions), because the same contact often exists in several systems with slightly different data. Deduplicating before import prevents paying for duplicate contacts in your new platform and ensures clean data from day one.

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)