Quick Answer
Migrating from Klaviyo to Mailchimp requires more than exporting a contact list. The five critical data layers that break if not handled correctly are: opt-in status, suppression lists, tags-to-groups mapping, custom property fields, and SMS consent subscribers who have no equivalent in Mailchimp.
Why it happens: Klaviyo and Mailchimp use fundamentally different data models. Klaviyo organizes contacts as profiles with properties and list memberships. Mailchimp organizes contacts as audience members with merge fields and tags. The export CSV from Klaviyo doesn't map directly to what Mailchimp expects.
The fix: Export each subscriber segment separately, clean and reformat the CSV for Mailchimp's column requirements, then import in the correct order — suppressed contacts first, then subscribed contacts.
Root cause: The single most damaging migration mistake is importing your full Klaviyo list without handling suppressions first. Mailchimp will accept suppressed contacts as subscribed, and you'll send to people who unsubscribed — a direct CAN-SPAM violation and potentially a GDPR breach.
The One Migration Mistake That Gets You Fined
Most guides explain how to move your list. They skip the part that creates legal exposure.
Klaviyo's full list export includes everyone: subscribed, unsubscribed, cleaned, and never-subscribed. When you upload that file to Mailchimp without filtering, Mailchimp has no way to know which contacts opted out. It accepts them all as subscribed — or defaults to subscribed if you don't specify a status.
The result: people who unsubscribed from your Klaviyo sends receive emails from your Mailchimp account. Under CAN-SPAM, honoring unsubscribe requests is a legal requirement, not a preference. Under GDPR, sending to contacts who withdrew consent creates Article 7 exposure. Mailchimp can also suspend your account for sending to unsubscribed contacts if enough of them mark your emails as spam.
The fix is a one-line change to your import sequence: import suppressions first.
Fast Fix (5 Minutes)
If you need to migrate immediately, follow this sequence:
- Export suppressions from Klaviyo first — Klaviyo > Lists & Segments > Suppressions > Export. This is your global unsubscribe list.
- Import suppressions into Mailchimp as unsubscribed — Upload to your Mailchimp audience, set status to "Unsubscribed."
- Export subscribed contacts from Klaviyo — Filter to subscribed profiles only, not your full list.
- Clean the CSV — Rename
EmailtoEmail Address,First NametoFNAME,Last NametoLNAME. - Import subscribed contacts — Mailchimp deduplicates on email; anyone already marked unsubscribed stays unsubscribed.
This sequence alone prevents the compliance violation. Everything else in this guide is about preserving your data fidelity.
Klaviyo → Mailchimp Migration Checklist
Use this as your single-screen reference before, during, and after migration.
PRE-MIGRATION
[ ] Back up full Klaviyo list before cancelling account
[ ] Export suppression list from Klaviyo (Audience > Suppressions > Export)
[ ] Export subscribed contacts ONLY (filter: Email Subscription = Subscribed)
[ ] Identify all custom properties you need to preserve
[ ] Create Mailchimp merge fields for each custom property
[ ] Map Klaviyo tags → Mailchimp tag names (decide naming convention)
[ ] Note your Klaviyo segment logic (for recreation in Mailchimp)
IMPORT SEQUENCE (order matters)
[ ] Step 1: Import suppression CSV → set status: Unsubscribed
[ ] Verify: Mailchimp unsubscribed count ≈ Klaviyo suppression count
[ ] Step 2: Import subscribed contacts CSV → set status: Subscribed
[ ] Verify: Mailchimp total audience count matches expected subscribed count
POST-MIGRATION
[ ] Check 5–10 records manually: tags present, merge fields populated
[ ] Confirm suppressed contacts show as Unsubscribed (not Subscribed)
[ ] Do NOT send a campaign until suppression counts are verified
[ ] Plan Mailchimp warmup sequence (start with most-engaged segment)
[ ] Cancel Klaviyo account only after verifying data integrity
TL;DR: Export suppressions before subscribed contacts and import them first. Rename Klaviyo's column headers to Mailchimp's required format. Map Klaviyo tags to Mailchimp tags or groups before importing. Custom properties need to become Mailchimp merge fields — create them before the import. Run your CSV through Data Cleaner to handle bulk column renames and encoding standardization without uploading your subscriber list to a cloud service.
Your ecommerce store is switching from Klaviyo to Mailchimp. The Klaviyo plan is being cancelled next month. You export your list, upload it to Mailchimp, and the import succeeds. A week later you discover that 2,300 previously unsubscribed contacts are now in your active audience — and you've already sent them two campaigns.
That's not a data error. That's a CAN-SPAM violation and potentially a GDPR breach, depending on where those contacts are located. The Klaviyo export includes everyone: subscribed, unsubscribed, cleaned, never-subscribed. Mailchimp's import doesn't automatically classify them — it accepts whatever status you tell it, or defaults to subscribed if you don't specify.
Subscriber lists contain names, email addresses, purchase history, behavioral data, and consent records — among the most sensitive PII your business holds. Most cloud-based CSV cleaning tools upload your list to a remote server to process it. Under GDPR Article 5(1)(c) data minimization and Article 28 processor obligations, that upload requires justification and potentially a data processing agreement with the vendor before you've even confirmed the file is correct. SplitForge's Data Cleaner runs entirely in Web Worker threads in your browser — your subscriber list never reaches any external server. Verify this yourself in Chrome DevTools under the Network tab while the cleaning runs.
Each step in this guide was validated against the Klaviyo export format and Mailchimp import requirements, March 2026. For the complete CRM and email platform import failure taxonomy, see our CRM import failures complete guide. Teams dealing with Klaviyo-specific import errors should also see Fix Klaviyo CSV Import Errors and Mailchimp CSV Import Errors for platform-specific troubleshooting.
What Goes Wrong Without Proper Preparation
❌ BROKEN — Unprepped Klaviyo export imported directly into Mailchimp:
Klaviyo export (all contacts, no filtering):
Email,First Name,Last Name,Consent,Source,Tags
[email protected],Alice,Chen,Subscribed,Web,vip customer
[email protected],Bob,Smith,Unsubscribed,Import,prospect
[email protected],Carol,Jones,Cleaned,Web,inactive
[email protected],David,Kim,Never Subscribed,API,
Column names don't match Mailchimp's required format.
All contacts imported as "Subscribed" (Mailchimp default when status unspecified).
Bob and Carol — who unsubscribed — are now in your active audience.
Klaviyo "Consent" field not mapped to Mailchimp status.
Tags imported as a single comma-separated string, not individual tags.
FIXED — proper export and column mapping:
Email Address,FNAME,LNAME,TAGS
[email protected],Alice,Chen,vip-customer
[bob and carol imported separately as Unsubscribed — never in subscribed import]
[david excluded — Never Subscribed has no equivalent in Mailchimp]
The damage from importing suppressions as subscribed isn't just compliance risk — it immediately inflates your bounce rate, trains ISPs to treat your sends as spam, and contaminates list health metrics that Mailchimp uses to evaluate sender reputation.
The Klaviyo → Mailchimp Data Model Gap
| Klaviyo Concept | Mailchimp Equivalent | Migration Action Required |
|---|---|---|
| Profile | Contact (Audience member) | Direct export → import |
| List membership | Audience membership | Map segments to audiences or tags |
| Tags | Tags | Import tag column; comma-separated |
| Custom properties | Merge fields (MERGETAG) | Create merge fields in Mailchimp first |
| Subscribed status | Subscribed | Filter subscribed only for main import |
| Unsubscribed status | Unsubscribed | Import suppressions first, separately |
| Cleaned (bounced) | Cleaned | Import as unsubscribed; Mailchimp handles cleaning |
| SMS subscriber | No equivalent | Exclude or store in custom field |
| Segments | Tags or Groups | Map to tag or group before importing |
Table of Contents
- Step 1: Export Suppressions From Klaviyo
- Step 2: Export Subscribed Contacts
- Step 3: Map Klaviyo Columns to Mailchimp Format
- Step 4: Handle Tags and Custom Properties
- Step 5: Import in the Right Order
- Common Migration Problems
- Additional Resources
- FAQ
This guide is for: Email marketers and marketing operations teams moving subscriber lists from Klaviyo to Mailchimp.
Already past the export step? Jump to Step 3 to fix column mapping issues.
Step 1: Export Suppressions From Klaviyo
Suppressed contacts in Klaviyo are people who have unsubscribed, marked an email as spam, or hard bounced. Klaviyo maintains a global suppression list that applies across all flows and campaigns.
Export this list before anything else. It must be imported into Mailchimp first, before your subscribed contacts.
How to export Klaviyo suppressions:
- Log in to Klaviyo and navigate to Audience > Suppressions.
- Click Export Suppressions — this downloads a CSV of all suppressed email addresses.
- Open the file — you'll see Email and Reason columns.
Klaviyo suppression export format:
email,reason
[email protected],Unsubscribed
[email protected],Bounced Hard
[email protected],Marked as Spam
[email protected],Invalid Email
All four of these contacts must be in Mailchimp as Unsubscribed
BEFORE you import your subscribed contacts.
Why Cleaned matters: Klaviyo's "Cleaned" status means the address hard bounced. In Mailchimp, hard-bounced addresses are cleaned automatically — but only after a send attempt. Importing them as Unsubscribed prevents Mailchimp from ever attempting delivery, which protects your sender reputation.
Step 2: Export Subscribed Contacts
After suppressions are handled, export only subscribed contacts. Never export your full Klaviyo list and let Mailchimp sort it out.
How to export only subscribed profiles:
- In Klaviyo, navigate to Audience > Profiles.
- Filter by Subscriptions > Email > Subscribed — this selects only active opt-in contacts.
- Select all filtered profiles and click Export Profiles.
- Choose which properties to include — include First Name, Last Name, and any custom properties you need.
The resulting CSV is your import file. It contains only people who have an active email opt-in — no suppressions, no never-subscribed, no pending.
Step 3: Map Klaviyo Columns to Mailchimp Format
Mailchimp has specific required column names. Klaviyo's export uses different names. This mapping must be done before upload — Mailchimp's import wizard can handle some renaming, but mismatches cause silent data drops.
Klaviyo → Mailchimp Column Mapping Reference
BEFORE (Klaviyo export column) → AFTER (Mailchimp required column)
Email → Email Address ← REQUIRED, exact label
First Name → FNAME ← Mailchimp default merge tag
Last Name → LNAME ← Mailchimp default merge tag
Phone Number → PHONE ← if using phone merge field
Tags → TAGS ← comma-separated, imports as individual tags
Columns that need merge fields pre-created in Mailchimp:
Total Orders → ORDERS ← number merge field
Last Purchase Date → LASTPURCH ← date merge field
Birthday → BDAY ← date merge field
[any other custom] → [YOURTAG] ← uppercase, no spaces
Columns to EXCLUDE (no Mailchimp equivalent):
Source → exclude
Consent → exclude (handled by import status setting)
Created → exclude
Updated → exclude
SMS Consent → exclude (no Mailchimp SMS equivalent)
Suppression status columns:
Suppress Reason → import as Unsubscribed status (not a column — use import settings)
Minimal valid Mailchimp import CSV:
Email Address,FNAME,LNAME,TAGS
[email protected],Alice,Chen,vip-customer
[email protected],Bob,Smith,prospect
[email protected],Carol,Jones,"vip-customer,enterprise"
Rules:
Email Addressheader is exact — not "Email", not "email address"- Multiple tags: comma-separated within the TAGS cell, wrapped in quotes
- Any column not matching a Mailchimp field (or merge tag) is silently dropped
Klaviyo export column → Mailchimp required column name
Email → Email Address (required, exact)
First Name → FNAME (Mailchimp's default merge tag)
Last Name → LNAME (Mailchimp's default merge tag)
Phone Number → PHONE (if you use phone merge field)
[any custom property] → [MERGETAG] (must match merge tag you create in Mailchimp)
Klaviyo columns with no Mailchimp equivalent:
- Source → exclude or map to a custom merge field
- Consent → exclude (status handled by import settings)
- Created → exclude
- Updated → exclude
- SMS Consent → exclude (no SMS equivalent in Mailchimp standard)
❌ BROKEN — Klaviyo column names imported as-is:
Email,First Name,Last Name,Phone Number,Tags
[email protected],Alice,Chen,+14155550100,vip-customer
Mailchimp result:
- "Email" column not recognized as primary email → import fails or creates blank records
- "First Name" not mapped to FNAME → first names blank on all contacts
- "Phone Number" not mapped → phone field blank
FIXED — renamed to Mailchimp format:
Email Address,FNAME,LNAME,PHONE,TAGS
[email protected],Alice,Chen,+14155550100,vip-customer
Data Cleaner handles bulk column renaming across your entire subscriber list in your browser — no upload required.
Step 4: Handle Tags and Custom Properties
Tags
Klaviyo tags export as a comma-separated string in a single Tags column. Mailchimp imports tags the same way — comma-separated in one column, which it then splits into individual tags.
Klaviyo Tags export:
Tags
"vip-customer,active-buyer,summer-promo"
Mailchimp Tags import format:
TAGS
"vip-customer,active-buyer,summer-promo"
This works directly — no transformation needed.
Just make sure the column header is "TAGS" (or map it during the import wizard).
Tag naming: Mailchimp and Klaviyo both treat tags as case-sensitive for display but case-insensitive for deduplication. "VIP-Customer" and "vip-customer" become two distinct tags in Mailchimp if your existing audience already uses one casing. Standardize tag case before importing.
Custom Properties → Merge Fields
Klaviyo custom properties (e.g., "Total Orders", "Last Purchase Date", "Birthday") need to become Mailchimp merge fields before you import.
Before importing:
- In Mailchimp, navigate to Audience > Manage Audience > Settings > Audience fields and |MERGE| tags.
- Create a new merge field for each Klaviyo custom property.
- Assign a merge tag (all caps, no spaces:
ORDERS,LASTPURCH,BDAY). - Rename the corresponding column in your Klaviyo export CSV to match the merge tag.
❌ BROKEN — Custom property column not pre-created in Mailchimp:
Klaviyo export includes: "Total Orders", "Last Purchase Date"
Mailchimp has no merge fields for these.
Result: columns silently dropped on import. Contact imports; data lost.
FIXED — merge fields created first, columns renamed to match merge tags:
Klaviyo column "Total Orders" → Mailchimp merge field ORDERS
Klaviyo column "Last Purchase Date" → Mailchimp merge field LASTPURCH
CSV column renamed before import:
Email Address,FNAME,LNAME,ORDERS,LASTPURCH
[email protected],Alice,Chen,47,2026-02-15
Step 5: Import in the Right Order
The import sequence determines your compliance status. Get it backwards and suppressed contacts become subscribed.
CORRECT IMPORT ORDER:
Step 1: Import suppression CSV into Mailchimp
→ Set status to "Unsubscribed" in import settings
→ These contacts are now protected
Step 2: Import subscribed contacts CSV
→ Mailchimp deduplicates on email address
→ Anyone already marked Unsubscribed stays Unsubscribed
→ New subscribed contacts are added correctly
Step 3: Verify suppression counts match
→ Klaviyo suppression count ≈ Mailchimp unsubscribed count
→ If counts differ significantly, check for encoding issues in suppression CSV
WRONG ORDER (compliance risk):
Step 1: Import subscribed contacts
→ Alice, Bob, Carol, David all imported as Subscribed
Step 2: Import suppressions
→ Bob and Carol NOW changed to Unsubscribed — but you've already
sent to them between step 1 and step 2
Common Migration Problems
GDPR contacts migrated without consent records
Klaviyo stores GDPR consent timestamps and consent text. Mailchimp has GDPR fields (activated per audience), but Klaviyo doesn't export consent data in its standard profile export format.
For EU contacts, document your consent basis before migrating. If Klaviyo was your consent system of record, export the consent data via Klaviyo's API or GDPR data export feature before cancelling the account. Mailchimp's GDPR fields can be populated via import if you have the consent timestamp data.
Segments don't transfer
Klaviyo segments are dynamic — they're built on behavioral rules, not static lists. None of this logic transfers to Mailchimp. Before migrating, convert your key Klaviyo segments to static lists (export the current members), then recreate the equivalent segment logic in Mailchimp using their Audience Builder after import.
SMS subscribers have no landing place
Klaviyo tracks SMS consent separately from email consent. Mailchimp doesn't have a native SMS product in the same way. For SMS subscribers, either: store the SMS consent data in a custom merge field for documentation purposes, or export the SMS subscriber list separately and load it into whatever SMS tool you're moving to.
Encoding issues with international names
Klaviyo exports UTF-8. Mailchimp accepts UTF-8. The problem occurs when the file is opened in Excel (which may convert it to Windows-1252) and re-saved before import. Always export from Klaviyo, process in a text editor or SplitForge, and import without opening in Excel. If you must open in Excel, save explicitly as CSV UTF-8 before importing.
Additional Resources
Official Platform Documentation:
- Klaviyo — Export Profiles — Official profile export guide including suppression export
- Mailchimp — Import Contacts — Official import guide with column naming requirements
Compliance & Privacy:
- GDPR Article 5: Principles of Data Processing — Data minimization requirement relevant to subscriber list handling
- CAN-SPAM Act Compliance Guide — FTC guidance on unsubscribe honoring requirements
- Mailchimp GDPR Tools — Mailchimp's official GDPR feature documentation
Technical Standards:
- RFC 4180: CSV Format Specification — Official CSV structure standard
- Unicode Standard — Character encoding reference for international subscriber data
Tested: Klaviyo profile export and Mailchimp audience import, March 2026. Migration workflow validated against a Klaviyo account with 45,000 profiles across three lists with custom properties, tags, and a suppression list of 3,200 contacts.
PLATFORM SPECIFICATION SOURCE
Platform: Klaviyo + Mailchimp
Source: Klaviyo Help Center — Export Profiles; Mailchimp Help — Import Contacts
URLs: help.klaviyo.com/hc/en-us/articles/115005081767
mailchimp.com/help/import-contacts-mailchimp/
Verified: March 2026
Next re-verify: June 2026
Column naming requirements and suppression export behavior reflect documentation
at the verification date. Both platforms update import behavior with product releases.