If you send any kind of marketing email, there’s a tiny deliverability lever that’s oddly underused: the List-Unsubscribe header.
It doesn’t make your copy better. It doesn’t fix bad targeting. But it does one very practical thing: it gives mailbox providers (and users) an easy, “official” way to unsubscribe without hitting Report spam.
What the List-Unsubscribe header is (in plain English)
The List-Unsubscribe header is metadata you add to your outbound email headers that says: “Here’s how to unsubscribe from this list.”
Supporting clients can show an in-UI unsubscribe link (for example, Gmail’s “Unsubscribe” next to the sender name). Clicking it is usually a 1–2-step flow.
Why you should care (deliverability math)
Inbox placement isn’t only about SPF/DKIM/DMARC. A huge signal is user behavior:
- Positive: opens, reads, replies, “not spam”, moving to primary.
- Negative: deletes without reading, “report spam”, blocks.
Most people don’t want to hurt you. They just want the emails to stop. If the easiest button is Report spam, that’s what they do.
It reduces spam complaints (the expensive kind)
A spam complaint is the worst possible “unsubscribe.” You lose a reader and you train the mailbox provider that your mail is annoying.
It protects your transactional stream
Even if you separate marketing and transactional traffic, reputations can still bleed together (shared domains, shared brand recognition, shared user behavior). Reducing complaints on your marketing mail helps your password resets and invoices land where they should.
How to implement it (practical checklist)
There are two common header values. Best practice is to include both:
- Mailto option — lets the client send an unsubscribe email.
- HTTPS option — a one-click unsubscribe endpoint.
Header example
Conceptually, you’re sending something like:List-Unsubscribe: <mailto:unsubscribe@yourdomain.com>, <https://yourdomain.com/unsubscribe?u=...>
If your ESP supports it (Resend, Postmark, SendGrid, etc.), look for a setting called List-Unsubscribe or “one-click unsubscribe”. If you’re sending yourself (SMTP/API), you’ll need to set the header explicitly.
The one-click requirement (don’t mess this up)
Some mailbox providers support “one-click unsubscribe” behavior that expects:
- A POST request to your unsubscribe URL (not a GET link people share)
- No login required
- No extra confirmation page
- A fast response (don’t queue it behind slow app logic)
Your unsubscribe endpoint should do the absolute minimum: mark the recipient as unsubscribed and return success.
Common mistakes (that create more complaints)
1) You only include a mailto link
The mailto option is better than nothing, but it’s slower and less reliable. Include an HTTPS one-click option too.
2) Your unsubscribe page looks like a phishing trap
Users are trained to be suspicious. Make your unsubscribe page obviously legit:
- Use the same domain and brand as the email
- Keep it minimal (no upsells)
- Confirm the address unsubscribed (partially masked is fine)
3) You keep sending for 7 days “because batches”
If you send daily, a slow unsubscribe can generate multiple complaints. If you need batching, do it for analytics, not for the actual suppression list.
What to do next
- Add
List-Unsubscribe(mailto + https) to your marketing stream. - Make unsubscribe one-click and instant.
- Keep your transactional email squeaky clean — strong authentication, clear subject lines, and trustworthy layouts.
If you’re tightening up your transactional system too, start here:
- SPF, DKIM, DMARC: the minimum setup
- Transactional email subject lines (examples + mistakes)
- React Email + Resend production checklist
And if you’d rather ship than debate, grab a production-ready template:
Transactional Email Templates for Next.js.