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.