← Back to blog

Migrating from Mailchimp to PushMail: A Step-by-Step Guide

PushMail Team··4 min read

Mailchimp is the default choice for email marketing. It's also one of the more expensive defaults once your list grows past a few thousand contacts — and one of the most frustrating to work with as a developer. This guide walks through why developers leave Mailchimp, how to migrate cleanly, and what to expect on the other side.

Why Developers Leave Mailchimp

The pricing model punishes growth

Mailchimp charges by the number of contacts in your audience. Every subscriber, active or not, counts against your plan. At 5,000 contacts on Standard, you're paying $100/month. At 50,000 contacts, $450/month. These numbers include people who haven't opened an email in two years.

Industry data puts average list inactivity around 30%. That means roughly a third of your Mailchimp bill covers contacts who will never convert.

The API is designed for audience management, not developer workflows

Mailchimp's API is comprehensive for managing audiences, tags, and segments. It's weak for transactional use cases and programmatic sequences. If you want to trigger an email from your application based on a user action, you're reaching for Mandrill (a separate product, additional cost) or working around limitations.

Intuit's ownership has changed the product

Since Intuit acquired Mailchimp in 2021, the product has moved steadily toward aggressive upselling, feature gating behind higher tiers, and a UI optimized for upsell conversion rather than utility. Developers who used Mailchimp's free tier years ago have watched features disappear or get moved to paid plans.

The free plan forces your branding to carry their branding

Every email sent on the free plan includes "Sent with Mailchimp" in the footer. There's no opt-out below the paid tiers.

Pricing Comparison

This table compares Mailchimp Standard against PushMail at a realistic sending volume of 4 emails per contact per month.

ContactsMailchimp StandardPushMail (4 emails/contact/mo)
500$13/mo$6/mo
2,500$45/mo$30/mo
5,000$100/mo$50/mo
10,000$135/mo$90/mo
25,000$300/mo$210/mo (assuming 100k emails)
50,000$450/mo$310/mo (assuming 200k emails)

If 30% of your list is inactive and you stop sending to them, the PushMail numbers drop further. On PushMail, an inactive contact that you don't email costs nothing.

What You Lose

Mailchimp includes a visual drag-and-drop email builder, landing page builder, social media integrations, postcard mailers, and a basic website builder. If your marketing team relies on any of these without developer involvement, PushMail is not a direct replacement. PushMail is built for teams that manage email programmatically — through the API, with code-managed templates and sequences.

What You Gain

Per-email pricing that scales linearly. A REST API built for application-level integration. Drip sequences with configurable delays and conversion goals. Email validation on import. Multi-site support under one account. Bring-your-own-provider flexibility so you're not locked to a single sending infrastructure. Full API access to contacts, tags, lists, and sequences without separate product tiers.

Step-by-Step Migration

Step 1: Export your contacts from Mailchimp

In your Mailchimp account, navigate to Audience, then All Contacts. Click the Export Audience button. Mailchimp generates a CSV and emails you a download link. The file includes subscription status, email address, name fields, tags, and any custom merge fields you've configured.

Step 2: Clean the export before importing

Open the CSV and filter out contacts with a status of "unsubscribed", "cleaned", or "bounced". These contacts have either opted out or failed delivery validation. You have been paying for them in Mailchimp. Remove them now.

Keeping a clean import list also protects your sender reputation on the new infrastructure. Importing known-bad addresses is the fastest way to hurt deliverability on a fresh setup.

Step 3: Sign up for PushMail and create your first site

Create an account at pushmail.dev. Sites in PushMail map to a product, domain, or application. If you're migrating one Mailchimp audience, create one site. Multi-brand setups map to multiple sites under a single organization.

Step 4: Import your contacts

PushMail's import API handles CSV files of any size asynchronously. There are no timeout issues with large lists.

curl -X POST https://pushmail.dev/api/v1/contacts/import \
  -H "Authorization: Bearer pm_live_your_api_key" \
  -F "file=@mailchimp_export_cleaned.csv" \
  -F "source=mailchimp" \
  -F "site_id=your_site_id"

The source: "mailchimp" field tags the import batch so you can audit where contacts originated. Import progress is tracked asynchronously — you can poll the import status endpoint or wait for the completion webhook.

Step 5: Recreate your automations as PushMail sequences

Mailchimp's Customer Journey builder maps directly to PushMail sequences. A sequence is a series of steps, each with an email template and a delay before the next step triggers.

  • Mailchimp Customer Journey becomes a PushMail sequence with steps and delay intervals configured in minutes, hours, or days.
  • Mailchimp tags become PushMail tags — same concept, fully API-accessible.
  • Mailchimp segments become PushMail lists combined with tag filters. A segment based on purchase behavior becomes a list you populate programmatically via the API when a purchase event fires in your application.

Create sequences via the dashboard or the API. Enroll contacts programmatically when they hit a trigger in your application.

Step 6: Configure your sending infrastructure

PushMail offers two modes. The managed option uses PushMail's SendGrid infrastructure — no additional accounts required. The BYOK (bring your own key) option lets you connect your own SendGrid account, which is useful if you have existing reputation, dedicated IPs, or specific compliance requirements.

Set this up under Settings in the dashboard, or via the sending configs API.

Step 7: Update your application's integration points

Replace any Mailchimp API calls in your application with PushMail equivalents. The common integration points are:

  • Adding a contact on signup: POST /v1/contacts
  • Enrolling a user in an onboarding sequence: POST /v1/sequences/:id/enrollments
  • Sending a transactional email: POST /v1/sends
  • Tagging a contact based on behavior: POST /v1/contacts/:id/tags

All endpoints authenticate with your API key via Bearer token.

Step 8: Update your domain authentication records

If you're switching sending infrastructure, update your SPF and DKIM records to authorize the new sending domain. PushMail's dashboard surfaces the DNS records you need to add. Most DNS providers propagate within an hour. Verify authentication before sending at volume.

Migration Support

PushMail's import system stores the source field on every import batch. Contacts imported with source: "mailchimp" are queryable later, which is useful for auditing during a staged migration where you're running both systems in parallel before fully cutting over.

If you're migrating a large audience or need help structuring sequences that match your existing automations, reach out via the support channel in your dashboard.


Stop paying for subscribers you don't email. Migrate to PushMail and pay only for what you send.