How do I clean an email list?#
Four passes, in this order, and the order matters because the first two are certain and the last two are judgement.
- Remove everything that bounced. The provider already told you the address is dead, so there is nothing to decide and nothing to lose.
- Remove anything that never confirmed, if confirmation was the deal. An address that was imported and never said yes is not a subscriber who went quiet, it is a subscriber who never started.
- Then look at the quiet ones: the names that have not opened or clicked across the number of sends you choose to count.
- Last, deduplicate and fix the typos, which is the pass that catches the damage done by three imports of the same spreadsheet.
The mistake is doing pass three first, because it feels like work, then leaving the hard bounces in place, which is the one category that hurts your sending. Certainty first, judgement second.
Why does a dirty list cost me?#
Because the mailbox providers judge you on ratios rather than volumes. A bounce is a message sent to a place that does not exist, and if it is a meaningful share of everything you mail, the people running the receiving server learn that you do not know your own list.
The same arithmetic applies to complaints. A person who never asked to be there and finds your email in their inbox has one obvious move, and it is reported to the provider as a number rather than as a feeling.
Bounce and complaint thresholds are published by the big mail providers in their own sender guidelines, and the exact figures are theirs to state and theirs to change. What you need from them is the shape of the rule: keep the bad ratios small, and the way to keep them small is to stop mailing addresses that produce them. Why email goes to spam covers what happens when the ratio goes the wrong way.
Which addresses should I remove?#
| What is in the list | Why it costs you | How to spot it |
|---|---|---|
| A hard bounce | The address does not exist, and the provider knows you keep mailing it | The failure notice you already received, in the report |
| An import that never confirmed | Not a reader, and one complaint away from being a problem | A status that says pending, unverified or unconfirmed |
| A name dead for a year | It drags the open percentage down and tells you nothing | No open and no click across every send you can count |
| A role address | info@ and admin@ are read by a rota, or by nobody, or by a filter | The local part, which you can find with one search |
| The same address twice | Two sends to one person, and one of them gets marked as junk | Duplicates in an export, sorted by the email column |
| A typo domain | gmial.com was never going to arrive, and it still counts against you | Anything that is not a domain you recognise |
| An unsubscribed name kept as a contact | Harmless if it truly cannot be mailed, dangerous if the check is loose | A flag that has to stop every path, including automation |
What is a hard bounce and does it fix itself?#
A hard bounce says the address does not exist. The mail came back because the mailbox is gone, the domain has no mail server, or the address was made up. It does not fix itself, and it does not decay, which means every future send to that address produces the same result and the same mark against you.
A soft bounce is different and worth not deleting on the spot. The address exists and something temporary got in the way: a full mailbox, a server down, a greylist. A soft bounce repeated across several sends becomes a real problem; a single one usually means nothing.
Whatever the tool you use, the useful behaviour is the same: a hard bounce takes the address out of the mailable set automatically and stays it out, rather than asking you to notice. What a good open rate looks like is the companion measure, because a list full of dead names makes an honest open rate look like a failure.
Should I delete subscribers who never open?#
Not straight away, and not on opens alone. Open tracking counts a fetched image, and privacy tools, image blocking and preview panes all inflate or suppress that number in ways that have nothing to do with whether a human read you. Somebody who never opens your email and clicks nothing across ten sends has stopped reading. Somebody with one open in ten is not nothing.
The move that preserves the reader and cleans the list is a re-permission campaign rather than a deletion: one plain message that says you are about to stop mailing them, asks them to say if they want to keep getting it, and then honours the silence. Nobody who answers that email is a name you should remove.
How do I find the dead addresses without a paid tool?#
- Export the list as a spreadsheet and sort by the last-open and last-click dates. Everything blank or older than a year is your candidate pile.
- Export the sent mail too and count bounces by domain. If one domain produces a disproportionate share, you probably imported that block of names from one bad file.
- Filter the email column for role prefixes: info, admin, sales, support, contact, hello, office. Decide what they are worth to you rather than deleting them on principle.
- Sort by the email column and delete exact repeats. This is the one cleaning step that never does harm.
- Look for domains that are almost right. A handful of typos usually arrives in a group, because they came from the same old file.
Do not run an unverified third-party verification service over the list to check whether addresses exist. Probing mail servers that way is how a sender gets themselves blocked, and a service that claims to clean a list by testing it is selling you its own convenience rather than your reputation.
How do I clean a list inside Mailchimp or Klaviyo?#
The menu names belong to those products and their interfaces move, so the path to follow is the one on their own help page rather than the one in a blog post. The model-agnostic procedure is short, and any tool that claims you need its specific workflow is selling the workflow.
- Export the whole audience, including the status column, the engagement dates and the tags.
- Clean the export in a spreadsheet, where you can see what you are removing and keep the file as the record.
- Re-import the cleaned set into a fresh audience, carrying the consent status and the signup date across rather than leaving them behind.
- Compare the two counts before you delete the old audience, and only delete once the new one has the number of mailable names you expected.
Two things break in that migration and are worth checking by hand: whether an unsubscribed name came back as mailable, which happens when the status column does not map, and whether the consent record survived, because a re-imported address with no proof behind it is a smaller problem than a mailed address with no proof.
How do I delete a list of emails I imported by mistake?#
Delete the whole audience rather than the members you can see, provided nothing else is in it. A list imported by mistake is a liability the moment it becomes mailable, and half-removals are how a mistake turns into a send.
If the wrong names are mixed in with the right ones, do not try to delete by hand. Export, split the file into what you may mail and what you may not, and rebuild the audience from the half you can defend. What double opt-in is explains why the file you cannot defend should never be given a chance to confirm.
If anything from the bad import has already been mailed, that is a support task rather than a spreadsheet task: find out what went, to whom, and stop it going again before you tidy anything.
How often should I clean an email list?#
The bounces, continuously, because that is a setting rather than a task. The engagement pass, twice a year, and the reason for that cadence is practical: a year of sends is long enough to be fair to a slow reader and short enough that the file does not become a chore.
Clean before a big import and before anything you plan to automate. A dirty list entering a sequence is worse than a dirty list entering a single send, because an automation mails the same bad address several times on a rule nobody is watching. What an autoresponder is covers why the rule fails silently.
| The pass | How often | What it takes out | Can you undo it |
|---|---|---|---|
| Hard bounces | Every send, with no decision needed | Addresses that no longer exist | Yes, from the export you kept |
| Never confirmed | Once, before the first real send | Names that were imported and never said yes | Yes, they were never mailable |
| No open and no click | Twice a year, after a re-permission email | Readers who have gone | Only if the file still exists |
| Duplicates and typos | Before every import | The damage from sending one spreadsheet three times | Yes |
| Role addresses | Once, then as they arrive | Mailboxes nobody in particular owns | Yes |
What does cleaning a list do to my bill?#
If the tool charges by stored contacts, removing dead names is a direct saving and often the difference between two pricing bands. If it charges by emails sent, cleaning saves nothing measurable, since you were never going to mail the dead addresses many times anyway.
Some vendors bill every stored contact, including the ones you never send to, and that decision changes what hygiene is worth. The detail is on their pricing page in their own words, and what email marketing costs works the arithmetic through both models.
Is cleaning the same as unsubscribing?#
No, and confusing the two is how senders lose records they needed. An unsubscribe is a person telling you to stop. A cleanup is you deciding an address is no longer worth mailing. The first has to be honoured for that address forever, and the second is a housekeeping decision that should leave the history alone.
The practical rule: never remove an unsubscribe record to make a list tidier. That suppression is the proof you honoured the request, and a list that loses it will mail somebody who asked not to be mailed, which is the one error that gets reported.
How do I stop the list getting dirty again?#
- Confirm signups rather than accepting typed addresses, so a wrong address never becomes a contact. Double opt-in is the mechanism.
- Stop pasting in old spreadsheets. An imported file is the single largest source of bounces, complaints and unmailables in most lists.
- Watch the per-send numbers rather than the total, since a bounce rate that rises send after send tells you a source has gone bad.
- Keep one field for where a name came from, and drop the source that produces the dead ones.
- Mail often enough that a reader stays familiar with you, which is the part newsletter frequency decides.
What should I check before I delete anything?#
Three checks, and they take a minute each. First, whether the address has ever bought, replied, or booked from you: a name that has done one of those is a customer with a quiet inbox, not an inactive subscriber, and deleting a customer to improve a percentage is a bad trade.
Second, whether the quiet period covers a season rather than a habit. A donor who gives once a year looks dead in March and is not. Third, whether the deletion is reversible. An export kept as a file means a decision can be revisited; an audience emptied on a Tuesday afternoon cannot be.
If a name is worth money to you once a year, the answer is a less frequent send to that segment, not a cleaner list. Segmenting an email list is how you stop mailing somebody often without deleting them at all.
How do I know how many bad addresses I have?#
Measure your own rather than looking for an industry figure, because the answer depends entirely on where the names came from. A list built from confirmed signups in the last two years will have very little to remove. A list assembled from three old exports and a conference spreadsheet will have a lot, and you will find it in the first ten minutes of an export.
The number worth tracking is bounces as a share of each send, which any tool reports and which moves when a bad source enters the list. A rate that is stable is a hygiene question answered, and a rate that climbs is a source you have not found yet.
Campaign Kicker keeps hard bounces out of the mailable set automatically, records every unsubscribe as a suppression that no send path can bypass, and refuses to mail an address with no consent behind it. Imports are checked before they become an audience, and names are never billed for existing. The free plan mails 5,000 emails a month with no card.
Import a cleaned list