Complaint rate alerting at threshold of 0.1% or less
Why it matters
Google's 2024 bulk sender guidelines mandate that senders maintain complaint rates below 0.10% to avoid inbox filtering at Gmail — the platform receiving roughly one-third of all consumer email in the US. Complaint rates above 0.30% result in throttling or blocking. Without code that monitors this rate and fires an alert before crossing the threshold, the first indication of a problem is often a sharp drop in open rates, by which point Gmail's filtering is already active and may persist for days or weeks after the rate is corrected. The 0.08% early-warning threshold gives an action window before the hard limit is breached.
Severity rationale
Medium because complaint rate spikes are frequently triggered by specific campaigns rather than systemic failures, and an alert at 0.08% gives time to pause the offending campaign before Gmail's 0.10% threshold triggers automatic filtering.
Remediation
Compute complaint rate over a rolling 24-hour window and fire alerts at two thresholds — a warning at 0.08% (pre-threshold) and a critical at 0.10% (Google's hard limit). Run this check from a scheduled job or after each FBL event batch:
const COMPLAINT_RATE_WARNING = 0.0008 // 0.08%
const COMPLAINT_RATE_CRITICAL = 0.001 // 0.10%
export async function checkComplaintRate(domain: string): Promise<void> {
const since = new Date(Date.now() - 24 * 60 * 60 * 1000)
const [sent, complaints] = await Promise.all([
db.emailLog.count({ where: { fromDomain: domain, sentAt: { gte: since } } }),
db.complaintEvent.count({ where: { domain, receivedAt: { gte: since } } })
])
if (sent === 0) return
const rate = complaints / sent
if (rate >= COMPLAINT_RATE_CRITICAL) {
await sendAlert({ severity: 'critical', message: `Complaint rate ${(rate * 100).toFixed(3)}% for ${domain} — above Google's 0.1% limit` })
} else if (rate >= COMPLAINT_RATE_WARNING) {
await sendAlert({ severity: 'warning', message: `Complaint rate ${(rate * 100).toFixed(3)}% for ${domain} — approaching threshold` })
}
}
Persist the computed rate to DomainReputation.spamRate so the check feeds the trend graph alongside Postmaster Tools data.
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 Deliverability Engineering Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- external · google-bulk-sender-guidelines-2024 — Google Bulk Sender Requirements (0.1% complaint threshold)
- iso-25010:2011 · reliability — ISO 25010 Reliability characteristic
Taxons
History
- 2026-04-18·v1.0.0·Initial import from deliverability-engineering·automated