---
title: "Email list hygiene: how to clean an old or imported list"
description: "Which addresses to remove and when, how to send safely to an old or imported list, and where re-engagement, role addresses and double opt-in fit."
url: https://www.unitpost.com/blog/deliverability/email-list-hygiene
section: Blog
updated: 2026-11-01
---
# Email list hygiene: how to clean an old or imported list

List hygiene means mailing only people who asked for your mail at addresses that still work. Stop mailing hard bounces, spam complainers and unsubscribes for good, ask inactive subscribers once whether they want to stay, be careful with role addresses like info@, and never send to bought or scraped lists. An old or imported list is the riskiest case: it has lost its bounce history, so send to the most recent slice first.

## Email list hygiene: how to clean an old or imported list

> Which addresses to remove and when, how to send safely to an old or imported list, and where re-engagement, role addresses and double opt-in fit.

Mailbox providers judge each send partly by who is on the list. Addresses that bounce, people who mark you as spam and people who never read your mail all count against the sending domain, and the effect lands on your next send, including password resets if they share the domain. List hygiene is the routine that keeps those addresses out.

### Remove these addresses and don't mail them again

- Hard bounces. A permanent failure such as `550 5.1.1` means the mailbox doesn't exist. Microsoft's Outlook.com sender policy (https://substrate.office.com/ip-domain-management-snds/postmaster/Policies) says a sender must not retry a message after a 5xx response, and must stop sending to a recipient after multiple non-delivery responses.
- Spam complaints. A recipient who reported you has told their provider the mail is unwanted. Mailing them again invites a second report.
- Unsubscribes. Yahoo (https://senders.yahooinc.com/best-practices/) requires bulk senders to honor them within 2 days, and Google (https://support.google.com/a/answer/14229414) recommends 48 hours.
- Addresses that keep soft-bouncing. One full mailbox is no reason to drop someone; a pattern is. The M3AAWG Sender Best Common Practices (https://www.m3aawg.org/senderbcp) recommend removing an address that bounces at least two times in a row over two weeks or more, and Google's sender guidelines (https://support.google.com/a/answer/81126) suggest unsubscribing recipients with multiple bounced messages.

Not every 5xx is about the address. Gmail's `550 5.7.1` (likely unsolicited) and `550 5.7.26` (unauthenticated) are refusals of your mail, and the mailbox behind them is usually fine. Deleting those recipients loses good people and leaves the cause in place. Email bounces explained (/blog/deliverability/email-bounce-codes-explained) sorts the codes by what you should do.

### Old and imported lists are the riskiest send

A list exported from another tool arrives without its history. The bounces, complaints and unsubscribes your previous provider recorded stay behind unless you bring them, so the first send from the new tool mails all of them again, from a domain the new provider has never seen.

Age makes it worse. Mailboxes get abandoned, and some abandoned addresses are later turned into spam traps. M3AAWG's spam trap practices (https://www.m3aawg.org/sites/default/files/legacy/m3aawg-spamtrap-operations-bcp-2016-08.pdf) recommend that a repurposed address reject mail as "no such user" for at least twelve contiguous months before it is used as a trap. A sender who processes bounces drops the address during that year. A list that sat unused through it never saw the bounces, and the trap is still on it. M3AAWG's sender guide counts not mailing addresses for a year or more as one of the marks of a dirty list.

Before the first send from an old or imported list:

- Export the previous tool's unsubscribes, bounces and complaints, and load them into your suppression list before you import any contacts.
- Drop every address you can't trace to a signup, purchase or account. If you don't know how it got there, the recipient doesn't either.
- Split the rest by the most recent date each person signed up, bought or clicked.
- Send to the newest slice first, in small batches, and read the bounce and complaint numbers before the next batch. How to warm up a new sending domain (/blog/deliverability/warm-up-new-sending-domain) covers the pacing.
- If the recent slices already produce hard bounces, the older ones are likely to produce more. Send those a re-permission message (below) or leave them out.

None of this rescues a list you bought, rented, scraped or had appended to your customer records. Google's guidelines (https://support.google.com/a/answer/81126) say not to purchase addresses, Yahoo (https://senders.yahooinc.com/best-practices/) says not to buy lists, and M3AAWG (https://www.m3aawg.org/senderbcp) treats email appending as abusive. Those people never asked to hear from you, and no amount of cleaning changes how they react.

Address verification services catch typos, dead domains and some nonexistent mailboxes. They can't tell you whether anyone opted in, and Microsoft's policy forbids namespace mining (checking whether addresses exist without sending to them) against Outlook.com servers. A verified list of people who never signed up still draws complaints.

### Re-engage or retire inactive subscribers

People who stopped reading are a quieter problem. Yahoo's best practices (https://senders.yahooinc.com/best-practices/) say that mailing people who don't read your mail harms your delivery metrics, and both Yahoo and Google (https://support.google.com/a/answer/81126) suggest periodically asking subscribers to confirm they still want it.

Define inactive against your own cadence. Someone who hasn't clicked through a year of weekly newsletters is gone; someone on a quarterly list who skipped one issue isn't. Prefer clicks, replies, purchases and logins over opens: some mail clients and security scanners load images automatically, so an open can be recorded with no person involved.

- Send the inactive segment one or two short messages asking whether they want to stay, with one obvious button.
- Keep everyone who clicks. Stop sending marketing to the rest.
- Send these in small batches. This segment holds most of your dead addresses and most of your complaint risk.
- Don't rerun the campaign every month on the same people. One attempt, then let them go.

### Treat role addresses with care

Addresses like info@, sales@, support@, abuse@ and postmaster@ belong to a team or a job. RFC 2142 (https://www.rfc-editor.org/rfc/rfc2142) defines the common ones: abuse@ is where people report misuse, and postmaster@ is the contact for a domain's mail service. Role addresses are often shared inboxes or distribution lists: nobody in particular agreed to your newsletter, one send can reach several people, and any of them can press the spam button.

Keep a role address when it subscribed through a confirmed opt-in, or when it is a real operational contact, such as billing@ for invoices. Leave out role addresses you can't trace to a signup, and never send marketing to abuse@ or postmaster@.

### Use double opt-in for marketing lists

Double (confirmed) opt-in means a new subscriber gets one email asking them to confirm and isn't added until they do. M3AAWG ranks it the best of three opt-in levels, Yahoo (https://senders.yahooinc.com/best-practices/) recommends it to reduce invalid recipients, and Google (https://support.google.com/a/answer/81126) says to confirm each address before subscribing it.

It stops two problems at the signup form: typos (gmial.com, a missing letter) that bounce or reach a stranger, and bots or attackers who submit other people's addresses. Send the confirmation right away, keep it plain and free of promotion, and store when and where each person confirmed. If a provider or a recipient asks how someone got on your list, that record is the answer.

The cost is that some people never confirm, so the list grows more slowly. Everyone left on it has shown that the address works and that they wanted the mail.

### Keep a suppression list, separate from your contacts

A suppression list is a block list checked on every send. You need it because contacts get re-imported: delete a bounced or unsubscribed contact, import the same CSV next quarter, and the address comes back as if nothing happened. A suppression entry survives the re-import.

> **How Unitpost handles this:** Hard bounces and spam complaints add the address to your workspace's suppression list automatically. It is enforced on every send (single, batch and campaign), including CC and BCC, and suppressed recipients are excluded from a send, not failed. A single soft bounce doesn't suppress an address; three in a row do, and so does one bounce from a domain that doesn't exist or accepts no mail. Complaint suppressions can't be removed self-serve. Paste your previous provider's unsubscribes and bounces into the Suppressions tab, or send them to `/api/v1/suppressions`, before you import contacts. If a campaign's hard bounces or complaints climb past a safe line while it sends, Unitpost pauses that campaign and tells you why. Sending to purchased, rented or scraped lists is against the Acceptable Use Policy (/acceptable-use) on every plan.

## FAQ

### Should I delete unsubscribed and bounced contacts from my list?

Keep them as suppressed instead. If you delete the contact and later import the same spreadsheet or sync the same CRM, the address comes back with no record that it bounced or opted out. A suppression entry keeps blocking it, and it is also your record of when the person opted out.

### Can I email customers who bought from me but never subscribed?

Transactional mail about their order, yes. Marketing is riskier: M3AAWG calls this implied consent, advises against relying on it, and suggests asking for explicit consent with a permission message before you add them to marketing sends. Watch complaints closely on that segment if you do mail it.

### How often should I clean my email list?

No mailbox provider sets a schedule. Bounces, complaints and unsubscribes should be handled automatically on every send, not in a periodic cleanup. Review engagement before any send that is much larger than usual, and run a re-permission message for subscribers who have stopped clicking for a long stretch of your normal cadence.

## Related

- [What is an email MCP server?](https://www.unitpost.com/blog/agents/email-mcp-server): How Model Context Protocol exposes email sending as agent tools, what a well-designed email MCP surface looks like, and how authentication and scopes work.
- [How often to send marketing email](https://www.unitpost.com/blog/deliverability/email-sending-frequency): Choosing a marketing email cadence that doesn't drive spam reports: match what people signed up for, stay steady, avoid double sends, respect time zones.
- [30 things to ask an email and SMS MCP server](https://www.unitpost.com/blog/agents/email-sms-mcp-prompts): Thirty prompts for Claude, Cursor, ChatGPT or any MCP client connected to Unitpost, grouped by job, with the tools each calls and which ones send.
