Metric

What is email bounce rate, and how do you measure it in Metabase?

Email bounce rate is the share of sent emails that couldn't be delivered. It's the health metric for an outbound motion — a rising bounce rate signals bad data and threatens the sender reputation that keeps the rest of your email landing. Measure it in Metabase from engagement data synced into a database (Outreach, Salesloft, Apollo, Mixmax, and others).

TL;DR — Bounce rate = bounced ÷ sent. Separate hard bounces (dead addresses, the real problem) from soft bounces (temporary), watch it by sender and domain, and act before it hurts deliverability.

How is bounce rate defined?

The formula is simple: bounced ÷ sent, over a fixed window. What matters is what you count as sent and how you classify a bounce:

  • Sent — messages that left your system. Don't include drafts or skipped steps.
  • Bounced — messages returned as undeliverable, split into hard and soft.

Hard vs. soft bounces

  • Hard bounces — permanent failures (address doesn't exist, domain invalid). These are the real problem: they signal bad list data and damage sender reputation. Keep hard bounce rate low (commonly under ~2%).
  • Soft bounces — temporary failures (mailbox full, server down). Usually retried automatically; a persistent soft bounce should be treated like a hard one.

Report the two separately. A blended bounce rate can look fine while a spike in hard bounces quietly wrecks deliverability.

What data does bounce rate need?

  • A messages/activity table with a sent_at timestamp and delivery status.
  • A bounce type (hard/soft) where the tool provides it.
  • The recipient domain, to catch domain-level deliverability issues.
  • Segmentation columns: sender, sequence, and list source.

SQL patterns

Bounce rate by monthPostgreSQL
SELECT
  date_trunc('month', m.sent_at) AS month,
  COUNT(*)                                         AS sent,
  COUNT(*) FILTER (WHERE m.status = 'bounced')     AS bounced,
  ROUND(
    100.0 * COUNT(*) FILTER (WHERE m.status = 'bounced')
      / NULLIF(COUNT(*), 0),
    2
  ) AS bounce_rate_pct
FROM modeled_messages m
WHERE m.sent_at >= CURRENT_DATE - INTERVAL '12 months'
GROUP BY 1
ORDER BY 1;
Hard vs. soft bounce rate by senderPostgreSQL
SELECT
  u.name AS sender,
  COUNT(*)                                              AS sent,
  COUNT(*) FILTER (WHERE m.bounce_type = 'hard')        AS hard_bounces,
  COUNT(*) FILTER (WHERE m.bounce_type = 'soft')        AS soft_bounces,
  ROUND(
    100.0 * COUNT(*) FILTER (WHERE m.bounce_type = 'hard')
      / NULLIF(COUNT(*), 0),
    2
  ) AS hard_bounce_rate_pct
FROM modeled_messages m
JOIN modeled_users u ON u.id = m.sender_id
WHERE m.sent_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY u.name
ORDER BY hard_bounce_rate_pct DESC;

Pitfalls

Blending hard and soft bounces.→ Soft bounces are often temporary; hard bounces signal bad data. A blended rate hides the metric that actually threatens deliverability.
Ignoring domain-level spikes.→ A bounce spike concentrated on one recipient domain (or from one sending domain) points to a specific fix — filtering to a total misses it.
Counting skipped or draft messages as sent.→ Only messages that actually left your system belong in the denominator, or the rate looks artificially low.
Reacting too late.→ Bounce rate is a leading indicator of deliverability damage. Set a threshold and alert before reputation drops.

Where this metric applies

Analytics

Metrics

FAQ

What's a good email bounce rate?
Keep hard bounces low — commonly under about 2%. What matters most is the hard bounce rate and its trend; a rising hard bounce rate signals bad list data and threatens deliverability.
What's the difference between hard and soft bounces?
Hard bounces are permanent failures (the address or domain doesn't exist) and signal bad data. Soft bounces are temporary (mailbox full, server down) and are usually retried. Report them separately.
Why does bounce rate matter beyond one campaign?
High bounce rates damage sender reputation, which reduces inbox placement for all your future email. It's a leading indicator worth alerting on, not just a per-campaign stat.