Migrating from Mailchimp to AWS SES: the complete checklist
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.