Every list decays. People change jobs, companies close mailboxes, and sign-up forms collect typos and throwaway addresses. Send a newsletter to a list that has not been checked in a while and a share of it bounces, and mailbox providers notice.
The good news: most of the damage is preventable before you press send. This is the process we recommend for cleaning a list of people who signed up or bought from you, from raw export to a list you can send to with confidence.
Why cleaning matters
- Bounces hurt your reputation. Mailbox providers watch how many of your messages go to addresses that do not exist. A high bounce rate is a sign of an old or careless list, and it can send your next campaign to spam.
- Lists age fast. About a fifth of business addresses stop working every year as people change jobs. An old customer list or a list of event sign-ups contains addresses that no longer exist, even if they were correct when collected.
- Forms collect mistakes. Typos (
gmial.com), fake addresses and temporary inboxes slip into every sign-up form.
The target: hard bounces below 2% of every send, ideally below 1%.
Step 1: Remove what is obviously broken
Before paying for any verification, clean what you can for free:
- Duplicates. The same address twice means double the risk for no benefit. (MailQuell removes duplicates automatically when you upload, ignoring upper and lower case.)
- Malformed addresses. Missing
@, spaces, trailing dots,name@companywith no extension. - Obvious typos in big domains:
gmial.com,hotmial.com,outlok.com. Either fix them if you are sure, or drop them. - Addresses that already bounced or that asked to be removed. Keep a suppression list and check every list against it.
Step 2: Verify every address
Verification checks each address the way a mail server would, without sending anything: the format, whether the domain exists, whether it has mail servers (MX records), and whether the server accepts the mailbox. You can try it on a single address with our free email checker.
Use a verification that also detects catch-all domains. Otherwise addresses on accept-all domains come back as "valid" and cause bounces you did not expect. MailQuell does this on every check, for the same 1 credit. We explain why in what a catch-all email address is.
Step 3: Decide what to do with each result
Verification sorts your list into groups. Here is how to treat each one:
| Result | What it means | What to do |
|---|---|---|
| Valid | The mailbox exists and accepts mail. | Send. |
| Invalid | The address or domain does not exist. | Remove. It will hard-bounce. |
| Disposable | A temporary inbox that expires. | Remove. |
| Role | A shared inbox such as info@, sales@, support@. |
Keep it if that is the address the customer gave you; shared inboxes read and reply less, so watch how they perform. |
| Catch-all | The domain accepts every address, so the mailbox cannot be confirmed. | Keep in a separate segment. Send to it after your valid addresses. |
| Unknown | The server did not give a clear answer (timeout, greylisting, blocking). | Verify again a day later. If still unknown, treat like catch-all or drop. |
The only group you can send to without thinking is valid. Everything else is a decision, and when in doubt the safe decision is to leave it out.
Step 4: Check your own domain before sending
A clean list will not help if receiving servers do not trust you. Before sending from a domain:
- Publish SPF, DKIM and a DMARC record. You can check them with the SPF and DMARC checker.
- Make sure every sending tool (newsletter platform, CRM, helpdesk) is authenticated for your domain, not just your main mailbox.
- If the domain or the sending platform is new, start with small volumes and increase them gradually.
Gmail and Yahoo require SPF or DKIM from every sender, and all three big providers reject bulk senders without SPF, DKIM and DMARC. The details are in our 2026 sender requirements checklist.
Step 5: Send in a sensible order and watch bounces
- Start with valid addresses.
- Watch the bounce rate after the first sends. If hard bounces go above 2%, stop and look at which domains they come from.
- Add catch-all addresses gradually, and stop if bounces rise.
- Remove every hard bounce immediately and add it to your suppression list. A
550 5.1.1never recovers. See what each bounce code means.
Step 6: Re-verify before reusing a list
A list you cleaned three months ago is not clean today. Verify again before:
- sending to subscribers or customers you have not emailed in months,
- importing contacts from another tool or an event,
- a big announcement where a bounce spike would hurt the most.
Only addresses that are still valid move on. This costs a few credits and protects your domain.
Only email people who expect to hear from you
Verification tells you whether an address can receive mail, not whether its owner wants your messages. Send to people who signed up, bought from you or otherwise agreed to hear from you, and let them unsubscribe in one click. Bought or scraped lists are not something to clean: they break anti-spam laws in many countries and are full of spam traps.
Mistakes that cause bounces anyway
- Treating "catch-all" as "valid". It is a common source of bounces in lists that were already "verified".
- Verifying once and sending for months. Lists decay; verification is not permanent.
- Mixing sources. Keep lists from different sources (sign-up form, store, events) separate, so you can see which one produces bounces.
Summary checklist
- Remove duplicates, malformed addresses and past bounces.
- Verify every address, with catch-all detection.
- Send to valid first; remove invalid and disposable addresses.
- Put catch-all and unknown addresses in a separate, cautious segment.
- Check SPF, DKIM and DMARC for your sending domain.
- Watch bounces and remove hard bounces immediately.
- Re-verify before reusing any list.
You can verify your first list for free: MailQuell includes 200 checks every month and 100 welcome credits, with duplicates removed automatically. Create a free account and upload a CSV.