Hard bounce results in immediate permanent suppression
Why it matters
SMTP 5xx codes (550, 551, 553, 554) are permanent rejections from the receiving server, per RFC5321-s3.6 — the address does not exist, the mailbox is closed, or delivery is permanently refused. Continuing to send to permanently invalid addresses does two things: it increases your hard bounce rate (ISPs track this per IP and per domain), and it confirms to ISPs that you are not maintaining list hygiene. Google and Yahoo both publish hard bounce rate thresholds; exceeding them triggers increasingly aggressive filtering that affects deliverable addresses in the same campaign. Suppression must be immediate, not batched.
Severity rationale
High because accumulating hard bounces from repeated sends to invalid addresses directly degrades IP and domain reputation metrics tracked by major mailbox providers, leading to inbox filtering that affects legitimate recipients.
Remediation
Handle hard bounce events in your ESP webhook immediately — upsert a suppression record and check it on every subsequent send attempt. The suppression check must happen before queuing the message, not at delivery time:
export async function handleBounceEvent(event: BounceEvent): Promise<void> {
const isPermanent =
event.type === 'hard' ||
event.bounceCode >= 550 ||
event.reason?.toLowerCase().includes('does not exist')
if (isPermanent) {
await db.suppression.upsert({
where: { email: event.email.toLowerCase() },
update: { reason: 'hard_bounce', updatedAt: new Date() },
create: {
email: event.email.toLowerCase(),
reason: 'hard_bounce',
source: 'bounce_webhook',
suppressedAt: new Date()
}
})
}
}
export async function isAddressSuppressed(email: string): Promise<boolean> {
return (await db.suppression.findUnique({
where: { email: email.toLowerCase() }
})) !== null
}
Call isAddressSuppressed as part of the pre-send check, before the job enters the queue. Cross-reference deliverability-engineering.bounce-fbl.soft-bounce-escalation — soft bounces also require escalation logic to eventually reach permanent suppression.
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 · RFC5321-s3.6 — SMTP 5xx Permanent Negative Completion — hard bounce codes
- iso-25010:2011 · reliability.fault-tolerance — ISO 25010 Fault Tolerance sub-characteristic
Taxons
History
- 2026-04-18·v1.0.0·Initial import from deliverability-engineering·automated