Migration · 11 min read

Migrating from Mailchimp to AWS SES: the complete checklist

DK
Daniel Koh
May 7, 2026 · 11 min read

Migrating from Mailchimp sounds daunting. In practice, it's a half-day job if you follow the right order. This checklist has been tested by SES Mailbox users who have moved lists of all sizes — from 2,000 contacts to 280,000.

Phase 1: Prepare (before you touch Mailchimp)

1. Get your AWS SES account into production

If you haven't already, request production access in the AWS SES console. This takes 24 hours on average. Do it before anything else — you can't send to unverified addresses in sandbox mode. See our guide on getting approved fast.

2. Verify your sending domain

In the SES console → Verified Identities → Create Identity → Domain. Add the 4 DNS records AWS gives you (SPF, 3× DKIM CNAMEs). Propagation takes up to 72 hours but is usually under 30 minutes.

3. Connect AWS SES to SES Mailbox

Create an IAM user with ses:SendEmail and ses:SendRawEmail permissions. Paste the access key and secret into SES Mailbox → Settings → AWS Credentials.

Phase 2: Export from Mailchimp

4. Export your audience

In Mailchimp: Audience → Manage Audience → Export Audience. Download the CSV. You'll get columns for Email Address, First Name, Last Name, and any custom fields.

5. Export your unsubscribes and bounces

This is the step people miss. In Mailchimp: Audience → Manage Contacts → Unsubscribed. Export that list too. You must suppress these addresses in SES Mailbox before importing your main list — otherwise you'll re-contact people who already opted out, which violates CAN-SPAM and GDPR.

Critical: Import your suppression list (unsubscribes + hard bounces) into SES Mailbox before importing your active subscribers. This order matters.

Phase 3: Import into SES Mailbox

6. Import suppressions first

SES Mailbox → Suppressions → Import CSV. Map the email column and mark the reason (Unsubscribed or Bounced). These addresses will never receive campaigns.

7. Import your active subscribers

SES Mailbox → Contacts → Import CSV. Map your columns. Custom fields (first name, plan tier, etc.) are supported. Large imports run in the background — you'll get a notification when complete.

8. Recreate your segments

Rebuild your key segments in SES Mailbox using the dynamic list filters. Common examples: opened in last 90 days, signed up after a specific date, tagged as "paying customer".

Phase 4: Pre-send checks

9. Send a test campaign

Send to a seed list of 5–10 addresses you control at Gmail, Outlook, and Apple Mail. Check: does it land in inbox? Does the unsubscribe link work? Are images loading? Is the from-name correct?

10. Warm up before blasting

If your list is larger than 10,000 contacts, follow the warm-up schedule. Start with your most engaged segment and ramp over 2–4 weeks.

Phase 5: Cut over

11. Pause Mailchimp automations

Before cancelling, pause any automated sequences (welcome series, abandoned cart, etc.) in Mailchimp. Make sure you've rebuilt equivalents in your new stack — or noted that you're not using automations yet.

12. Cancel Mailchimp

Mailchimp → Account → Billing → Cancel account. Screenshot your confirmation. Note the end of your billing period — you'll have access until then.

Total time: Most migrations take 3–5 hours end to end, including the time waiting for DNS propagation. The actual hands-on work is closer to 90 minutes.

Ready to start sending?

Free plan forever. No credit card required.

Start free →