Navigated to blog › klaviyo-to-mailchimp-migration-csv
Back to Blog
crm-import-guides

Klaviyo to Mailchimp Migration: Export Subscribers Without Data Loss

March 21, 2026
14
By SplitForge Team

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:

  1. Export suppressions from Klaviyo first — Klaviyo > Lists & Segments > Suppressions > Export. This is your global unsubscribe list.
  2. Import suppressions into Mailchimp as unsubscribed — Upload to your Mailchimp audience, set status to "Unsubscribed."
  3. Export subscribed contacts from Klaviyo — Filter to subscribed profiles only, not your full list.
  4. Clean the CSV — Rename Email to Email Address, First Name to FNAME, Last Name to LNAME.
  5. 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 ConceptMailchimp EquivalentMigration Action Required
ProfileContact (Audience member)Direct export → import
List membershipAudience membershipMap segments to audiences or tags
TagsTagsImport tag column; comma-separated
Custom propertiesMerge fields (MERGETAG)Create merge fields in Mailchimp first
Subscribed statusSubscribedFilter subscribed only for main import
Unsubscribed statusUnsubscribedImport suppressions first, separately
Cleaned (bounced)CleanedImport as unsubscribed; Mailchimp handles cleaning
SMS subscriberNo equivalentExclude or store in custom field
SegmentsTags or GroupsMap to tag or group before importing

Table of Contents


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:

  1. Log in to Klaviyo and navigate to Audience > Suppressions.
  2. Click Export Suppressions — this downloads a CSV of all suppressed email addresses.
  3. 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:

  1. In Klaviyo, navigate to Audience > Profiles.
  2. Filter by Subscriptions > Email > Subscribed — this selects only active opt-in contacts.
  3. Select all filtered profiles and click Export Profiles.
  4. 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 Address header 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:

  1. In Mailchimp, navigate to Audience > Manage Audience > Settings > Audience fields and |MERGE| tags.
  2. Create a new merge field for each Klaviyo custom property.
  3. Assign a merge tag (all caps, no spaces: ORDERS, LASTPURCH, BDAY).
  4. 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

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:

Compliance & Privacy:

Technical Standards:

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.

FAQ

Klaviyo segments are dynamic queries that regenerate based on behavior rules — they don't export as static lists. You need to either export the current members of each segment as a static CSV from Klaviyo before migration, or recreate the segment logic in Mailchimp's Audience Builder after import. There is no automatic segment transfer between the two platforms.

Import your Klaviyo suppression list into Mailchimp first, before your subscribed contacts. Set the import status to "Unsubscribed." When you then import subscribed contacts, Mailchimp deduplicates on email — contacts already marked Unsubscribed stay Unsubscribed regardless of what the second import file says.

Yes, with preparation. Klaviyo exports tags as a comma-separated string in the Tags column. Mailchimp accepts the same format in a TAGS column during import. The tags are created automatically in Mailchimp from the imported values — you don't need to pre-create them. Standardize tag capitalization before importing, since "VIP" and "vip" create two distinct tags in Mailchimp.

Mailchimp doesn't have a native SMS product equivalent to Klaviyo's SMS. For SMS consent data, store it in a custom merge field during migration for documentation purposes. If you're moving SMS to a dedicated tool (Postscript, Attentive, etc.), export the SMS subscriber list separately from Klaviyo before cancelling.

Create a Mailchimp merge field for each Klaviyo custom property before importing. Assign a merge tag (e.g., ORDERS for "Total Orders"). Rename the corresponding column in your Klaviyo export to match the merge tag. Then import — Mailchimp maps the column to the field by tag name. Custom properties not pre-mapped to merge fields are silently dropped during import.

Your Mailchimp sender reputation is tied to your Mailchimp account history, not inherited from Klaviyo. Starting fresh in Mailchimp means you have no reputation — positive or negative. Warmup your new Mailchimp account by starting with highly engaged segments and gradually expanding sends over 2–4 weeks. Importing a clean, suppression-managed list at the start prevents immediate reputation damage from bounces and spam reports.


Migrate Your Subscriber List Without Sending to Suppressions

Rename Klaviyo columns to Mailchimp's required FNAME, LNAME, Email Address format in seconds
Standardize tag separators, fix encoding, and clean the file before either platform sees it
Your subscriber list — names, emails, behavioral data — never transmitted to any server
Import suppressions first, then subscribed contacts, with zero compliance exposure

Continue Reading

More guides to help you work smarter with your data

csv-import-guides

CSV Delimiter Errors: Fix Comma vs Semicolon for International Teams

Stop all data in Column A errors. Learn comma, semicolon & tab CSV delimiters plus quick fixes for global teams.

Read More
csv-guides

How to Split Large CSV Files Without Excel (Even 1M+ Rows)

Need to split a massive CSV file but Excel keeps crashing? Learn how to split files with millions of rows safely in your browser without uploads.

Read More
excel-guides

Batch Convert Multiple Excel Files to CSV Without Opening Each One

Opening 50 Excel files one at a time to save as CSV takes 45 minutes and produces inconsistent results. Three methods handle the same task in under 60 seconds — none require opening a single file.

Read More

We use analytics cookies to improve SplitForge. Your files never leave your browser — ever. Privacy policy