How to calculate Email Bounce Rate
Email bounce rate is the share of sent emails that could not be delivered to the recipient's mail server.
Formula
Bounce rate = bounced emails ÷ emails sentSQL query
This example assumes: email_sends(id, campaign_id bigint, sent_at timestamptz, bounce_type text). It is written in PostgreSQL syntax; date functions differ slightly in MySQL, BigQuery and SQLite, and your column names will differ from these.
SELECT campaign_id,
COUNT(*) AS sent,
COUNT(*) FILTER (WHERE bounce_type = 'hard') AS hard_bounces,
COUNT(*) FILTER (WHERE bounce_type = 'soft') AS soft_bounces,
COUNT(*) FILTER (WHERE bounce_type IS NOT NULL)::numeric / NULLIF(COUNT(*), 0) AS bounce_rate
FROM email_sends
GROUP BY campaign_id
ORDER BY bounce_rate DESC;Common mistakes that make Email Bounce Rate wrong
- Hard bounces (invalid address) and soft bounces (full mailbox, temporary) mean different things; report them separately.
- A soft bounce that is retried and delivered should not be counted as a bounce.
- Counting by recipient instead of by send changes the answer for people emailed repeatedly.
Ask for Email Bounce Rate in plain English
Instead of writing the query yourself, you can type the question. SchemaChat turns it into SQL against your connected database or uploaded file, runs it, and shows the SQL and the figures it used so you can check the answer before you share it. It does not replace your judgement about the definition: check that the query matches the formula your business uses.
- What is the hard bounce rate for each campaign?
- Which campaigns had a bounce rate above 2%?