The Email Nobody Wants to Get From Mailchimp
If you have ever logged into Mailchimp twenty minutes before a campaign was supposed to go out and seen the yellow banner — the one that says your list has been flagged and the send is on hold — you already know why this article exists. The rest of this is for people who would rather not be that person.
Mailchimp does not check email addresses for you. It checks formatting. It checks for the obvious junk. But it does not pick up the phone and ask the receiving server whether the inbox is real. It just sends, watches the bounces come back, and quietly counts strikes against your account. By the time you find out you have a list problem, you usually find out the hard way: a campaign that gets blocked, a deliverability score that has crept down for six months, or an audience size that keeps shrinking because Mailchimp is "cleaning" contacts faster than you are adding them.
I have run this process for our own list and for clients I have inherited with audiences ranging from two thousand to about four hundred thousand subscribers. The mechanics are the same. The mistakes people make are the same. Below is the version I would teach a junior marketer on their first day, with the parts most other guides skim past.
What Mailchimp Is Actually Doing in the Background
Two systems are watching your list from the moment you upload it. Knowing what they are looking for is most of the battle.
The first is Omnivore. It is Mailchimp's pre-send risk filter, and it has gotten meaningfully stricter since 2023. When you import a list or schedule a campaign, Omnivore looks at things like the proportion of role-based addresses, suspicious-looking domains, addresses that match known spam-trap patterns, and the general "shape" of your data. If something smells off, you get a warning. If it really smells off, your send is blocked until a human at Mailchimp signs off. There is no published rubric for what trips it. We have an internal write-up on the patterns we see most often at resolving Mailchimp Omnivore issues — top solution, and the short version is: scraped lists trip it almost every time, lists that have been sitting unused for a year trip it most of the time, and lists with a lot of role addresses (info@, sales@, contact@) trip it more often than most senders realize.
The second system is the one almost nobody talks about: the cleaned-contact mechanism. Mailchimp marks any address that hard-bounces twice as "cleaned." Cleaned addresses cannot receive campaigns anymore. They still count against your contact limit until you archive them. And they do not tell you anything about why they bounced, which is the worst part — by the time Mailchimp catches the bad address, your sender reputation has already taken the hit on the way in. The whole point of verification is to catch those addresses before Mailchimp's bounce log does.
Behind both systems is a quieter scoring layer: your account-level reputation. Bounce rate, complaint rate, abuse reports, and unsubscribe rate are tracked in aggregate. Repeated campaigns over the warning thresholds — typically around 1 percent hard bounces and 0.10 percent complaints, though Mailchimp does not publish the exact numbers — start drawing scrutiny. Eventually that scrutiny shows up as account review, throttling, or in the worst case suspension. Recovering from a Mailchimp suspension is not a Tuesday-afternoon job; it is a week of back-and-forth with a support team that has heard every excuse and is not impressed by any of them.
So when we say "clean your list," what we are really saying is: keep Omnivore quiet, keep the cleaned-contact bucket from filling, and keep your reputation score above the line where Mailchimp starts paying attention to you.
Before You Touch a CSV: Decide What You Are Actually Cleaning
This is the step every other guide skips, and it is the one that determines whether the next two hours of your life are useful.
You are not cleaning your whole audience. You are cleaning the part of your audience that you are still sending to. A 60,000-contact Mailchimp list with 14,000 active subscribers and 46,000 long-unsubscribed, archived, or "cleaned" contacts does not need 60,000 verifications. It needs 14,000. Verifying the rest is wasted credits and wasted time.
So before you export anything, decide your scope. The honest answer for most senders is one of these:
- The active subscribers I plan to email in the next ninety days
- The active subscribers I have not emailed in over ninety days, before I re-engage them
- A specific imported list I am about to send to for the first time
- A specific segment that has been bouncing or complaining
If you cannot say which of those four applies to you, stop and figure that out before you do anything else. The rest of the process changes depending on the answer. The first two are the common cases and are what the steps below are tuned for.
One more thing worth saying out loud: if your list came from a scrape, a purchase, or a "leads database" subscription, verification is not going to save it. It can clean out the dead addresses but it cannot manufacture consent. Mailchimp's terms of service require permission, and Omnivore is very good at spotting purchased-list patterns regardless of how clean the addresses are. If that is your situation, the right move is a real opt-in re-permission campaign through a different sending tool first, and then bringing only the people who confirmed back into Mailchimp.
The Export, Done Properly
Open Mailchimp. Click into your audience. From the contact table view, hit Export Audience in the top-right (some account types still show this under Manage Audience — the button moves around every couple of years).
A few minutes later Mailchimp emails you a download link. The export is a zip with a folder of CSVs broken out by status: subscribed, unsubscribed, cleaned, non-subscribed, transactional. We only care about subscribed_members_export.csv for most cleanups. Open it.
A real subscribed export from a healthy account looks like a wall of columns — Email Address, First Name, Last Name, MEMBER_RATING, OPTIN_TIME, OPTIN_IP, CONFIRM_TIME, CONFIRM_IP, LATITUDE, LONGITUDE, GMTOFF, DSTOFF, TIMEZONE, CC, REGION, LAST_CHANGED, NOTES, TAGS, plus whatever custom merge fields you have collected. You only need two of those columns for verification: Email Address and, if you want to be efficient, LAST_CHANGED or MEMBER_RATING so you can decide later who to re-engage and who to drop.
Save a copy as mailchimp-clean-YYYYMMDD.csv, rename the email column header to Email so it maps cleanly into most verification tools, and you are ready to verify. Keep the original export untouched in a folder you can find later — it is your rollback if anything goes sideways during re-import.
A small thing I have learned the hard way: do not open and re-save the file in older versions of Excel without explicitly choosing UTF-8 CSV. Excel will silently mangle non-ASCII characters in names and tags, and re-importing the mangled file will overwrite your real data with the broken version. Google Sheets is safer here. So is just leaving the file alone except for the column rename.
Running the Verification
Upload the file to a verification service. We obviously think Bulk Mail Verifier is the right one — it is the product this site is built around — but the workflow is similar across the major tools. We have a head-to-head at comparing bulk email verifiers if you are still picking.
For a list of around ten thousand subscribers, plan on five to ten minutes of processing time. A hundred thousand is more like twenty to thirty minutes. The verification works by actually pinging the recipient mail server with a SMTP handshake (without delivering a real message) and checking whether the address is accepted. There is no shortcut for this — anyone claiming to verify a million addresses in thirty seconds is doing pattern matching, not actual mailbox checks, and pattern matching is what Mailchimp does for free.
When the run finishes you get a results file with a status against every address. The categories are roughly the same across providers, though the exact labels differ. Here is the version we use, and what we do with each:
Valid. The mailbox exists and accepted the handshake. Send to these.
Invalid. The mailbox does not exist, the domain is dead, or the server explicitly rejected. Remove from your active audience without sentiment. Every one of these is a future hard bounce.
Catch-all (also called accept-all). The receiving server accepts every address at the domain regardless of whether the mailbox actually exists. Most G Suite and Microsoft 365 tenants are catch-all by default. You cannot tell from outside whether the address is real, only that the server will not say no. Treat catch-alls as a separate, lower-priority segment. Send to them but watch their engagement — if they never open or click, prune them after ninety days. We covered the nuance at what is a catch-all email.
Disposable. Temporary addresses from services like Mailinator, 10minutemail, GuerrillaMail. Someone signed up to grab your lead magnet and never intended to read your emails. Remove.
Role-based. info@, sales@, support@, admin@, hello@. These are usually distribution lists routing to multiple people, none of whom personally signed up. They get high complaint rates because someone in the group will mark you as spam without removing the others. We have a deeper take at role-based email addresses — credibility and safety. For marketing campaigns, remove. For transactional or B2B sales nurture, keep but flag.
Unknown. The server did not respond, or responded ambiguously, within the timeout window. Re-run these in a separate batch a day later. About half come back as valid on a retry. The other half stay unknown — those, treat like invalids.
Spam trap. The verifier matched the address against a known trap list. Remove immediately and do not look back. One spam trap hit can cost you Gmail or Yahoo placement for weeks.
The single number worth looking at on the summary screen is your invalid-plus-spam-trap percentage. Under 3 percent and your list is in genuinely good shape. 3 to 8 percent and you have normal list rot from a few quarters of growth. 8 to 15 percent and you have been letting it ride too long. Above 15 percent and there is a real chance your acquisition source is the actual problem — fix that next, because you will be back here in three months otherwise.
Putting the Cleaned List Back Into Mailchimp
This is where most cleanup attempts go wrong. People download the valid-only file, re-import it on top of the existing audience, and assume Mailchimp will figure out the diff. Mailchimp does not figure out the diff. Re-importing does not remove the bad addresses; it just re-adds the good ones, which were already there.
There are three real ways to apply your cleaned list, and the right one depends on how big the change is.
For a normal quarterly cleanup, use a tag. Create a new tag in Mailchimp called something obvious like verified-2026-04. Import the cleaned CSV with that tag applied. Then build a segment that filters your audience to "tagged with verified-2026-04 AND Status is Subscribed" and use that segment as your send filter for the next ninety days. The bad addresses are still technically in the audience, but they no longer receive your campaigns. This is the fastest, lowest-risk option for most senders.
For a serious cleanup where you want the bad addresses gone, archive them. Take your verification results file, filter to invalid plus spam trap plus disposable plus unknown-on-retry. That is your kill list. In Mailchimp, build a segment that matches "Email is in" your kill list (paste the addresses in the segment builder, twenty to thirty at a time — Mailchimp's UI is awkward for big bulk operations and the API is honestly easier if you have engineering help). Once the segment is built, archive everyone in it. Archived contacts no longer count toward your billing tier and cannot be sent to, but their unsubscribe history is preserved if they ever come back.
For a list you have lost trust in entirely, start a fresh audience. Create a new audience, import only your clean valid contacts, and migrate your campaigns and automations across. The old audience stays as an archive in case you need to look something up. This is heavy work — every automation and segment has to be rebuilt — but for some accounts it is the only way to break out of a deliverability hole. We have walked clients through this on lists where Mailchimp's reputation score was so degraded that even a clean send was hitting Promotions. New audience, new sending behavior, fresh start. Sometimes that is what it takes.
Whichever route you pick, do not send a campaign to the cleaned list right after re-import. Wait at least an hour for Mailchimp's internal indexing to settle. Send a small, low-risk message first — a re-engagement email to a thousand people, not a sale announcement to fifty thousand. Watch the bounce rate on that small send. If it is under 0.5 percent, you are good. If it is higher than that, something went wrong in your re-import and it is worth pausing to figure out what.
Stopping the Decay (So You Do Not Do This Again in Six Weeks)
Cleaning a list is the easy part. Keeping it clean is the part that separates senders who do this twice a year from senders who never have to worry about it.
The single biggest leverage point is verification at the point of signup. Every email address that joins your list should hit a verification API before Mailchimp ever sees it. If you are using Mailchimp's hosted forms, that means a JavaScript layer on your form page that calls our API on submit and only passes valid addresses through. If you are using a custom form that POSTs into Mailchimp via webhook, slot a server-side verification call in the middle. We have full setup notes at how to verify emails and reduce bounce rate. The verification API call costs a small fraction of a cent. The hard bounce it prevents costs you reputation, contact-tier dollars, and an Omnivore review that will eventually come due.
The second leverage point is double opt-in. Mailchimp ships with it. Most senders disable it because they think it costs them subscribers. The math here is not actually as scary as it looks. Yes, you lose maybe 15 to 25 percent of signups to people who never click the confirmation link. Almost all of those people would never have engaged with your emails anyway. The 75 to 85 percent who do confirm are dramatically more engaged, complain less, and stay subscribed longer. Turn it on at Audience → Signup Forms → Form Settings → Require subscribers to opt in. You will not regret it.
The third leverage point is a sunset rule. Pick a window — 180 days is the conventional answer, 90 is more aggressive — and decide that any contact who has not opened, clicked, or replied within that window comes out of the active list. Send them a re-engagement campaign first, of course. The ones who come back are gold. The ones who do not are dead weight that is hurting your placement. Mailchimp does not have a one-click sunset feature; you build it as a segment ("Last opened more than 180 days ago AND Last clicked more than 180 days ago") and unsubscribe or archive everyone in it. We covered the broader practice at 9 signs of customer disengagement and how to revamp your email strategy.
Together those three habits — verify on the way in, confirm with double opt-in, sunset the dead weight — keep a Mailchimp list healthy with about ninety minutes of real maintenance per quarter. Without them, you will be back here every three to six months running the same export-verify-reimport ritual.
What to Do If You Already Have an Omnivore Warning
If you are reading this with a yellow Omnivore banner on your dashboard, the fix sequence is a little different and a little more urgent. Here is what we run with clients in that situation.
First, do not start sending around it. Mailchimp's review process is not adversarial, but trying to bypass an Omnivore warning by splitting your list into smaller chunks and sending those instead will get the account looked at by a human, and the conversation gets harder fast.
Second, identify which import or audience triggered the warning. The banner usually tells you. Export that specific audience.
Third, run it through verification with the most aggressive settings your tool offers. We typically recommend treating catch-all, role-based, unknown, and disposable as remove-list categories along with the obvious invalid and spam-trap categories, even though under normal circumstances we would keep some of those. Omnivore is being defensive; you should be too.
Fourth, archive everyone the verifier flagged. Not unsubscribe — archive. Archive removes them from your active count and is reversible if you need to.
Fifth, contact Mailchimp support. Open a ticket from the warning banner itself, attach a summary of your cleanup steps and the verifier's results screenshot, and ask them to re-evaluate the audience. In our experience the turnaround is one to two business days for a clear-cut cleanup. Be polite, be specific, and do not argue about the warning itself — just present the cleanup work and ask for the audience to be re-scored.
Sixth, when you are cleared, send a small re-engagement campaign first, not your big planned campaign. Get a clean send into Mailchimp's recent history before you push volume.
A Few Honest Answers to the Things People Ask
How often do I really need to do this? If you have verification at signup and double opt-in, twice a year. If you have neither, every quarter. If you bought or scraped any of your list, before every campaign and you should still be looking for a different acquisition strategy.
Will cleaning save me money on my Mailchimp plan? Sometimes. If your archive moves you under a billing tier threshold (500, 1500, 2500, 5000, etc.), yes. If not, the savings are indirect — better deliverability means more revenue per send, which is worth more than the contact-tier discount anyway.
Can I just use Mailchimp's built-in tools? Mailchimp's built-in tools are list management, not list verification. They will tell you who has bounced and who has unsubscribed. They will not tell you which active addresses are about to bounce. That is what verification is for.
What if I cannot get a free trial to be enough? Email lists are weirdly bursty in size, and "I have ten thousand contacts" is often closer to "I have fifty thousand contacts split across three audiences and a couple of suppression lists." Plan for the actual number, not the headline number, and most reputable verification services (ours included) have volume pricing once you cross a few tens of thousands.
My agency runs my Mailchimp. Do I still need to read this? Probably yes. Most agencies do not run quarterly verification unless it is in scope of their contract. Ask them when the audience was last verified and what the invalid rate looked like. If they do not have a clean answer, the audience has not been verified.
Closing Note
A clean Mailchimp list is not a one-time achievement. It is a posture. The senders who never seem to have deliverability problems are not the ones who picked the right tools once; they are the ones who built a small, boring quarterly habit and stuck to it.
Run the export. Run the verification. Apply the results properly. Turn on the three guardrails. Put a calendar reminder ninety days out. The next time someone in your company says "our emails have been going to spam lately," you will already have done the work to make sure that is not happening on your watch.
If you want to actually run the verification today, Bulk Mail Verifier has a free trial with real credits, no card required. It is the same tool we built for ourselves and the one we use on every cleanup we have written about on this site.
