Skip to content

Clean your Mailchimp list before you send

Integration Sending and campaigns

Mailchimp email list cleaning in three steps: export your audience, verify the file in PricklyMails, then archive the addresses to remove.

There is no native Mailchimp connector: you export the list, PricklyMails verifies it, and you bring the result back into Mailchimp. New addresses can go through the API before they ever reach Mailchimp.

Verify for free

Step by step

Clean your list in three steps

  1. In Mailchimp

    Export your audience from Mailchimp

    Before you start

    Only Owners and Admins can export an audience.

    1. Click Audience and, if you have more than one, pick the right one from the drop-down.
    2. Click Export audience, then Export CSV in the pop-up. For a single segment, pick it under Segments, click Export segment and confirm the same way.
    3. Wait for the email Mailchimp sends you once the export is ready.
    4. Click More options then Export history, then Download next to the export: it stays available for 30 days.
    5. The export may come as a ZIP file with one CSV per contact type: subscribed, unsubscribed, non-subscribed and cleaned. The subscribed file is enough: cleaned addresses are already excluded from your sends.

    Tip

    The CSV carries your audience fields, except language, plus the columns Mailchimp adds: keep only the email column in a spreadsheet before moving on.

    SourceMailchimp's official help center
  2. In PricklyMails

    Verify the file in PricklyMails

    1. In the dashboard, open Batches and click New batch.
    2. Drop the file you exported from Mailchimp: a .csv or .txt with one address per line, no header row and no quotes. A header row would count as an address in the estimate, though it is never billed, and a quoted address would not be verified: the report lists both as malformed. You can also paste the list.
    3. The dashboard counts the addresses and shows the estimated cost in tokens before anything is sent, then you click Submit batch. A batch holds at least 20 addresses, and your plan sets the largest list it can hold.
    4. The list is verified in the background. Once the batch is done, open it and click Download report: you get a CSV with a row for each address of your file, giving its verdict, its reason, its score and its recommendation, with the dashboard's labels.

    Note

    Download the report from the browser that sent the list: that browser is what keeps the addresses, for the 16 most recent batches at most. Our servers, in Germany, only keep a one-way fingerprint of each one.
    What the report says

    Every address gets a recommendation: the action to take. The report writes it with the dashboard's label; the API returns a short form of it.

    Send
    The address is valid, or hosted by a large provider that accepts every address without confirming any. Send as usual.
    Review
    A domain that accepts any address (catch-all), a generic address such as contact@, a full mailbox, or a server that never answered, or refused to. Take a look before you send.
    Remove
    The address does not exist, its domain cannot receive mail, or it is disposable, mistyped or malformed. Take it out.

    Note

    A malformed address is never verified: the batch counts it under "Malformed addresses", and the report still lists it, with the verdict "Invalid", the reason "Malformed address" and the recommendation "Remove", so you take it out of Mailchimp with the others. A duplicate, counted under "Duplicates removed", appears only once.

    Behind each recommendation sit a verdict (Valid, Risky, Invalid or Not verifiable), a reason and a score from 0 to 100, each in its own column of the report. When a server never answers, the address comes back "Not verifiable" and the checks that got no answer are refunded.

  3. In Mailchimp

    Bring the result back into Mailchimp

    Open the report in a spreadsheet and filter the Recommendation column.

    Remove

    They get archived: an archived contact receives nothing and stops counting toward your plan's monthly contact limit.

    Mailchimp archives the contacts you select, so first gather them under a tag.

    1. In Audience, click Tags, then Bulk tag.
    2. In the Bulk tag contacts pop-up, create a tag (for example "to-remove") with Search for or create your tag.
    3. Click Paste email addresses and paste the addresses to remove.
    4. In Select action, choose Tag these emails, then click Apply tag.
    5. On the Tags page, click View next to the tag: Mailchimp shows the segment of those contacts.
    6. Check the box in the header to select the whole segment (click Select all [X] contacts if Mailchimp offers it), then click Actions and Archive.
    7. Type ARCHIVE and confirm with Archive.
    Review

    They deserve a look before your next campaign.

    Send

    They stay in your audience: nothing to do.

    Tip

    Would you rather keep a record of these addresses in your audience? Unsubscribe them instead: in Audience, click More options then Unsubscribe emails, paste up to 3,000 addresses at a time into the Email addresses field and click Unsubscribe. They then still count toward the monthly contact limit.

Verify each address before it reaches Mailchimp

Does your signup form or sync script add contacts through Mailchimp's Marketing API, with the Add member to list (opens in a new tab) call? Ask PricklyMails first. If the recommendation is remove, don't add the address to your audience.

One call starts the verification and already flags a likely typo, a second one reads the verdict. Depending on your plan, a signed webhook can also send it to you as soon as it's ready.

Request
curl -s https://api.pricklymails.com/api/verify \
  -H "Authorization: Bearer pm_live_9f3a..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "ana.silva@gmail.con" }' \
  | jq '{job_uuid, suggestion}'
Response
{
  "job_uuid": "8f1c2a9e-4b7d-4e2a-9c61-3d5f0b7a2e18",
  "suggestion": "ana.silva@gmail.com"
}
Request
curl -s https://api.pricklymails.com/api/verify/$JOB_UUID \
  -H "Authorization: Bearer pm_live_9f3a..." \
  | jq '.verifications[0] | {status, reason, score, recommendation}'
Response
{
  "status": "invalid",
  "reason": "no_mx_records",
  "score": 0,
  "recommendation": "remove"
}
Read the API docs

Frequently asked questions

Mailchimp already cleans bad addresses, so why verify first?

Mailchimp's help center says hard bounces and repeated soft bounces become cleaned contacts: by then the email has gone out and the bounce has counted. It also says account suspensions are automatic when a send exceeds industry bounce thresholds, with sending disabled during the review. Verifying first takes those addresses out before they bounce.

SourceMailchimp's official help center

Should I archive or unsubscribe the addresses to remove?

Archive them, unless you want to keep a record of the address in your audience. According to Mailchimp's help center, an unsubscribed contact still counts toward your plan's monthly contact limit, while an archived contact does not and receives nothing. Mailchimp says that in most cases, outdated or inactive contacts should be archived. An import or a signup unarchives the contact.

SourceMailchimp's official help center

Does PricklyMails connect to Mailchimp directly?

No, there is no native connector: you go through a file export, as above. You can also call the PricklyMails API from your own code before an address reaches Mailchimp.

These trademarks belong to their respective owners. Naming them implies no partnership.

Check your list before your next send.

1,000 tokens free when you sign up, no credit card. After that, you only pay for answers.