Migration · 11 min read

Migrating from Mailchimp to AWS SES: the complete checklist

DK
Daniel Koh
May 7, 2026 · 11 min read
Migration and moving representing ESP switching

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.

Complete migration checklist

StepTaskTime
1Request AWS SES production access5 min (then wait 24h)
2Verify sending domain in SES console10 min (then wait 30–60 min DNS)
3Add SPF, DKIM, DMARC records to DNS10 min (included in step 2)
4Create IAM user with SES permissions5 min
5Connect AWS credentials to SES Mailbox2 min
6Export active audience from Mailchimp5 min
7Export unsubscribes from Mailchimp5 min
8Export hard bounces from Mailchimp5 min
9Import suppressions into SES Mailbox FIRST10 min
10Import active subscribers into SES Mailbox10 min
11Recreate key segments20 min
12Send test campaign to seed list15 min
13Begin 4-week warmup2–4 weeks parallel sending
14Pause Mailchimp automations15 min
15Cancel Mailchimp subscription5 min

Phase 1: Prepare your AWS account

Request production access before anything else — it takes 24 hours on average and you can do everything else while waiting. See our guide on getting approved fast for word-for-word answers to the application form.

Verify your domain in Verified Identities → Create Identity → Domain. AWS gives you four DNS records. Add all of them. Propagation is typically under 30 minutes but can take up to 72 hours on slow DNS providers like GoDaddy.

Phase 2: DNS record migration guide

# 1. SPF record (TXT on your root domain)
@ TXT "v=spf1 include:amazonses.com ~all"

# 2–4. DKIM CNAME records (AWS gives you exact values)
abc123._domainkey  CNAME  abc123.dkim.amazonses.com
def456._domainkey  CNAME  def456.dkim.amazonses.com
ghi789._domainkey  CNAME  ghi789.dkim.amazonses.com

# 5. DMARC record (start with p=none, monitor first)
_dmarc  TXT  "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; pct=100"

# Note: if you had Mailchimp's DKIM records in DNS,
# you can remove them after you cancel Mailchimp.
# Do NOT remove them before canceling or existing
# queued emails may fail authentication.

Phase 3: Subscriber export and import

In Mailchimp: Audience → Manage Audience → Export Audience. You get a ZIP with multiple CSV files. You need:

  • subscribed_members.csv — your active list
  • unsubscribed_members.csv — people who opted out
  • cleaned_members.csv — hard bounces
Warning: Always import suppressions BEFORE importing active subscribers. If you do it in the wrong order, SES Mailbox may send a welcome campaign to people who already unsubscribed from you — a CAN-SPAM and GDPR violation.

CSV column mapping for SES Mailbox import:

Mailchimp column      →  SES Mailbox field
──────────────────────────────────────────
Email Address         →  email (required)
First Name            →  first_name
Last Name             →  last_name
MEMBER_RATING         →  (skip or custom field)
OPTIN_TIME            →  (skip)
CONFIRM_TIME          →  (skip)
TAGS                  →  tags (comma-separated)
Any custom merge tag  →  custom field (same name)

Phase 4: Pre-send checks

Before your first real send, run through this checklist:

  1. Send a test to addresses at Gmail, Outlook, and Apple Mail — does it land in inbox?
  2. Check the From name and From address look correct
  3. Click every link in the email — are they working?
  4. Click the unsubscribe link — does the hosted unsubscribe page load?
  5. View on mobile — does the template render correctly?
  6. Check spam score on mail-tester.com (aim for 9.5+)
Pro tip: Keep Mailchimp active during your 4-week warmup period. Send warmup batches through SES Mailbox while sending your regular full-list campaigns through Mailchimp. Once warmup is complete, flip entirely to SES Mailbox and cancel Mailchimp.

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

Frequently asked questions

How long does a Mailchimp to AWS SES migration take? +

Most migrations take 3–6 hours of hands-on work, plus 24 hours of waiting for DNS propagation and AWS production access approval. The actual clicking and uploading is under 2 hours. The rest is waiting. Schedule a weekend or a low-traffic weekday so you are not under pressure.

Will I lose my subscriber history and tags when I migrate? +

You will lose open and click history from past Mailchimp campaigns — that data lives in Mailchimp and cannot be exported meaningfully. You can export and import subscriber tags, custom fields, and segment assignments as CSV columns. What matters most is bringing over your unsubscribes and hard bounces, which you must do before sending.

Do I need to re-verify subscribers after migrating? +

No, provided you can demonstrate the original opt-in. Your existing subscribers gave consent to your brand, not to Mailchimp. You are simply changing the technical infrastructure. However, if your list is older than 12 months and has not been mailed recently, consider a re-engagement campaign before the full migration to clean out cold addresses.

What happens to subscribers who are in Mailchimp automation sequences? +

Contacts mid-flow in Mailchimp automations will be paused when you cancel Mailchimp. Rebuild critical automations in your new stack before canceling. For less critical sequences, it is acceptable to let them expire. Make a list of every active automation before you start the migration.

Can I keep my Mailchimp account active during the warmup period? +

Yes, and this is the recommended approach. Keep Mailchimp active during the 2–4 week warmup period. Send smaller warmup campaigns through SES Mailbox while continuing regular sends through Mailchimp. Once warmup is complete and you are confident in deliverability, flip fully to SES Mailbox and cancel Mailchimp.

What CSV columns does SES Mailbox accept for subscriber import? +

Required: email. Recommended: first_name, last_name. You can add any custom fields as additional columns — SES Mailbox maps them on import. The status column accepts "subscribed", "unsubscribed", and "bounced" values. Import suppressions separately using the Suppressions import tool, not the contacts import.

Ready to start sending?

Free plan forever. No credit card required.

Start free →