# List hygiene and list-unsubscribe

> Keep a list healthy with a sunset policy for inactive readers, make unsubscribing easy with one-click headers, and repair messy data in Broadcast.

Source: https://sendbroadcast.net/university/deliverability/list-hygiene-and-unsubscribe

A clean list beats a big list. Readers who never open, addresses with typos from signup, and people who cannot find the unsubscribe link all drag your reputation down. In this lesson you build a sunset policy, make leaving easy, and clean up messy data.

## Why quiet readers hurt you

Mailbox providers watch engagement. When a large share of your list deletes your mail unread, or never opens it, providers learn that your mail is not wanted, and more of it goes to spam, also for the readers who do want it.

Old addresses carry another risk. Some mailbox providers turn long-abandoned addresses into spam traps. Mail to those tells providers you do not clean your list.

So removing people who stopped reading is not a loss. It protects your reach to everyone else.

## Build a sunset policy

A sunset policy decides when you stop mailing someone. A simple one in Broadcast:

1. **Find the quiet readers.** Open **Segments**, click **New Segment**, and start from the **Inactive (90 days)** template: people who have not opened anything in 90 days. Pick a window that fits how often you send.
2. **Try once to win them back.** Build a short sequence, two or three emails, that asks plainly whether they still want your mail. Use the segment as the sequence's **Segment trigger**, so people enroll as they match.
3. **Branch on the answer.** Add a condition, such as "any email clicked" with a delay of a week. People who click stay. On the other branch, add a **Make subscriber inactive in this channel** step. It stops all email to them in the channel.
4. **Keep them out of campaigns in the meantime.** On your broadcasts, add the inactive segment under **Exclude**.

Segment trigger: Inactive (90 days)

Send two or three emails that ask if they still want your mail

After a week: any email clicked?

### Clicked

1. They stay on the list

### Not clicked

1. Make subscriber inactive in this channel

The sunset policy as one sequence.

Remember that opens are not exact. Apple Mail Privacy Protection records opens nobody made, and some clients block the pixel. A rule based on clicks is stricter. A rule based on opens is gentler. Both are better than no rule.

## Make leaving easy

It sounds backwards, but an easy unsubscribe protects you. A reader who cannot find the way out clicks "Report spam" instead, and a complaint costs you far more than an unsubscribe.

Two headers make leaving easy:

- **`List-Unsubscribe`** gives mail apps a URL for unsubscribing. Gmail, Yahoo, Apple Mail and Outlook use it to show an **Unsubscribe** button next to your name.
- **`List-Unsubscribe-Post: List-Unsubscribe=One-Click`** makes that button work in one click, defined in RFC 8058. The mail app sends a POST to the URL, and the person is unsubscribed without opening a page.

1. **Reader clicks Unsubscribe** Next to your name in the mail app
2. **Mail app sends a POST** To the unique, signed URL
3. **Unsubscribed**

One-click unsubscribe. The reader never opens a page.

Since 2024, Gmail and Yahoo require one-click unsubscribe on bulk marketing mail, a visible unsubscribe link in the body as well, and opt-outs processed within two days.

## How Broadcast handles unsubscribes

Broadcast adds both headers by default on each email server, with a unique, signed URL per subscriber. Check it on each server under **Settings → Email Servers**: **Include unsubscribe header** should be on for any server that sends marketing. Turn it off only on a server dedicated to transactional mail.

The channel's email footer adds the visible link to every broadcast and sequence email. Set it under **Sender Details** with `{{ unsubscribe_url }}`, next to your physical address.

**Require confirmation**, under **Settings → Unsubscribe Page**, solves a modern problem. Some email security tools open every link in an email to scan it. Without confirmation, those scanners would unsubscribe people who never clicked. With it on, the link in the body shows a **Yes, unsubscribe** page first. The one-click button in Gmail and Yahoo still unsubscribes at once, because it is the reader's own request and scanners do not press it.

![The Unsubscribe Page editor with Require confirmation ticked on the left, and on the right a preview with a confirm button and a stay subscribed button](https://sendbroadcast.net/assets/docs/unsubscribe-settings/unsubscribe-page-editor-0f026c17.png)

Require confirmation, with a preview of the page people see. This channel writes in German.

Give people a softer exit too. With topics, the unsubscribe link on a topic email turns off only that topic, and the preference page at `{{ preferences_url }}` lets readers choose what they get. Many people want less email, not none.

Warning

An unsubscribe must stick. If a later import or API sync subscribes the person again, complaints follow. Broadcast’s suppressions survive a reactivation, but an API create for an existing address does resubscribe it, so check your sync code.

## Clean up messy data

Lists collect damage over the years: addresses with stray spaces or capitals, duplicates, dates in the wrong format. Open **Settings → Maintenance**. Each task scans the whole channel first, shows what would change, and changes nothing until you click apply.

![The Maintenance page with tasks to repair dates, tidy email addresses and trim stray spaces, each with a Scan and Check button](https://sendbroadcast.net/assets/docs/university/settings-maintenance-9334f5c2.png)

Each task starts with Scan and Check, so you see the changes before you apply them.

- **Tidy subscriber email addresses** trims spaces and lowercases addresses. When two records turn out to be one person, the extra copy is deactivated, so that person stops getting your mail twice.
- **Trim stray spaces from subscriber data** fixes names and custom fields, so segment rules match.

An apply cannot be undone, so read the scan first.

To remove a known set of addresses, such as a list of bad addresses from a validation service, use **Deactivate subscribers** in the menu next to **Add subscriber**. Upload a plain text file, one address per line, up to 5,000 per file.

## A routine that works

- After every send: check **Bounce** and **Spam** on the broadcasts list.
- Every month: review the inactive segment and run the re-engagement sequence.
- Every quarter: run the maintenance scans.

1. **Every send** Check Bounce and Spam
2. **Every month** Review the inactive segment, run the re-engagement sequence
3. **Every quarter** Run the maintenance scans

The whole routine.

See [the List-Unsubscribe header](/list-unsubscribe-header) and [Unsubscribe settings](/docs/unsubscribe-settings).

## What you learned

- Readers who never engage hurt delivery to everyone else. Sunset them.
- Use the Inactive segment, a re-engagement sequence and the **Make subscriber inactive in this channel** step.
- One-click unsubscribe headers are on by default in Broadcast and required by Gmail and Yahoo.
- Require confirmation protects you from link scanners, and **Settings → Maintenance** repairs messy data.

## Quiz
1. What does the List-Unsubscribe-Post header add?
   - A visible unsubscribe link in the footer
   - One-click unsubscribe from the mail app's own button, with no page to visit (correct)
   - A confirmation email after someone unsubscribes
   With List-Unsubscribe-Post, the mail app's Unsubscribe button sends a POST that unsubscribes the person in one click.
2. Why does Require confirmation exist on the unsubscribe page?
   - To make unsubscribing harder
   - Gmail requires a confirmation page
   - To slow down the one-click button
   - Some security scanners open every link, which would unsubscribe people who never clicked (correct)
   With it on, the link in the email shows a confirm page first. The one-click button in Gmail and Yahoo still unsubscribes at once.
3. What is a good way to start a sunset policy in Broadcast?
   - A segment such as Inactive (90 days), a short re-engagement sequence, then exclude or deactivate those who stay silent (correct)
   - Delete every subscriber who did not open the last email
   - Send more often to inactive readers
   Give quiet readers a chance to re-engage, then stop mailing the ones who do not respond.
