← Sendly Blog

Unsubscribe Handling That Protects Your Domain

An unsubscribe link that renders correctly and does nothing is worse than none at all, because the recipient who tried to leave reaches for the spam button instead. The failure is common and invisible from the outside.

  • Deliverability
  • Compliance

Unsubscribe is treated as a compliance checkbox and it is a deliverability control.

The reasoning is direct. A recipient who wants your email to stop will find a way to make it stop. If the obvious route works, they use it and you lose one address. If it does not, they use the spam button, and spam complaints are the signal mailbox providers are least forgiving about. Google asks senders to keep their spam rate below 0.1% and never let it reach 0.3%.

Every unsubscribe you make easy is a complaint you did not receive.

The Two Mechanisms

There are two, and both should be present.

The visible link. In the footer, obvious, and phrased so a person scanning for it finds it. This is what a recipient reaching for the exit will look for.

The headers. List-Unsubscribe, which mailbox providers read and show as a native unsubscribe control near the top of the message, so recipients do not have to scroll for the footer.

The header matters more than most senders realize, because it puts a legitimate opt-out right next to the spam button, at the moment the recipient is choosing between them.

Then there is one-click unsubscribe, defined in RFC 8058. You add a second header, List-Unsubscribe-Post: List-Unsubscribe=One-Click, next to an HTTPS unsubscribe link. The mailbox provider sends a POST request to that link on the recipient’s behalf, and your DKIM signature has to cover both headers. This is not a nice-to-have. Since 2024, Google and Yahoo require it on marketing mail from bulk senders, meaning anyone sending around 5,000 or more messages a day to their users. Yahoo also asks for a visible link in the body.

The Failure Nobody Sees

A link that renders and does not work.

This is the version worth dwelling on because it is invisible from every angle except testing. The email looks correct. The footer contains an Unsubscribe link. Nobody who sends the campaign ever clicks it, because they are not trying to unsubscribe from their own mail.

A common version: the footer link points at a page that displays the campaign in a browser instead of removing anyone. A recipient clicking it goes nowhere useful. If the header is also missing on that send, they have no working way out at all.

That can run for months. A broken unsubscribe produces no error, no bounce, and no alert. It produces spam complaints, which look like a targeting problem, so the usual way it gets found is someone testing the link or reading the code.

The Second Failure: Follow-Ups

Follow-up sending is often built as a separate path from the initial send.

That means protections applied to the first email do not automatically exist on the others. It is easy to end up with the List-Unsubscribe header on the main send path and missing from the follow-ups entirely.

If an automated sequence is four emails, three of them are follow-ups. A gap on that path covers most of the sequence, and it is the part where a recipient is most likely to want out.

Test the follow-ups specifically. Do not assume they inherit anything.

The Third Failure: Suppression Scope

An unsubscribe has to apply everywhere, not just to the campaign it came from.

Someone who opts out of one mailing and receives a different one from the same sender has not been unsubscribed in any meaningful sense, and they will treat the second message accordingly. Suppression belongs at the level of the sending organization.

This gets missed when campaigns are managed as independent lists, which is how many tools work by default.

How to Test It Properly

Four checks, all of which require actually doing it rather than looking.

1. Click the link in a real send. Not a preview. A campaign email delivered to an address you control. Confirm you land somewhere that says you were removed.

2. Confirm the removal in the data. The page saying “unsubscribed” is not evidence the record changed. Check the record.

3. Check the headers on a delivered message. View the source and confirm List-Unsubscribe and List-Unsubscribe-Post are present with a working HTTPS URL. Do this on a follow-up as well as a regular campaign.

4. Send yourself the next campaign. Confirm the suppression held across campaigns, not just within one.

Run all four when you change sending tools, and again after any change to how mail is sent. This is the kind of thing that breaks silently during unrelated work.

Do Not Rely on a Reply Instruction

“Reply STOP and I will not contact you again” is legal. CAN-SPAM allows a return email address as the opt-out mechanism.

It is still a poor substitute for a link. It asks the recipient to compose a message, it depends on someone reading and acting on that reply, and it leaves the recipient with no confirmation. It also does nothing for the one-click header the big mailbox providers expect. Someone who wants out and is offered only this will often choose the faster option, which is reporting the message.

Include it as a courtesy if you like. It does not replace a link.

Remove Immediately, Not Eventually

The legal window under CAN-SPAM is 10 business days. Google recommends honoring unsubscribes within 48 hours, and Yahoo asks bulk senders to do it within 2 days. Operate on zero.

There is no benefit to a delay and there is a real cost, because a recipient who unsubscribes and receives another message has been given a reason to complain about a sender they had already dismissed.

The same goes for hard bounces and anyone who replies asking to stop in plain language rather than clicking anything. A reply saying “please remove me” is an opt-out regardless of the mechanism it arrived through.

A Simple Rule of Thumb

Click your own unsubscribe link, on a real send, on a follow-up, once a quarter.

That single habit catches the failure described in this post, which is otherwise silent.

Final Thoughts

Unsubscribe handling is infrastructure rather than a formality, and it fails quietly.

Two mechanisms, present on every send path including follow-ups, suppressing across campaigns, honored immediately, and tested by someone actually clicking it. The cost of getting this wrong is not a fine. It is a complaint rate that looks like a targeting problem and a sending domain nobody can explain the decline of.

The legal framing is in What CAN-SPAM Actually Requires.

Sendly adds an unsubscribe link to every campaign automatically, and an unsubscribed subscriber stops receiving campaigns from your organization, not just the one they clicked from. Test it anyway. That is the point of this post.

Send campaigns that land. Track every click.

Keep sending when your provider stops, and see who opened it.

No credit card · Bring your own SMTP · 500 subscribers free