Deliverability metrics are dashboarded
Why it matters
Bounce rate, complaint rate, and open rate are the three signals ESPs use to determine whether your sending domain is trustworthy. When these metrics are not stored persistently and surfaced in a dashboard, deliverability collapse happens silently — Gmail and Yahoo start routing to spam, complaint rates climb past the 0.1% threshold, and you have no historical trend to show when you contact ESP support. CWE-391 (insufficient logging) at the operational layer means you cannot distinguish a transient spike from a structural reputation problem. Without queryable trend data, you are flying blind into potential domain blacklisting.
Severity rationale
Critical because unmonitored bounce and complaint rates can trigger ESP account suspension and domain blacklisting before any operator notices the problem.
Remediation
Create a persistent metrics table and write a query or dashboard panel that shows trend lines per signal. In your webhook handler (e.g., src/app/api/webhooks/email/route.ts), persist each event with enough context to aggregate later:
// On bounce webhook
await db.emailMetrics.create({
data: {
event: 'bounce',
campaign_id: payload.campaignId,
recipient_domain: domain,
recorded_at: new Date()
}
})
Query that table daily to produce bounce rate (bounces / sends) and complaint rate (complaints / sends) trend lines. Stdout logging does not qualify as persistent storage — the data must survive a process restart.
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the Operational Resilience (Email) Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- cwe · CWE-391 — Unchecked Error Condition — deliverability events discarded after processing with no persistent storage
- iso-25010:2011 · reliability.operability — Reliability / Operability — dashboarded metrics enable operator awareness
Taxons
History
- 2026-04-18·v1.0.0·Initial import from operational-resilience-email·automated