How to Migrate Email Lists Between Marketing Platforms: Mailchimp to Klaviyo, Constant Contact to Brevo, ActiveCampaign to HubSpot and Other Common Migration Paths
By Email ExtractorPublished 7 min read
On this page
Why Migrate Email Platforms
Businesses migrate email marketing platforms for better pricing at scale, more advanced automation, improved deliverability, better e-commerce integration, more sophisticated segmentation, or because their current platform is being discontinued or acquired. The migration itself is where lists get lost, corrupted, duplicated or stripped of valuable engagement data:
Migration trigger
Typical migration path
Risk level
Primary concern
E-commerce growth
Mailchimp to Klaviyo; Constant Contact to Omnisend
Medium
Preserving purchase history and product engagement data alongside email data
B2B sales enablement
Marketing platform to HubSpot; standalone ESP to CRM-integrated platform
High
Mapping email engagement to contact records; preserving lead scores
Cost reduction at scale
Full-featured platform to value platform (Brevo, EmailOctopus, Sender)
Medium
Feature parity gaps; ensuring deliverability on new platform
Automation complexity
Basic platform to ActiveCampaign, Drip or advanced automation platform
Medium
Recreating automation workflows; preserving subscriber journey state
Platform sunset or acquisition
Discontinued platform to any alternative
High
Tight timeline; limited support from departing platform; data export constraints
Deliverability issues
Any platform to platform with better deliverability infrastructure
Medium
Warm-up required on new platform; sending reputation does not transfer
Email, name, tags, custom fields, lead score, lifetime value
Workflow state; event history
Step 2: Clean the list before importing
Migration is the best time to clean your email list because you avoid importing bad data into the new platform and you reduce the cost of the new platform (most charge by subscriber count):
Cleaning task
How to do it
Why it matters during migration
Remove bounced addresses
Most platform exports include a status or engagement column; filter out "bounced", "cleaned" or "hard bounce" status
Importing bounced addresses to a new platform damages your sending reputation from day one
Remove unsubscribed contacts
Filter out "unsubscribed" status from export
Importing unsubscribed contacts and emailing them violates CAN-SPAM; most platforms flag this as a compliance issue
Remove inactive subscribers
Filter out subscribers who have not opened or clicked in [12-24] months (depending on your sending frequency)
Inactive subscribers lower engagement rates and increase spam complaint risk on the new platform
Deduplicate
Upload all exports to Email Extractor to find and remove duplicates across lists
Duplicates inflate subscriber count (higher cost) and cause duplicate sends
Fix obvious typos
Sort by domain; correct "gmial.com", "yahooo.com", "hotmal.com"
Prevents bounces on the new platform
Remove role-based addresses
Filter out info@, admin@, sales@, support@, noreply@
Role-based addresses generate complaints and lower engagement metrics
Validate remaining addresses
Run through an email verification service before importing
Ensures list quality on the new platform from day one
Step 3: Map fields between platforms
Common field mapping challenge
Source platform field
Destination platform field
Solution
Different field names for the same data
Mailchimp: "FNAME" / "LNAME"
Klaviyo: "first_name" / "last_name"
Rename columns in CSV before importing
Merged vs. split name fields
Source has "Full Name"
Destination has separate first/last name fields
Split using spreadsheet formulas before importing
Date format differences
Source: "MM/DD/YYYY"
Destination: "YYYY-MM-DD"
Reformat dates in spreadsheet before importing
Tag vs. list segmentation
Source uses tags for segmentation
Destination uses lists
Create lists from tags during import, or map tags to custom fields
Custom field type mismatches
Source: text field with "yes"/"no"
Destination: boolean/checkbox field
Convert values before importing
Multi-value fields
Source: "Interests: A, B, C" in one field
Destination: separate fields or multi-select
Split into separate columns or use multi-select import format
Consent and opt-in records
Source records opt-in date and source
Destination requires consent proof
Map consent fields; preserve original opt-in data for compliance
Step 4: Import to destination platform
Platform
Import method
Maximum file size
Dedup on import
Consent handling
Mailchimp
Audience > Import contacts > CSV
15 MB
Merges by email; updates existing records
Can mark as opt-in confirmed during import
Klaviyo
Lists & Segments > Create List > Import > CSV
50 MB
Merges by email; updates profiles
Records consent status from import field
Constant Contact
Contacts > Add Contacts > Upload CSV
4 MB
Merges by email; option to update or skip
Requires agreement that contacts opted in
Brevo
Contacts > Import contacts > Upload file
10 MB
Merges by email
Records opt-in status from import
ActiveCampaign
Contacts > Import > CSV
Varies by plan
Merges by email; updates or skips
Imports consent data from mapped fields
HubSpot
Contacts > Import > File from computer
512 MB
Merges by email; creates or updates
Imports subscription status; honours unsubscribes
Kit (ConvertKit)
Subscribers > Import > CSV
10 MB
Merges by email
Confirms existing; imports as unconfirmed option
Drip
People > Import > CSV
50 MB
Merges by email
Imports subscription status
Step 5: Warm up sending on new platform
Warm-up phase
Timeline
Daily volume
Who to send to
Phase 1
Days 1-3
500-1,000
Most engaged subscribers (opened or clicked in last 30 days)
Phase 2
Days 4-7
2,000-5,000
Engaged subscribers (opened or clicked in last 90 days)
Phase 3
Days 8-14
5,000-15,000
Active subscribers (opened or clicked in last 180 days)
Phase 4
Days 15-21
15,000-50,000
All active subscribers (opened or clicked in last 12 months)
Phase 5
Days 22-30
Full list volume
Entire migrated list (excluding cleaned/bounced/unsubscribed)
Using Email Extractor During Migration
When migrating between platforms, you often have subscriber data in multiple exports (one per list, one per segment, one per tag group, plus supplementary data from CRM exports, e-commerce platforms and other sources). Upload all export files to Email Extractor to:
Extract all email addresses from every export file regardless of column name or format
Deduplicate across all files (the same subscriber may appear in multiple list exports)
Download as CSV to see which source file each email came from (helps identify list overlaps)
Produce a clean, deduplicated master list for import into the new platform
This is particularly useful when migrating from platforms that export by list (one CSV per list with overlap between lists), or when consolidating from multiple platforms into one (migrating from Mailchimp + Constant Contact + a CRM into a single HubSpot instance).
Common Migration Pitfalls
Pitfall
What happens
How to avoid it
Importing bounced and unsubscribed addresses
New platform flags your account for importing bad data; deliverability damaged from first send
Clean exports before importing; filter by engagement status
Not warming up on new platform
High bounce rates and spam complaints; new platform's IP/domain flagged
Follow warm-up schedule; start with most engaged subscribers
Losing engagement history
Cannot segment by engagement on new platform; treating all subscribers as new
Export engagement metrics (last open date, click date) as custom fields; import these as profile data
Double-sending during migration
Subscribers receive the same email from both platforms during overlap period
Use one platform exclusively for sending during transition; disable sends on old platform before enabling on new
Consent data loss
Cannot prove opt-in on new platform; compliance risk
Export and preserve opt-in dates, sources and consent records; import as custom fields
Automation re-trigger
Subscribers re-enter automations they already completed on old platform
Exclude migrated subscribers from welcome sequences and onboarding automations; use "migrated" tag