When you move to a new email platform, the subscribers are the easy part. What gets lost is everything around them: who unsubscribed, which addresses bounced, when and where each person signed up, and the automations that were quietly sending welcome and cart emails. Export those as separate pieces, import each one with the right status, and keep the old account running until the new one is doing all its jobs.
The version that goes wrong looks simple. You export "all subscribed contacts", import the file, send a big hello campaign from the new tool and cancel the old plan. Then the unsubscribes and bounces from the old account are gone, because they were never in the file. The next time someone imports a customer list from the store, people who opted out years ago are back on it. Or the opposite: everything arrives as "never subscribed" and you can't email anyone until you fix it.
1. Write down what the old account does
Before you export anything, list:
- Contacts by status: subscribed, unsubscribed, bounced or cleaned, marked as spam.
- Consent details: opt-in date, signup source (which form, checkout box, event), double opt-in confirmation date if you used it.
- Groups and tags you actually use for sending.
- Automations: for each one, the trigger, the delays, the exit rule and how many people are in it right now.
- Signup forms embedded on your site or store, and any integration that adds contacts (store, booking tool, webinar tool).
- Sending domain setup: which domain you send from and that it's authenticated.
This list becomes your checklist for the switch day.
2. Export in separate files
Export each status as its own file. Old platforms label them differently ("unsubscribed", "cleaned", "suppressed", "blocklisted"), but you need three groups:
| File | Contains | Goes into the new platform as |
|---|---|---|
| Subscribed | People who can receive marketing | Subscribed, with their original opt-in date |
| Unsubscribed | People who opted out | Unsubscribed or suppressed |
| Bounced and complained | Invalid addresses and spam reports | Suppressed |
Columns worth keeping in the subscribed file: email, first name, opt-in date, signup source, tags, created date, last click date, last order date. The last two let you split engaged from inactive later. Keep all original export files somewhere safe and dated. They're your record of who agreed to what and when, and some platforms only make an export available briefly: systeme.io's export, for example, is emailed to you and can be downloaded for 3 days.
3. Import each file with the right status
This is the step that decides whether the move keeps your consent records. Read your new platform's import page before uploading, and look for three things.
How it marks people as subscribed. On some platforms this is a checkbox you must tick. Omnisend's audience FAQ says contacts import as non-subscribed if you skip the "import as subscribed" option, and that the import accepts email opt-in and opt-out dates, so you can bring the original consent timing with you.
How it takes unsubscribes. Import them, don't leave them behind. Brevo's guide to importing blocklisted contacts says that when you migrate from another app you have to import your blocklisted contacts, and you choose which channels (email, SMS) to block for everyone in the file, so use one file per channel. systeme.io's import checklist says unsubscribed contacts can be imported with the status "Unsubscribed" and then receive no marketing.
How it handles duplicates. Import the suppression files first or check that a later "subscribed" import can't overwrite an unsubscribe. Then compare: the count per status in the new platform should match your export files. Spot-check five people you know unsubscribed.
If you have a large inactive group, don't import it into your main list. Import it with a tag like inactive-migrated and give it a separate re-engagement sequence later, or leave it out.
4. Start sending gradually
A new platform means new sending servers, and mailbox providers don't know your mail from there yet. Authenticate your sending domain in the new platform before the first send (if you're unsure the setup is right, the first section of why a newsletter goes to spam covers the checks).
Then send to your best people first. systeme.io's migration guide advises starting at a lower volume with a small segment of active contacts, increasing over several days or weeks, and waiting 24 to 48 hours after an import before a large campaign. A schedule that follows that advice:
- Week 1: subscribers who clicked or bought in the last 90 days.
- Week 2: add those active in the last 180 days.
- Week 3: the rest of the subscribed list.
After each send, check bounces and complaints before widening the audience.
5. Move the automations before the switch
Rebuild each automation from your list in step 1: same trigger, same delays, same exit rule. Test each one with your own address.
The awkward part is people halfway through a sequence. You have two options. Let them finish in the old account by keeping it for a few more weeks with forms disconnected, so no new people enter. Or import them into the new sequence at the right step, if the new platform supports it: systeme.io's import can add contacts to a campaign with a "last sent email number" and "last sent email date" column from your old system. Its help page doesn't spell out how the next email is scheduled from those values, so test it on a few contacts first.
Switch-day checklist
- Suppression files imported and counts checked.
- Subscribed contacts imported with opt-in dates.
- Sending domain authenticated in the new platform.
- Every signup form and integration pointed at the new platform; submit each form once yourself.
- Automations rebuilt, tested and switched on.
- Old automations paused the same hour, so nobody gets both.
- Old account kept (on its cheapest plan, if possible) until the last in-progress sequence finishes and you've downloaded a final export of everything.
Cancel the old plan only after the final export is safe.