Quick Answer

One-click unsubscribe requires two email headers: List-Unsubscribe (URL for unsubscribe) and List-Unsubscribe-Post (enables one-click via POST request). Gmail and Yahoo mandate this for [bulk senders](/email-deliverability/gmail-yahoo-bulk-sender-requirements) (5,000+/day). Most ESPs (Klaviyo, Mailchimp, SendGrid, ActiveCampaign) add these headers automatically. If using custom SMTP, you must add them yourself. Verify by viewing raw email headers — both headers must be present on all marketing email.

One-Click Unsubscribe: RFC 8058 Implementation Guide

By Braedon·Mailflow Authority·Email Deliverability·Updated 2026-03-31

What One-Click Unsubscribe Is

RFC 8058 defines a mechanism for recipients to unsubscribe from email lists with a single action — no forms, no confirmation pages, no login required.

When implemented correctly, Gmail displays an "Unsubscribe" link at the top of the email. The recipient clicks it. A POST request is sent to your server. The recipient is unsubscribed. Done.

The Required Headers

List-Unsubscribe: <https://yourdomain.com/unsubscribe?token=abc123>
List-Unsubscribe-Post: List-Unsubscribe=One-Click

Both headers are required. List-Unsubscribe alone (without List-Unsubscribe-Post) doesn't satisfy the one-click requirement — it's the older mailto-based unsubscribe.

How It Works

  1. Email includes both headers
  2. Gmail/Yahoo detects the headers and shows "Unsubscribe" button
  3. Recipient clicks "Unsubscribe"
  4. Gmail sends HTTP POST to your List-Unsubscribe URL
  5. Your server processes the POST and removes the recipient
  6. Recipient is unsubscribed — no confirmation page needed

The POST request body contains: List-Unsubscribe=One-Click

ESP Implementation Status

ESPAuto-implements?Notes
KlaviyoYesEnabled by default on all marketing emails
MailchimpYesEnabled by default
ActiveCampaignYesEnabled by default
SendGridYesAdded to marketing emails via API/SMTP
MailgunPartiallyMust configure headers in API or template
BrevoYesEnabled by default
MailerLiteYesEnabled by default
PostmarkYesOn Broadcast (marketing) streams
KitYesEnabled by default
GoHighLevel (LC Email)YesVia Mailgun integration
GoHighLevel (custom SMTP)NoMust add headers yourself

If Using Custom SMTP Without ESP Headers

When sending via custom SMTP (GoHighLevel with Mailgun/SendGrid, self-hosted, or application email), you must add the headers yourself:

In your email sending code:

headers['List-Unsubscribe'] = '<https://yourdomain.com/unsubscribe?token=UNIQUE_TOKEN>'
headers['List-Unsubscribe-Post'] = 'List-Unsubscribe=One-Click'

Your unsubscribe endpoint must:

  1. Accept POST requests
  2. Read the List-Unsubscribe=One-Click body
  3. Process the unsubscribe (remove from list or suppress)
  4. Return HTTP 200 OK

How to Verify

  1. Send a marketing email to your personal Gmail
  2. Open the email
  3. Click three dots → Show Original
  4. Search for List-Unsubscribe in the headers
  5. Verify both List-Unsubscribe: and List-Unsubscribe-Post: are present

If only List-Unsubscribe: exists (without List-Unsubscribe-Post:), the one-click mechanism isn't active — just the legacy mailto-based unsubscribe.

Common Issues

Headers present but Gmail doesn't show Unsubscribe button:

  • Gmail caches header evaluation. It may take several sends for the button to appear.
  • Your sender must have some established reputation — very new senders may not show the button immediately.

Custom SMTP with GoHighLevel missing headers:

  • GHL doesn't add List-Unsubscribe headers when using custom SMTP (unlike LC Email). You need your SMTP provider or sending script to add them.
  • Mailgun API: include headers in the API call
  • SendGrid API: use the mail_settings.unsubscribe object or custom headers

Unsubscribe URL doesn't work with POST:

  • The URL must accept POST requests, not just GET. Gmail sends a POST, not a browser redirect. If your endpoint only handles GET, the one-click fails.

Practitioner note: Most deliverability issues I investigate don't come down to one-click unsubscribe — the major ESPs handle it automatically. But for GoHighLevel agencies using custom SMTP, this is a real gap. GHL doesn't add the headers for custom SMTP. If you're sending marketing campaigns through GHL + Mailgun without adding these headers yourself, you're non-compliant with Gmail/Yahoo requirements.

Practitioner note: An easy way to make unsubscribe work better: honor unsubscribes instantly (not "within 10 business days"). The faster you process it, the lower your complaint rate. Someone who successfully unsubscribes doesn't report you as spam. Someone who tries to unsubscribe and still gets email does.

If you need one-click unsubscribe implemented for your custom SMTP or GoHighLevel setup, schedule a consultation.

Sources


v1.0 · March 2026

Frequently Asked Questions

Does my ESP add one-click unsubscribe automatically?

Most major ESPs do: Klaviyo, Mailchimp, ActiveCampaign, SendGrid, Mailgun, Brevo, MailerLite. Verify by sending a test email and checking raw headers for 'List-Unsubscribe' and 'List-Unsubscribe-Post'. If missing, contact your ESP or configure manually.

What do the headers look like?

List-Unsubscribe: <https://yourdomain.com/unsubscribe?id=abc123>, <mailto:[email protected]?subject=unsubscribe> and List-Unsubscribe-Post: List-Unsubscribe=One-Click. Both headers must be present for Gmail/Yahoo compliance.

Is one-click unsubscribe required for transactional email?

No. One-click unsubscribe is required for commercial/marketing email only. Transactional email (password resets, order confirmations, account alerts) doesn't need it. But any email with promotional content should include it.

What happens if I don't implement it?

Gmail and Yahoo may reject your marketing email, throttle delivery, or send it directly to spam. The enforcement has been active since 2024 and is becoming stricter. Non-compliance is a deliverability risk.

Do I still need a visible unsubscribe link in the email body?

Yes. The List-Unsubscribe header enables the mailbox provider's one-click UI (Gmail shows an 'Unsubscribe' button at the top of the email). You still need a visible unsubscribe link in the email footer for [CAN-SPAM compliance](/email-deliverability/can-spam-compliance-guide).

Want this handled for you?

Free 30-minute strategy call. Walk away with a plan either way.