Case study · 10 min read

How I migrated 50K subscribers off Mailchimp in 3 days

By AcelleMail Team May 22, 2026 10 min read
comparison tutorial

A real account of moving a 50,000-subscriber B2B newsletter from Mailchimp Standard to AcelleMail + Amazon SES. Where the time went, where it broke, and what the new monthly bill looks like.

§1

Context — why we moved

Our newsletter sat at 49,847 subscribers when the Mailchimp invoice for the next month landed: $259/month at the Standard tier, scheduled to bump to $310 once we crossed 50K. That worked out to $3,108-$3,720/year in recurring spend for a service whose only essential feature for us was “send a Tuesday newsletter to a list.”

The list had been on Mailchimp for 4 years. Open rate 38%, click rate 4.2%, complaint rate negligible. We weren't moving because Mailchimp was broken — we were moving because the price felt disproportionate to what we used.

The candidate replacement: AcelleMail self-hosted, sending through Amazon SES Frankfurt (EU residency for our subscriber list). One-time $80 license, ~$15/month all-in. Break-even on the license: month 1.

§2

Day 1 — install + DNS + SES setup

The technical work was ~3 hours. Hour-by-hour:

  • Hour 1. Spin up a Hetzner CX22 (€4.51/mo, eu-central-1 Falkenstein). Ubuntu 24.04 LTS. Install nginx + PHP 8.3 + MySQL 8 + composer. Upload AcelleMail bundle from CodeCanyon, run the web installer. License validated, admin user created.
  • Hour 2. Amazon SES → "Verified identities" → add our sending domain. Easy-DKIM enabled (3 CNAMEs). Publish SPF + DMARC records. Wait ~10 min for SES to verify. Request production access (the form took 4 minutes; approval came back the next morning).
  • Hour 3. AcelleMail admin → Sending servers → add SES via SMTP. Paste credentials. Send the built-in test email to our own inbox. Inbox delivery, DKIM pass, SPF pass. ✅

Lesson 1 of the migration: the technical setup is the easy part. The next 2 days were entirely data migration + automation rebuild.

§3

Day 2 — export, transform, import

Mailchimp export: Audience → All contacts → Export. The download was a ZIP with 4 CSVs: subscribed members, unsubscribed members, cleaned (bounced) members, non-subscribed (pending). Sizes: 49,847 + 8,124 + 612 + 21.

We wrote a small Python script to merge the CSVs into one master file with two new columns: status (subscribed / unsubscribed / bounced) and consent_source_mailchimp (we preserved the source URL Mailchimp tracked). 30 minutes.

AcelleMail import: Lists → Create List → set merge fields (we had 6: email, first_name, last_name, segment, signup_source, consent_date). Then Import → Upload CSV → map columns. The import ran in batches; ~25 minutes for 58K rows total. Tags came across as a custom field; we converted them to segments post-import.

Lesson 2: Mailchimp segments don't export cleanly. The CSV only tells you which tags a contact has, not the segment rules. We had 11 segments; recreating them in AcelleMail's segment builder took another 90 minutes because the operator semantics differ slightly (Mailchimp's “is or is not” vs AcelleMail's “equals / does not equal”). Document your segments BEFORE you start the migration.

§4

Day 3 — automations, templates, the smoke test

This was the longest day. We had 4 active automations on Mailchimp: welcome series (5 emails), 90-day re-engagement, content-download follow-up (3 emails), and a quarterly winback. Total 13 emails to rebuild from scratch.

AcelleMail's automation builder uses the same primitives Mailchimp does — trigger / wait / condition / send / tag-update — so the conceptual mapping was 1:1. The bottleneck was rebuilding the email HTML. We had a custom Mailchimp template we used as a base; AcelleMail accepts raw HTML so we pasted the source and replaced the Mailchimp merge tags (*|FNAME|*) with AcelleMail's ({{FNAME}}) via search-and-replace.

~4 hours later, all 4 automations rebuilt + test-sent to our own addresses. Then we ran the smoke test: send the next scheduled newsletter from AcelleMail in PARALLEL with what would have been the Mailchimp send. We sent both at 9am Tuesday. By noon:

  • Mailchimp send: 38.1% open rate (our 4-week baseline).
  • AcelleMail send: 37.4% open rate. Within noise.

Deliverability parity confirmed. Day 3 ended with us pointing the website signup form at AcelleMail's API and shutting off the Mailchimp Standard subscription effective end-of-billing-period.

§5

What broke (and how we fixed it)

  1. 3 subscribers had emojis in their first_name. The CSV export from Mailchimp encoded them as ? placeholders. We didn't catch this until the welcome email went out to a Day-4 signup with ? instead of their name. Fix: post-import sweep + a sanitiser on the signup form.
  2. One automation kept firing. We forgot to disable a winback flow on Mailchimp before the export. Three lapsed subscribers got the winback email from Mailchimp AND from AcelleMail in the same hour. Embarrassing. Apologised in a follow-up.
  3. Open rate looked “wrong” for 48 hours. AcelleMail counts opens against the open-tracking pixel; Mailchimp counts opens via their tracker. The metric definitions matched, but for the first 48h AcelleMail showed 12% opens while Mailchimp's history showed 38%. We tracked it down to the open-tracking pixel not yet warmed in our subscribers' mail clients (which cache image-load decisions). After 48h the numbers converged.

§6

The numbers, six months later

The 6-month post-migration retro:

MetricMailchimpAcelleMail + SES
Monthly cost$259-$310$15-$22
License (amortised over 5 years)$1.33/mo
Open rate (6mo avg)38.1%37.8%
Complaint rate0.03%0.02%
Engineering time / month~30 min~90 min

Engineering-time delta is real and ongoing: we spend roughly 1 extra hour per month on SES bounce review, OS patches, and the occasional MySQL-tuning task. At our hourly rate that's ~$50/mo of soft cost — still a 4-5x net savings over Mailchimp Standard.

Would we do it again? Yes. Was it worth 3 days of work to save $3K-$3.5K/year? Yes. Are we recommending it for every team? No — if you don't have the operations bandwidth, Mailchimp's convenience tax may be the right tax to pay.

Run this on your own infrastructure.

AcelleMail is a one-time-license self-hosted email platform. Full source code, no per-subscriber pricing.

Get AcelleMail — $80 Try Live Demo