Cold email is less forgiving than any other kind of email. You are writing to people who have never heard of you, usually from a young domain with little sending history, at low daily volumes. A handful of bounces in a campaign of a few hundred messages is already a high bounce rate, 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, from raw export to a list you can send to with confidence.
Why cleaning matters more for cold email
- Every bounce weighs more. Sending 40 emails a day per mailbox, two hard bounces is a 5% bounce rate. Most sending platforms and cold email tools start to worry well before that.
- Your domains are new. A young domain has little history, so each early signal, good or bad, weighs more. Bounces in the first weeks can make later campaigns harder.
- Lead lists age fast. People change jobs and companies close mailboxes, so a list from a data provider or a scraper contains addresses that no longer exist, even if they were correct when collected.
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 you have already bounced or that asked to be removed. Keep a suppression list and check every new 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.
For a cold email list, 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. In MailQuell, that is Power mode. 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 for cold outreach:
| 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@. |
Remove for cold email. Shared inboxes rarely reply and complain more often. |
| Catch-all | The domain accepts every address, so the mailbox cannot be confirmed. | Keep in a separate segment. Send in small batches 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 for a new domain the safe decision is usually 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 the first campaign 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 is authenticated for your domain, not just your main mailbox.
- Warm up new mailboxes gradually instead of starting at full volume.
Gmail and Yahoo require SPF or DKIM from every sender, and all three 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 only. Let each mailbox build a track record.
- Watch the bounce rate after the first batches. If hard bounces go above 2%, stop and look at which domains they come from.
- Add catch-all addresses gradually, a small share of each day's volume, 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:
- starting a new sequence to an old list,
- importing a list you bought or received from a partner,
- reactivating contacts who have not heard from you in months.
Only addresses that are still valid move on. This costs a few credits and saves your domain.
Mistakes that cause bounces anyway
- Guessing addresses at scale. Generating
firstname.lastname@for every contact and hoping for the best produces invalid and catch-all addresses in bulk. Verify guessed addresses one by one, or better, find the real ones. - 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 separate, so you can see which source produces bounces.
Summary checklist
- Remove duplicates, malformed addresses and past bounces.
- Verify every address, with catch-all detection.
- Send to valid only; remove invalid, disposable and role addresses.
- Put catch-all and unknown addresses in a separate, cautious segment.
- Check SPF, DKIM and DMARC for your sending domain.
- Send valid addresses first, watch bounces, 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.