How to reduce your email bounce rate
A high bounce rate is rarely one problem. It is usually three or four small ones stacked up, and people tend to attack them in the wrong order, starting with the interesting technical work and finishing with the boring list hygiene that would have fixed most of it.
So this is ordered by how much each step is actually worth, not by how satisfying it is to do.
First, know which kind you have
Your sending tool splits bounces into hard and soft. The two mean different things and the fix for one does nothing for the other.
A hard bounce is permanent. The mailbox does not exist, the domain does not exist, or the server has flatly refused you. Sending again will produce the same result forever. This is the category that damages you, because mailbox providers read a pattern of hard bounces as a sender who does not know who their recipients are, which is what a spammer looks like from the outside.
A soft bounce is temporary. The mailbox is full, the server is down, the message was too large, or you have been greylisted and told to try again shortly. Most sending tools retry these automatically and a good number resolve themselves.
Pull your last campaign report and get the split before doing anything else. If you are mostly hard bouncing, this is a list problem and the rest of this article is mostly about that. If you are mostly soft bouncing at a steady rate across every campaign, the problem is more likely reputation or infrastructure, and cleaning the list will not move it much.
What counts as bad
There is no universal threshold, but the numbers people work to are fairly consistent.
| Hard bounce rate | What it means |
|---|---|
| Under 2% | Normal for a maintained list |
| 2% to 5% | The list is aging or was not verified before sending |
| Over 5% | Providers are likely already throttling you |
| Over 10% | Expect suspension from most sending platforms |
Cold outreach runs at the higher end of normal because the data is bought or scraped rather than opted in. Under 3% is a reasonable target for a cleaned cold list, and if you are running a warm list of people who signed up, you should be well under 1%.
The step that fixes most of it
Verify the list before you send. That is the whole step and it accounts for the large majority of hard bounces on almost every list we see.
A verifier checks the syntax, confirms the domain exists and has mail servers configured, then checks whether the specific mailbox is real. Run it on the whole list before a campaign, and run it again on anything older than about six months, because B2B addresses decay quickly. People change jobs. Companies restructure. An address that was good in February is not necessarily good in August, and roughly a quarter of B2B contact data goes stale in a year.
There is one thing to watch here, and it is the reason a lot of people verify and still bounce. About 30% of a business list sits on catch-all domains, which accept mail for every possible address whether or not a mailbox exists. Most verifiers cannot resolve those and return them labelled risky, unknown or accept-all. You then have two bad options: delete a third of your list, or send to it and find out the hard way.
Deleting is the safer of the two and it is what most people do, which is why a verified list can still feel thin. A verifier that resolves catch-all addresses to a real valid or invalid result gets you out of that choice. That is what Giggal.ai is built for, and it applies the same treatment to mailboxes behind secure email gateways like Proofpoint and Mimecast, which fail in a similar way for a different reason.
Then, remove the addresses that were never going to work
Two categories are worth stripping even when they verify as valid.
Role addresses are shared aliases: info@, sales@, support@, admin@. They usually exist, so they pass verification, but they land in a shared inbox that nobody personally owns. Engagement is poor and complaint rates are higher than average. For cold outreach they are close to worthless.
Disposable addresses come from temporary mail services and exist for a few minutes. They pass verification while they are alive and vanish afterward. Any decent verifier flags both categories separately from valid, so this is a filtering step rather than extra work.
Fix the intake, not just the list
If bad addresses keep arriving, cleaning is a treadmill.
Put real-time verification on your signup forms so a typo is caught while the person is still on the page. Most of the value here is catching gmial.com and hotmial.com at the moment they are typed, which is both a deliverability fix and a better experience for someone who genuinely wanted to hear from you.
Drop the confirm-your-email-address second field. It does not work. People copy and paste from the first field, and you have added friction for no benefit.
If you buy lists, verify them the day they arrive rather than the day you send. Vendors sell the same data repeatedly and it ages on their shelf, not just yours.
The authentication work
This does not reduce bounces directly, and it is worth being clear about that, because it gets recommended as a bounce fix constantly. SPF, DKIM and DMARC control whether receiving servers trust that you are who you claim to be. Get them wrong and messages get rejected or filed as spam, which shows up in some reports alongside bounces and muddies the diagnosis.
Set them up properly, verify them once with any of the free DMARC checkers, and then stop thinking about them. If your bounces are mailbox-does-not-exist errors, no amount of DNS work will help.
Warm up if the domain is new
A brand new sending domain that sends 5,000 messages on day one will be throttled, and throttling produces soft bounces that look like a list problem.
Start at low volume and increase over two to four weeks. Most sending platforms automate this now. If yours does not, ramp it by hand and resist the urge to skip ahead, because the reputation you are building is the thing that determines whether the next campaign lands.
A sequence that works
Read the hard and soft split from your last campaign. Verify the whole list, including the catch-all portion, rather than discarding it. Remove role and disposable addresses. Put verification on the signup form so the problem stops recurring. Confirm SPF, DKIM and DMARC once. Warm the domain if it is new. Then send, read the new numbers, and repeat the verification step every quarter.
Most lists get from an unpleasant number to an acceptable one on the second step alone. The rest of the list is there to stop it drifting back.
If you want to see where your current list stands, Giggal.ai gives 1,000 credits free with no card, and they work on a bulk upload. Related reading: what a catch-all address is, what risky means in a verification report, and a good bounce rate for cold email.
