How to Clean Your Email List Inside Mailchimp, HubSpot, Klaviyo and 10 More Tools
Stop exporting CSVs to verify your list. Connect Mailchimp, Klaviyo, HubSpot, MailerLite, Brevo, ActiveCampaign, Zoho CRM, SendGrid, Mailgun, Mailjet, Campaign Monitor, SparkPost or Google Sheets, and the results land straight on your contacts.
Ask a marketing team when they last cleaned their list and you will usually get a date, not a cadence. Some time in the spring. Before the big campaign. When the bounce rate got embarrassing. Nobody says "continuously", because the tooling never made that possible.
That gap between how lists rot and how we clean them is the whole problem. Addresses go bad steadily, a little every week, forever. Cleaning happens in bursts, months apart, whenever somebody remembers. Between those bursts your list quietly fills up with addresses that will bounce, and you keep sending to them.
The fix is not a better CSV workflow. It is removing the CSV. Below is how that works, and exactly where the result lands in each of the thirteen tools that connect directly.
Why lists decay whether you touch them or not
Nothing has to go wrong for a list to rot. People change jobs and their work address dies with the badge. Companies get acquired and the old domain stops resolving. A student graduates. Someone abandons a personal account and never opens it again. None of that involves your marketing, and none of it sends you a notification.
The commonly cited figure is somewhere between two and three percent of a B2B list going bad every month. Whether your number is exactly that matters less than the shape of it: a slow leak, not an event. A list you verified perfectly in January is meaningfully worse by March and genuinely risky by June.
The export loop is where hygiene goes to die
The traditional fix has four steps. Export a CSV from Mailchimp or HubSpot. Upload it to a verifier. Download the results. Import them back and update everyone. It works, it is genuinely accurate, and almost nobody does it on schedule.
The reason is not laziness. Every step is a chance to stop. The export lands in your downloads folder. The verification takes a while, so you go and do something else and forget. The re-import is the worst part, because now you are matching rows back onto contacts, deciding what to do with the ones that changed, and hoping you do not overwrite something. It is a twenty minute job that feels like an hour, and the reward is invisible: nothing breaks that would have broken anyway, this month.
So it slips. Monthly becomes quarterly becomes "before the next big send", which is exactly the moment you have the least time to spare.
Which tool are you in, and where the result lands
Thirteen platforms connect directly. In every case you sign in or paste an API key, choose a list, and the verdicts are written back onto the contacts themselves. What differs is the field each platform gives us to write into, so here is that detail per tool.
Clean a Mailchimp audience
Pick an audience and each member is tagged with the result, so you can build a segment from it in the normal Mailchimp segment builder. Removal unsubscribes rather than deletes, which keeps your reporting history intact. If you paste an API key instead of signing in, keep the -us14 style suffix on the end, because that suffix identifies your data centre and the key does not work without it.
Clean a Klaviyo list
Choose a list and each profile is tagged. Removal in Klaviyo means suppression, which is the correct behaviour for a platform where profile history matters. Klaviyo tags are first-class objects, so the verdicts show up everywhere segments and flows can reach them.
Clean a HubSpot list
The verdict is written to a property on each contact record, not a tag, because that is HubSpot's native shape and it is what workflows and list filters read. Nothing is ever deleted. Contacts marked for removal are flagged rather than destroyed, since a HubSpot contact carries deal history, notes and call logs that have nothing to do with whether an address bounces.
Clean a MailerLite group
Pick a group and the result lands in a subscriber field. Worth knowing: MailerLite does not require a subscriber to belong to any group at all, so accounts routinely hold thousands of contacts and zero groups. There is an "All subscribers" option for exactly that case.
Clean a Brevo list
The verdict goes into a contact attribute, and removal adds the address to your Brevo blocklist. One trap that has nothing to do with your list: if your Brevo account restricts API access by IP, a perfectly valid key returns 401 until our sending address is allowed. That failure looks exactly like a bad key and is not one.
Clean an ActiveCampaign list
Each contact is tagged with the result. ActiveCampaign needs your account URL alongside the API key, because every account is on its own host. Removal unsubscribes from the list rather than deleting the contact.
Clean a Campaign Monitor list
The result is written into a custom field on each subscriber, ready to use in Campaign Monitor's segment rules.
Clean a Zoho CRM view
Zoho has no list object, so instead of inventing one we offer your saved Contacts views, which is what people actually mean by "my segment". Each record gets a native Zoho tag. Removal marks the record rather than deleting it, because a CRM record is somebody's account history. Zoho also runs separate regional stacks, so if your CRM lives at crm.zoho.in the connection is made there rather than on the .com stack.
Clean a SendGrid marketing list
The verdict goes into a custom field on the contact, and removal adds the address to your global suppression list. Your API key needs Marketing permissions; a send-only key authenticates fine and then fails on every contacts call, which is a confusing ten minutes if you do not know to look for it.
Clean a Mailgun mailing list
The result is stored on the member record. Mailgun runs separate US and EU stacks and we detect which one your key belongs to rather than asking you to pick. Tagging deliberately uses the per-member update rather than the bulk endpoint, because the bulk one defaults subscription status to true and could resubscribe somebody who opted out.
Clean a Mailjet contact list
The verdict lands in a contact property. Mailjet authenticates with an API key and a secret key together; the key alone will not work.
Clean a SparkPost recipient list
SparkPost is the one platform where we verify but cannot tag. It has no endpoint that updates a single recipient, so writing a verdict would mean reading your entire stored list and rewriting it, and any field that read did not return would be silently lost. That is not a risk worth taking to add a label, so the sync screen does not offer tagging there at all. Removal works properly and writes to your suppression list.
Clean a column in Google Sheets
Spreadsheets need three answers rather than one: which file, which tab, and which column holds the addresses. Results appear in a new Prime Verifier column beside your data, matched row by row. Run it again next month and the same column updates in place rather than a second one appearing. Nothing else in the sheet is touched, and Google only grants access to the specific files you pick, so the rest of your Drive stays private.
Email marketing
CRM
Email delivery
Spreadsheets
What changes when the verifier reaches into the tool
Connecting the platform directly removes all four steps of the export loop. You pick a list, verification runs in the background, and the verdicts are written back. There is no file anywhere in that sentence.
That sounds like a convenience improvement. It is actually an economic one, because the cost of running hygiene drops close to zero, and anything that costs nothing gets done often. A monthly clean stops being a calendar event and becomes something you kick off in ten seconds.
The second change matters more. Because the results live on the contact record rather than in a spreadsheet on somebody's laptop, they become usable by everything else you own. A Mailchimp segment can exclude them. A HubSpot workflow can branch on them. A sales rep looking at a Zoho record sees the address is dead before wasting a follow-up. A verdict in a CSV is a report. A verdict on a contact is infrastructure.
The five answers, and what to actually do with each
A verifier that only tells you good or bad is hiding something. Real mail servers are messier than that, and a result set that admits it is far more useful.
Valid. The mailbox exists and accepted our probe. Send to it. This is the only genuine green light.
Invalid. The server said no such user. This address hard bounces every time. Remove it from sending immediately, and prefer suppression over deletion so you keep the history.
Catch-all. The domain accepts every address anyone offers it, including ones invented on the spot. It will accept [email protected] as readily as your contact. So this tells you the domain takes mail and nothing about the person. Do not delete these. Segment them, send separately, and watch the bounce rate on that segment specifically. Plenty of legitimate companies run catch-all, so blocking them would cost you real customers.
Disposable. A throwaway inbox from a temporary-mail service. It probably works right now and will be gone next week. Worth removing from nurture, and worth fixing at the point of capture rather than months later.
Unknown. The server would not give a straight answer, usually because it is behind an anti-spam gateway that treats every probe as hostile. An honest verifier says so rather than guessing. Treat it like catch-all: segment, do not delete, watch performance.
The distinction between those last three is where most of the value hides. Lumping catch-all, disposable and unknown together as "risky" throws away the information you need to decide differently about each one. You are also never charged for catch-all or unknown, precisely because neither one confirms anything.
The part people underestimate
Bounces do not just fail. They teach the receiving mailbox provider something about you, and what they teach is that you send to addresses that do not exist, a signal strongly associated with bought lists and spam.
Once your reputation slips, the penalty does not fall on the dead addresses. They were never going to arrive anyway. It falls on your good subscribers, whose mail now lands in the spam folder. You lose the people who wanted to hear from you because of the people who no longer exist.
What good looks like operationally
The teams that get this right tend to do three things.
They verify at the point of capture, so bad addresses never enter the database. Rejecting an address at a signup form costs nothing; removing it after three months of nurture costs reputation.
They run a background clean on a schedule, monthly or quarterly, on whichever segments they actually mail. Not the whole database. There is no point verifying two hundred thousand records you will never send to.
They re-verify before anything large. A list clean six weeks ago is mostly still clean, but a big send to a stale segment is exactly how a good reputation gets damaged in one afternoon.
If your tool is not one of the thirteen
Two routes cover essentially everything else. Our Zapier app puts verification inside any workflow and reaches more than 9,000 other apps, with no code. And the REST API is a single call with a key header, so anything that can make an HTTP request can verify an address, including Make, n8n, and whatever internal tooling you already run.
Where to start
Connect the tool that holds your main sending list and verify the segment you mail most often. Not the whole database, just the part that actually goes out. Look at what comes back, and pay attention to the ratio of unknown and catch-all, because that tells you how much of your list is fundamentally unverifiable and needs to be judged on send performance instead.
Then put it on a schedule and stop thinking about it. The entire point is that hygiene should be boring.