Every commercial email includes one-click unsubscribe in header and body
Why it matters
CAN-SPAM §5, GDPR Art. 21, and Gmail/Yahoo's 2024 bulk sender requirements all mandate a working one-click unsubscribe path — RFC 8058 specifically requires both the List-Unsubscribe and List-Unsubscribe-Post headers plus a POST endpoint. Missing either header or burying the body link in illegible gray text is a direct regulatory violation that exposes the business to FTC enforcement action and causes Gmail to route bulk sends to spam, tanking deliverability for every user on the list. The business impact compounds: a single CAN-SPAM complaint can trigger an FTC investigation; a spam classification tanks open rates across the entire subscriber base.
Severity rationale
Critical because missing unsubscribe headers violates CAN-SPAM §5, GDPR Art. 21, and 2024 Gmail/Yahoo bulk sender policy simultaneously, risking FTC enforcement and domain-level spam classification that destroys deliverability for all users.
Remediation
Add List-Unsubscribe and List-Unsubscribe-Post headers to every commercial email send call, and implement both GET and POST endpoints at /api/unsubscribe.
// lib/email.ts — add unsubscribe headers to every marketing send
export async function sendMarketingEmail({ to, subject, html, unsubscribeToken }: {
to: string; subject: string; html: string; unsubscribeToken: string
}) {
const unsubUrl = `https://example.com/api/unsubscribe?token=${unsubscribeToken}`
return resend.emails.send({
from: 'Your Product <hello@example.com>',
to, subject, html,
headers: {
'List-Unsubscribe': `<${unsubUrl}>`,
'List-Unsubscribe-Post': 'List-Unsubscribe=One-Click',
},
})
}
The POST handler (RFC 8058 one-click) must suppress without requiring login. Store the unsubscribe token on the subscriber record, not the campaign.
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 Email & SMS Compliance Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- external · CAN-SPAM-§5 — CAN-SPAM Act Section 5 — Commercial Email Requirements
- gdpr · Art. 21 — Right to object — withdrawal of consent / opt-out
- external · RFC-8058 — RFC 8058 — One-Click Unsubscribe (List-Unsubscribe-Post)
- eprivacy · Art. 13 — ePrivacy Directive — unsolicited communications opt-out
Taxons
History
- 2026-04-18·v1.0.0·Initial import from email-sms-compliance·automated