How to migrate off Mailchimp without breaking your list

Moving your audience to a new email tool is mostly safe data transfer. Here are the four things that actually break a list in a migration, and the order of operations that avoids each one.

The Pombo team ·

Switching email platforms sounds risky, and the fear is usually specific: that somewhere in the move you email someone who opted out, or your carefully built sender reputation resets to zero, or half your merge tags render as raw *|FNAME|* in front of ten thousand people.

None of that is inherent to migrating. It is mostly plain data transfer: contacts, the fields attached to them, your designs, and your automations. The damage comes from a short list of mistakes, and every one of them is avoidable if you do the steps in the right order. Here is that list, and that order.

What actually breaks a list

Four things, roughly in order of how much they hurt:

  1. Losing your opt-out list. Mailchimp keeps unsubscribes and cleaned (hard-bounced) addresses out of your campaigns automatically. Export only your active subscribers, import them somewhere new, and every one of those suppressed people is mailable again. That is an accidental re-permission campaign, and it is the fastest way to a spam-complaint spike.
  2. A cold sending reputation. Inbox placement is tied to the sending domain and IP, not to your account. A new platform means new infrastructure with no history, so a full-list blast on day one looks exactly like a spammer warming a fresh domain.
  3. Broken personalization. Mailchimp merge tags (*|FNAME|*, *|MERGE1|*) are not portable. Paste a template across untouched and the tokens ship literally.
  4. A silent gap in your automations. Your welcome series and behavioral flows stop the moment you turn off the old tool. If the new sequences are not live and wired to the same triggers, new signups get nothing until someone notices.

Keep those four in view and the rest is mechanical.

1. Export everything, including the opt-outs

From Mailchimp, export your audience as CSV with every merge field and the date each person subscribed. Then export, as a separate file, everyone who has unsubscribed and everyone Mailchimp has cleaned. You want both lists before you touch the new platform.

2. Map the model before you import

Mailchimp and most lifecycle tools do not describe an audience the same way. Sketch the mapping first:

  • Audience and groups become your contact list plus segments.
  • Tags become either segments or a yes/no custom field, depending on whether they describe a state or an action.
  • Merge fields become custom fields. Note the type of each one (text, number, date, yes/no) so segmentation on them works later.

In Pombo, importing a CSV creates any field it has not seen automatically, but deciding the shape by hand first saves you a cleanup pass.

3. Import your subscribers

Bring the active-subscriber CSV in under Contacts, Import, mapping each column to a field. Import upserts by email address, so a re-run updates people rather than duplicating them, which means you can iterate on the mapping without making a mess.

4. Bring the opt-outs across before you send anything

Import the unsubscribed-and-cleaned file as a second pass, with a status of unsubscribed. Those people stay in your audience for record-keeping but are suppressed from the first day, so a stray campaign can never reach them. Do this step before you send a single email from the new platform. It is the one that protects the list.

5. Rebuild templates and fix the tokens

For designs you want kept pixel-for-pixel, paste the exported HTML or MJML straight into a template as raw code. For the ones you will keep editing, rebuild them as blocks. Either way, do a find-and-replace on the personalization: *|FNAME|* becomes {{ first_name }}, *|LNAME|* becomes {{ last_name }}, and each custom merge tag becomes {{ your_field_name }}. Send yourself a test of every template and read it end to end before it goes near a real contact. Our template guide covers the raw-code path.

6. Authenticate the domain, and expect the reputation reset

Add your sending domain under Settings, Domains and publish the DKIM, SPF, and DMARC records it gives you. Pombo will not send until they pass. Use a dedicated sending subdomain rather than your root domain, so this reputation stays separate from the mail your team sends by hand.

Assume the new setup starts cold regardless of how long you sent from Mailchimp. That is normal, and step 7 is how you deal with it.

7. Warm up instead of blasting

Do not send your whole list on the first day. Start with your most engaged segment (opened or clicked in the last 30 days), send them something genuinely worth opening, and grow the daily volume over two to three weeks. Engaged recipients generate the opens and low complaint rates that build a domain's standing; a cold blast to everyone does the opposite. There is more on this in deliverability basics.

8. Rebuild automations and cut over on a small segment

For each Mailchimp automation, build a sequence with the same trigger and the same steps, then point your backend at Pombo's events endpoint so the signups that drove the old flows drive the new ones. Activate the sequences, run a small campaign to a test segment, confirm the numbers look right, and only then turn Mailchimp's sending off. Keep the old account read-only for a month in case you need to check something.

The fast way

Every step above is the kind of tedious, many-step work an AI agent is good at and you are not. Connect an agent over MCP and hand it the whole job: it has tools to import contacts, create custom fields with a backfill, bring templates across as raw MJML, and rebuild sequences. That is how we moved our first customers across in a day. The full manual walkthrough lives in the migration guide.

Pombo is free to try while you plan the move.