Prompt
How do I monitor bounce rates and complaints for app email?
Latest observation
To monitor bounce rates and complaints for app email, set up both sending-provider metrics and your own tracking/alerting so you can react quickly.
1) Use your email service provider’s dashboards
If you send through providers like Amazon SES, SendGrid, Mailgun, Postmark, SparkPost, or SES/SMTP via ESP, they usually expose:
- Bounces
- Hard bounces: permanent failures (bad address, domain doesn’t exist)
- Soft bounces: temporary failures (mailbox full, message too large, server issues)
- Complaints
- Recipients marking your message as spam
- Sometimes also:
- Deliveries
- Opens/clicks
- Unsubscribes
- Suppressions / blocks
What to do
- Enable webhooks or event streaming
- Pull events into your database/logging/analytics system
- Build a dashboard with:
- Bounce rate = bounces / attempted sends
- Complaint rate = complaints / delivered emails
- Hard bounce rate and soft bounce rate separately
2) Track provider events in your app
Set up event handlers for:
bouncecomplaintdeliveryreject/block/deferred(provider-specific)
Store at least:
- recipient email
- message ID
- timestamp
- event type
- reason/category
- campaign/template name
- app/user ID
This lets you identify:
- problem domains (e.g. Gmail, Yahoo, Outlook)
- bad lists or stale addresses
- specific templates causing issues
- user segments with high complaint rates
3) Monitor standard inbox-provider thresholds
Watch these metrics closely:
- Complaint rate: keep it extremely low; even around 0.1% can be a warning sign
- Hard bounce rate: should stay low; spikes suggest list quality or signup issues
- Soft bounce rate: watch for temporary outages or throttling
If complaint rate rises, investigate:
- unclear unsubscribe path
- too-frequent emails
- confusing sender identity
- low-quality or purchased lists
- content mismatch with user expectations
4) Set alerts
Create alerts for:
- bounce rate above a threshold
- complaint rate above a threshold
- sudden spike compared with baseline
- provider suppression list growth
- repeated retries/soft bounces from one domain
Example alert rules:
- Hard bounce rate > 2% for 15 min
- Complaint rate > 0.1% for a campaign
- Soft bounce rate doubles week-over-week
5) Use feedback loops where available
Some mailbox providers offer feedback loop (FBL) programs that notify you when users mark emails as spam. Your ESP may already integrate these for you.
This helps you:
- suppress complainers immediately
- stop sending to users who don’t want the mail
- reduce future spam complaints
6) Segment by source and campaign
Measure bounce/complaint rates by:
- signup source
- country/region
- email domain
- email type (transactional vs marketing)
- template/campaign
- sending IP/domain
This makes it easier to spot:
- a signup form problem
- a bad import/list
- a broken template
- deliverability issues with a specific mailbox provider
7) Reconcile with your own logs
Provider data isn’t always enough. Keep your own send logs so you can answer:
- Which users were emailed?
- What message did they receive?
- Was the email sent successfully or suppressed?
- Did the user later complain or bounce?
8) Practical minimum setup
If you want a simple, effective setup:
- Send through an ESP with event webhooks
- Log every send and delivery event
- Capture bounce and complaint webhooks
- Build a daily dashboard:
- sends
- deliveries
- bounces
- complaints
- unsubscribe rate
- Alert on spikes and threshold breaches
- Automatically suppress hard bounces and complaints
If you want, I can also show you:
- a sample schema for storing bounce/complaint events,
- code examples for SES/SendGrid/Mailgun webhooks,
- or a dashboard metric design you can plug into Datadog/Grafana/SQL.