Solo ads sellers / Blog / One click

Solo ads blog

The unsubscribe has to finish inside the mailbox

Answer The one-click exit is two mail headers and a POST the mailbox can finish. RFC 8058, published in January 2017, says a sender that wants that exit puts one List-Unsubscribe header containing an https URI, and one List-Unsubscribe-Post header whose only value is List-Unsubscribe=One-Click. A valid DKIM signature has to cover both. A landing page that waits for a second click is the delay the document was written to get past.

A green oval cell with two flagella and a red eyespot beside a gray neuron struck by a blue beam, on a dark background
The light lands on one cell. The other one is just sitting there.

The note that started this: Signaling One-Click Functionality for List Email Headers, John Levine and Tobias Herkula, RFC 8058, January 2017.

The note that started this is John Levine and Tobias Herkula, Signaling One-Click Functionality for List Email Headers. It is a standards-track specification. It is about the header, not about a sentence in the footer. A solo ad is a broadcast letter to a list you do not own. The people on that list did not ask for your offer by name. The way they leave has to work when they are annoyed, and it has to work when they are not sitting on a website.

What does RFC 8058 require a sender to put in the message?

A mail sender that wants one-click places one List-Unsubscribe header and one List-Unsubscribe-Post header. List-Unsubscribe must contain one https URI. List-Unsubscribe-Post must be the single pair List-Unsubscribe=One-Click. A valid DKIM signature must cover both headers.

Those are the sender rules in sections 3.1 and 4. List-Unsubscribe may also carry a mailto address. It may not skip the https URI. The second header is not a slogan you drop into the copy. The syntax in section 5 allows exactly one argument, List-Unsubscribe=One-Click.

The URI has to identify the recipient and the list by itself. The document says there is no provision for extra POST arguments, so one-click cannot stop and ask which address, or which list. Encode that in the URI. Prefer an opaque or hard-to-forge piece, and have the server check it. The reason is an attack the authors name: someone mails spam whose unsubscribe points at a victim list, and the victim's readers get removed as a side effect of reporting that spam, or the attacker POSTs at the server directly.

The POST must not carry cookies, HTTP authorization, or other context from a browser session. The unsubscribe is not a continuation of a shopping visit. A server that only removes people who are already logged in will miss the request a mailbox sends.

DKIM is not optional in this version of the document. The only supported authentication identifier is DKIM. The signature's h= tag must include List-Unsubscribe and List-Unsubscribe-Post. If that signature is missing, a mail receiver should not offer one-click on that message. A seller who says the domain is authenticated, and cannot say that these two headers sit inside the signature, has not met the document.

The sender also must not answer the POST with a redirect. The document says redirected POST actions have historically not worked reliably, and many browsers have turned redirected HTTP POSTs into GETs. The removal has to happen on the request that arrived.

Why does the document refuse a confirmation page for that click?

Anti-spam software fetches header URLs on its own, so senders added a confirmation step to avoid accidental unsubscribes. That step blocks a mailbox that is unsubscribing someone who reported junk, or a closed mailbox, because nobody is there to click the second button.

That is the motivation in section 1, in a sentence you can send a seller. The older List-Unsubscribe header, from RFC 2369, could already hold an https URI. Software started fetching URLs in headers with no person involved. A sender could not tell a filter's fetch from a reader's click. The defense was a landing page with a confirm button. A person can press it. A filter will not. The price is that leaving is no longer one action.

The authors are plain about why a list operator should care. Many mail systems let a recipient report mail as spam or junk, and mail that is often reported tends to arrive poorly. If the exit is difficult, the alternative they name is that the recipient reports the mail as junk until it stops appearing. Recipient systems know their users do not draw a clean line between unsubscribe and junk. Some of them will tell a mailer they already trust when a user hits junk, so the mailer can remove the address. The authors say that private arrangement does not scale to a large number of small mailers. This specification needs no prearrangement. The message carries what the mailbox needs.

Two cases have nobody left to confirm. A junk report that the mailbox turns into an unsubscribe never opens the mailer's site. A mailbox that has been closed or abandoned has nobody home. In both, software must not have to read a confirmation page and guess which button is the real one. The POST is how the sender recognizes that request and finishes it without the recipient doing anything else.

The receiver's half is short. It POSTs to the https URI. The body is the same pair, List-Unsubscribe=One-Click. The content type should be multipart/form-data, or it may be application/x-www-form-urlencoded. The receiver must not POST without user consent. How that consent is collected is outside the document. The goal the authors wrote down is that a person can leave inside the mail program, and the receiving system can finish the request in the background.

This document does not replace RFC 2369. Other uses of a List-Unsubscribe URI stay as they were. A visible footer link can still exist for the person who is reading. It is not a substitute for the header when that person is never going to open your page.

What should a solo ad buyer ask about the exit before paying?

Ask whether the marketing mail carries List-Unsubscribe and List-Unsubscribe-Post, whether DKIM covers both, and whether a POST to that https URI removes the address without a login, a password, or a second confirm. A footer link that opens a form is a different exit.

Put those answers in the quote, next to the from-name and the domain. You are renting an hour of someone else's list. The readers who hate the hour will look for a way out. If the way out is a form, a login, or a page that asks whether they are sure, some of them will use the junk button instead. The document's point is that the junk button is what a hard unsubscribe competes with. The reputation that takes the hit belongs to the sender. On a solo, that sender is the person you paid.

You will not see the headers in a swipe pasted into a document. Ask for the header names off a recent marketing message from the same platform. A platform that sends real mail can do that in a minute. A platform that only prints the word unsubscribe in the footer, and then asks the reader to confirm, type an address, or sign in, is describing the landing page this specification exists because of.

If you sell the send, build the header before you sell the hour. One https URI that already knows the address and the list. An opaque token the server checks. No cookies on the POST. No redirect. DKIM that covers both header names. Honor the POST by removing the address, and do it without a second question, because the mailbox may be asking for someone who will never see your page. Keep the visible footer link for the person who is reading. The header is for the mailbox. The link is for the eyes. They are not the same control. The safe solo ads sellers page is the posture. This note is the header.

Then keep the rest of the desk in the same quote. The disclosure still sits next to a paid link, inside the letter. A testimonial in that letter is still an ad you are publishing, not a review you happened to host. The exit is today's fact. None of the three is a rank, a price, or a promise that anyone will click. When you buy solo ads, you are paying for a letter a specific list can receive and can leave. Solo ad pricing sits on the live slice, the niche, and the remedy if the mail is late or pointed at the wrong page.

After the send, do the ordinary check. Clicks on a link you control, and the broadcast record, should agree the same day. If the mail went as quoted, write the new subscribers the thing you promised, and give their later letters the same kind of exit. If it did not, use the refund sentence you wrote before the card. The rented hour ends. The people who could leave without a fight are the ones who might read the next honest letter.