Email list cleaning: how to sunset inactive subscribers
By Rasket TeamLast updated 11 min read
Written for email marketers, deliverability specialists and small business owners
The short answer
Email list cleaning means blocking addresses that bounce or complain, then sunsetting subscribers who have stopped acting. Our rule: no click, purchase or login in 20 sends, then three emails a week apart asking if they want to stay, then opt out whoever doesn't answer. Ignore opens, which Apple Mail inflates. Opted-out people still get receipts.
Why email list cleaning matters
The mailbox providers ask for this. Google’s sender guidelines suggest unsubscribing recipients who don’t open or read your messages, and periodically asking whether they want to stay.[1] Yahoo asks senders to watch inactive recipients alongside bounces, and to send them a reconfirmation email from time to time.[3]
What happens to a list nobody cleans
- Placement drops. Yahoo: “Sending email to users who are not reading them, or who report them as spam, will harm your delivery metrics and reputation.”[3]
- Complaints rise. People who forgot signing up press “report spam”. Gmail and Yahoo publish a 0.3% ceiling, and Google asks you to stay under 0.1% (what counts).
- Mailboxes close. A Yahoo mailbox nobody signs in to for 12 months “stops receiving new emails”.[4] Google may delete a personal Google Account after two years without activity.[5] Mail to either then bounces.
- Abandoned addresses become traps. In a 2023 Spamhaus article written with Validity, “Recycled spamtraps are email addresses that were once valid but are now no longer used”, and it names “no sunset policy, poor bounce management” as signs of a list “in disrepair”.[6] A spam trap reads nothing, so it looks exactly like an inactive subscriber.
What hitting traps costs
The same article warns of “the threat of having your IP blocked if an email hits multiple traps, multiple times”.[6] Spamhaus’s blocklists page links a Reputation Checker for domains and IPs.[7] On a shared sending service the IP isn’t yours but your From domain is, so check the domain.
How to define an inactive subscriber
No mailbox provider publishes a number of days after which a subscriber counts as inactive. The definition is yours, and it follows from two things: which signals you can trust, and how often you send.
Use signals a person has to cause
- Activity outside email: a purchase, a booking (online, by phone or in person), a login, a reply. A mail client cannot fake these, and a purchase outranks any click.
- Clicks: a tracked click means a link was followed, usually by a person. The exceptions are below.
- Opens: the weakest signal since 2021, for the reason in the next section. Use them only to break a tie.
Discount clicks a scanner made
Company security filters follow links to test them. M3AAWG tells senders watching opens and clicks that “Large spikes may indicate security appliances giving your mail extra scrutiny.”[8] Traps rarely click: Spamhaus says of the pristine traps used in abuse investigations, “And yes, there could likely be a click”, but that they are “a small percentage overall”.[6] The user agent below is the name of the browser or app that made the click.
| What you see | Likely cause | Count it as activity? |
|---|---|---|
| A click within seconds of delivery | A filter testing links on arrival. A person has to open the email first. | No |
| Every link in the email clicked within a second or two | Software following all links. People click one or two. | No |
| A user agent that is empty or names no browser | Often a script, but some real apps send odd ones | Only with another clue |
| One link clicked minutes or hours later | Usually a reader, or a gateway checking the link as the reader clicks. A gateway can also re-check links later on its own, and that looks the same | Yes, except on a list of mostly company addresses (below) |
A scanner often sits in front of a real reader at a company, so never remove anyone because of one. Just don’t let a scanner’s click keep them on the active list.
On a list of mostly company addresses, a gateway’s click can keep a dead address active for years. There, send everyone through the re-engagement flow once a year unless they replied, logged in or bought in that time, and count only stay clicks that pass the checks above.
Count the window in sends, not days
Twenty sends is about five months of a weekly list: longer than a holiday or a busy season, so a real reader who skips a few issues still acts inside it. Ten would catch people on a long break; forty would keep dead addresses for most of a year.
| You send | 20 sends takes | Window to use |
|---|---|---|
| Twice a week | About 10 weeks | 90 days |
| Weekly | About 5 months | 180 days |
| Monthly | About 20 months | 12 months instead, so nobody waits more than a year |
The numbers on this page are our defaults, not published standards. The windows round up, so weekly and twice-weekly readers get at least 20 sends; monthly lists stop at a year. Addresses with no activity for two years or more skip the re-engagement and are opted out straight away: the longer an address sits unused, the likelier it is closed or has become a recycled trap, and two years matches the UK regulator’s advice that, if in doubt, you “consider refreshing consent every two years”.[9]
Why opens can’t tell you who is inactive
In June 2021 Apple announced Mail Privacy Protection, which “helps users prevent senders from knowing when they open an email, and masks their IP address”.[10] Apple’s privacy page explains how: Mail “downloads remote content in the background by default — regardless of whether you engage with the email”.[11] An open pixel is remote content, so it fires whether or not the person ever looked.
76.56%
Your own share may be far lower, on a business list for example, so check the mail clients in your own open data before you lean on it. A subscriber whose Apple Mail preloads every email “opens” everything and reads nothing, so an open-based rule keeps them for ever, and a rule like “no opens in 90 days” quietly exempts much of your list. When the feature shipped, Litmus wrote that any segmentation “based on the last open date are near useless” and that this is “especially critical for purging unengaged contacts.”[13]
Can you spot a proxy open?
Only roughly. A 2021 test on the iOS 15 beta found a bare “Mozilla/5.0” user agent and proxy addresses.[14] Apple says its relay passes “a generalized identity to the destination”.[11] Apple can change both, so an open never keeps anyone active on its own. Google’s guideline still says “open”, though the same page says “Google doesn’t track open rates”: it means a person reading, which your open data can no longer show.[1]
Segment your list by engagement
These windows suit a weekly list.
| Segment | Rule | What to do |
|---|---|---|
| Active | Clicked, bought, booked or logged in within 90 days | Mail normally. |
| Lapsing | No activity in 90–180 days | Mail normally, leading with your most-clicked content; they reach Inactive at 20 sends. |
| Inactive | No activity in 180 days to 2 years | Re-engage, then sunset. |
| Dormant | No activity in 2 years or more | Opt out now. No re-engagement. |
| Never engaged | No activity since signing up, 60+ days ago | Re-engage once (60 days is eight weekly issues ignored); if the address was never confirmed, stop sooner. |
| Undeliverable | Hard bounce, or repeated bounces | Suppress now. |
| Complained | Any spam report | Never mail marketing again. |
Gmail reports complaints only as totals per Feedback-ID, never by recipient,[2] so your Complained segment won’t hold Gmail users who reported you; the sunset is what catches them. When to drop an address that keeps bouncing is in hard bounce vs soft bounce.
Run a re-engagement campaign before you sunset
A re-engagement (or win-back) campaign asks the inactive segment one question: do you still want this? It is Google’s periodic confirmation.[1]
| When | Newsletter | Shop | |
|---|---|---|---|
| 1. Still interested? | Day 0 | The best of what they missed, one most-read piece | What is new since their last order |
| 2. Choose what you get | Day 7 | Monthly instead of weekly, or one topic only, on the preference page | Sales only, or new arrivals only, on the preference page |
| 3. Last email | Day 14 | “We’ll stop emailing you unless you click to stay.” | The same, plus an offer if you use them |
- Make staying one click. The “keep me subscribed” link is the signal you act on, so it must be a tracked link, not a reply you read by hand. If you have a page of your own, point the link at a Confirm button and count the press: a scanner follows links but rarely submits a form. Give everyone a week after email 3 before you sunset.
- Say what is happening in the subject. “Should we keep emailing you?” beats a discount dressed up as news, and CAN-SPAM requires a subject line that reflects the content.[15] The other legal rules are in the marketing email guide.
- Send it slowly. This is mail to your least engaged addresses, where traps hide. Send the most recently active first, a tenth of the segment a day, so a jump in bounces or complaints shows on one batch and you can stop before the rest. If one mailbox provider’s numbers jump and the others don’t, pause that provider’s share and check your placement there first.
- Keep any discount for the last email. An offer in every win-back teaches people to go quiet and wait for one.
- Run one win-back, not two. If your shop platform already sends one, switch one of them off, or the same person gets two “we miss you” emails.
Reading the result
Expect little revenue: these people weren’t buying from your emails anyway. Judge the flow by how many click to stay. Say 2,000 enter it and 160 click (8%): drop clicks that fail the scanner checks, if your data shows them, keep the rest, and opt out everyone else. If a large share clicks, your window was probably too short, or earlier newsletters were landing in spam so they never saw them. Check placement at each mailbox provider before you lengthen the window: a re-engagement email that lands where the newsletter didn’t is telling you about delivery, not interest.
Sunset: stop mailing the ones who don’t respond
Anyone who finishes the flow without a click leaves your marketing mail.
- Opt them out of marketing. Remove them from the topics or lists your campaigns go to, or mark the contact unsubscribed. Not suppression, and not deletion:
- Record why. Store the date and the reason (“sunset after re-engagement”), so a later import cannot quietly put them back.
| Action | What stops | Use it for |
|---|---|---|
| Opt out (unsubscribe) | Marketing only; receipts and resets still go | The sunset |
| Suppress | On many platforms, Rasket included, every email, receipts too | Hard bounces and spam complaints |
| Delete | Everything, and the next import can add them back | Erasure requests only |
How much it removes, and what changes
There is no published figure for how much of a list a first sunset removes. Your number is the size of your Inactive and Dormant segments, so count them before you start. The first sunset is the big one; after that, a rule that runs all the time moves a few people at a time. Your open and click rates rise straight away, because the same clicks are divided by fewer people, so track total clicks or orders per send as well. To see the effect on placement, watch your Gmail spam rate in Postmaster Tools for a month either side.
Doing it in Rasket
Rasket’s segments can’t filter on opens or clicks. A segment is a filter on contact fields, your own properties and topics, or a plain list you add people to.[25] So pick the route by who does the work:
- No developer: by hand, twice a year. It works at any size; over a few thousand contacts, a tool whose segments filter on clicks directly is less work and the better choice.
- A developer on the team: the webhook route, which also drops scanner clicks.
By hand, twice a year (any tool)
- Check Click tracking is on on your sending domain’s page. It is set per domain, and a domain added through the API starts with it off.[19]
- Find who is active. Each campaign’s report lists who clicked; in Rasket it is the Clicked tab. Go through the last six months of campaigns.[21] Export your contacts to a spreadsheet from the Audience page and mark those people, plus anyone who bought or booked from your own records.
- Make a Re-engage list. Import the unmarked rows back, choosing to update existing contacts and add them to an empty segment called Re-engage.
- Send the three emails as campaigns to Re-engage, a week apart.
- Opt out who didn’t click. A week after email 3, check the Clicked tab of all three emails, and import the rest again with an
unsubscribedcolumn set to true.
Selling through a store
The Shopify app is not in the Shopify App Store yet. Once it is, a connected store sends each order to Rasket as an event that updates the customer’s last order date, and a ready-made Win-back flow writes to customers 90 days after their last order.[26]
With a developer
Take the email.clicked webhook. Its click object carries timestamp, link and userAgent, and its email_id joins it to the email.delivered event, whose created_at is the delivery time (the casing is the payload’s own).[22] That makes “seconds after delivery” a subtraction (we drop clicks under a minute) and “every link at once” a group-by. Verify the webhook signature, skip event ids you have seen, keep the later of the stored and new click times, and hold a click whose delivered event hasn’t arrived yet. Write each real click to the contact, with logins and orders from your own app, and have a nightly job set lapsed, so the segment filters on lapsed and never needs editing.
curl -X PATCH "https://api.rasket.com/contacts/reader%2Bnews@example.com" \
-H "Authorization: Bearer $RASKET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"properties": {"last_click_at": "2026-10-17T09:30:00Z", "lapsed": false}}'The request is the contacts API’s update call, which accepts an email address in place of the contact id.[23]
In Rasket an unsubscribed contact gets no campaign while your app’s email still goes,[23] a hand-added suppression blocks every email,[20] and neither counts toward your plan’s contacts.[24]
Opt-out records vs deletion, and GDPR erasure
The UK Information Commissioner’s Office (ICO) says the right to object to direct marketing “is an absolute right”, but it “does not automatically mean that you need to erase the individual’s personal data”, and in most cases it is “preferable to suppress their details.”[16] Suppression means “keeping just enough information about someone to ensure you respect their preferences in the future, so you must not keep more than you need”.[17]
An erasure request needs an answer “without undue delay and at the latest within one month”.[18] The suppression list is the exception: “Because we don’t consider that a suppression list is used for direct marketing purposes, there is no automatic right for people to have their information on such a list deleted.”[17] So delete the profile and history, keep only the address on the suppression list, and tell the person what you kept and why. The ICO writes for UK law; check the regulator where your subscribers live.
Frequently asked questions
Do inactive or sunset contacts still cost money on Rasket?
Until they are opted out. A contact counts toward your plan when it is subscribed to at least one topic and not suppressed. Say you have 5,000 contacts and the sunset marks 1,200 unsubscribed: you count 3,800 from then on. If you pay for contacts above your plan, that charge uses the highest count you reached in the billing period, so the saving shows in full from the next period.
Which subject line works best for a re-engagement email?
There is no published best, and vendor averages come from lists unlike yours. Say plainly what is happening, test two subjects against each other, and judge on stay clicks, not opens. Mind the sample: with 1,000 people per version, 8% against 10% is not a reliable difference (a two-proportion z-test gives about 1.6, under the 1.96 needed at 95%).
Should I sunset a customer who buys from me but never clicks my emails?
No. A purchase is stronger evidence of interest than any click, and your email may be why they came back. Count orders as activity alongside clicks. Someone who never clicks and never buys is inactive, though, even if Apple Mail shows them opening everything.
Should I sunset people who only get transactional email from me?
No. A sunset applies to marketing mail. Someone who only receives receipts, shipping notices or password resets is not on your marketing list, and ignoring those messages says nothing about whether they want a newsletter. Leave their transactional mail alone, and never suppress them for being quiet.
Will an email verification service clean my list for me?
Only part of it. A verification service can flag addresses that do not exist and domains that do not accept mail. It cannot tell you who still wants your email, and a recycled spam trap accepts mail like any working address, so a check that the mailbox exists can pass it. You still need a sunset.
Should lapsing subscribers get fewer emails, or a separate sending stream?
Fewer, yes: each email to someone who has stopped reading is another chance for a complaint. A separate domain or IP just for them is a bigger step that most lists do not need, because the sunset moves them on within a few months.
Should the inactivity window differ by mailbox provider?
No. A window counts how many of your emails someone has ignored, and that does not change with where they read them. If one provider's numbers look worse during re-engagement, that is a placement problem at that provider, so check placement there rather than shortening the window for its users.
What happens if a sunset subscriber clicks an old email months later?
The click is recorded, but it does not put them back on your marketing list, and it should not: they did not answer when you asked. They come back by opting in again themselves, for example through your sign-up form, and that fresh consent is what makes mailing them right again.
Sources
26 primary sources, each read on the date shown.
See all sourcesHide sources
- 1.Email sender guidelines — Gmail Help, Google,
- 2.Gmail Spam Feedback Loop — Google Workspace Admin Help,
- 3.Sender Requirements & Recommendations — Yahoo Sender Hub,
- 4.Inactive mailboxes in Yahoo Mail — Yahoo Help,
- 5.Inactive Google Account Policy — Google Account Help,
- 6.Unravelling the myths of spamtraps clicking links (1 November 2023) — Spamhaus,
- 7.Blocklists — Spamhaus,
- 8.M3AAWG Sender Best Common Practices, Version 4.0 (updated August 2026) — M3AAWG,
- 9.How should we obtain, record and manage consent? — UK Information Commissioner’s Office,
- 10.Apple advances its privacy leadership with iOS 15, iPadOS 15, macOS Monterey, and watchOS 8 (7 June 2021) — Apple Newsroom,
- 11.Mail Privacy Protection & Privacy — Apple Legal,
- 12.Email Client Market Share (September 2026 data) — Litmus,
- 13.Apple’s Mail Privacy Protection Is Here: What It Actually Means for Email Marketers and What to Do Now (2021) — Litmus,
- 14.A Technical Take on iOS15 Mail Privacy Protection (29 July 2021, iOS 15 beta) — FreshInbox,
- 15.CAN-SPAM Act: A Compliance Guide for Business — U.S. Federal Trade Commission,
- 16.Right to object — UK Information Commissioner’s Office,
- 17.Respect people’s preferences (direct marketing guidance) — UK Information Commissioner’s Office,
- 18.Right to erasure — UK Information Commissioner’s Office,
- 19.Open and click tracking — Rasket,
- 20.Suppressions (API reference) — Rasket,
- 21.Broadcasts (API reference) — Rasket,
- 22.Events and webhook payloads — Rasket,
- 23.Contacts (API reference) — Rasket,
- 24.Billing (API reference) — Rasket,
- 25.Segments (API reference) — Rasket,
- 26.Shopify (integration guide) — Rasket,
Keep reading
- GuideHow to lower your email spam complaint rateWhat a good email spam complaint rate is, how Gmail and Yahoo measure it, how to read it on a small list, and the steps that bring it down.
- GuideHow to write a welcome email that gets readWelcome email best practices: what to write, how to protect the signup form from bots, example emails and sequences, and how to measure without opens.
- GuideHow to set up one-click unsubscribe (RFC 8058)Add the List-Unsubscribe and List-Unsubscribe-Post headers, sign both with DKIM and answer the POST: exact headers, a tested Node handler and curl checks.
- GlossarySpam trapA spam trap is an address that exists only to catch senders who mail people who never asked. Some are addresses created purely as bait; others are abandoned mailboxes that a provider has repurposed after years of inactivity. Mail to one is strong evidence that a list was bought, scraped or never cleaned, and the penalty is applied to the sender.
- GlossaryOpen trackingOpen tracking counts opens by putting a tiny invisible image in the message and watching for it to load. It is the weakest number in email. Many clients block images, and others fetch them through a proxy before anyone has read a word, so an open can be recorded that never happened and a real read can go unseen. Treat it as a trend.
- FeatureAutomationsWorkflows that run per contact: start on a custom event or a segment change, wait, branch, and send. Every run pins a version and is inspectable.
Written by the Rasket Team. First published ; last checked against its sources . See something out of date? How we correct guides.