# How do I clean my own lead list before sending cold email?

Canonical: https://growfast.sh/solutions/clean-your-lead-list-before-cold-email | Last updated: 2026-11-13 | Published by GrowFast

Remove duplicates, role mailboxes such as info@, addresses on domains with no mail server, anyone who unsubscribed or bounced before, and public-sector domains; then spot-check a sample by hand and send a small batch first. Never mail a bought or scraped list. GrowFast's import_leads runs these checks on a CSV of your own contacts and says why each row was dropped.

## Why it happens

A list is not an asset until it has been cleaned. Every dead address is a bounce, every role mailbox is a likely bounce or a complaint, and every opt-out you ignore is a spam report waiting to happen. Gmail asks senders to keep spam rates below 0.3%, and Yahoo sets the same threshold, so a handful of complaints on a small list matters.

Lists you did not build are the worst case. Google's sender guidelines say not to purchase email addresses from other companies or send to people who did not sign up, and the UK regulator says there is no such thing as a compliant third-party marketing list for soft opt-in purposes.

## The fix that works without GrowFast

1. **Start only with contacts you have a reason to write to.** People you met, who replied before, or whom you researched individually. Do not use bought, rented or bulk-scraped lists.
2. **Normalise and dedupe.** Trim spaces, lower-case, and remove repeats. Two rows for one person means two emails to them.
3. **Check the syntax.** Drop anything that is not a plausible address. Typos such as gmial.com are common in hand-built lists.
4. **Check every domain has a mail server.** Run dig MX domain +short for each unique domain, or use a script. Remove domains with no result.
5. **Remove role mailboxes.** info@, support@, sales@, admin@, noreply@ and the like are shared, filtered or unattended.
6. **Remove everyone who opted out or bounced before.** Keep a suppression list across every campaign and check it before each send.
7. **Spot-check 20 rows by hand.** Open the company site and confirm that the person and role are right. Fix the pattern you find, not just the rows.
8. **Send a small batch first.** Watch bounces for a day or two before sending the rest.

**List checks and how to run each**

| Check | Why | How |
| --- | --- | --- |
| Duplicates | One person, two emails | Lower-case the address and dedupe |
| Dead domains | Guaranteed bounces | dig MX example.com +short, or an MX lookup tool |
| Role mailboxes | Shared or unattended; higher bounce and complaint risk | Filter on local parts such as info, support, sales, admin, noreply |
| Past opt-outs and bounces | Complaints and legal exposure | Match against your suppression list |
| Public-sector and school domains | Rarely customers; spam traps; complaints | Filter .gov, .edu, .mil and national equivalents |
| Mailbox exists | Cannot be proven by MX alone | Small first batch and watch bounces |

## When to use GrowFast

import_leads takes CSV text with an email column and optional company, name and website, up to 500 rows. It drops invalid, duplicate, already-emailed, public-sector, role-mailbox and no-mail-server addresses, says why for each, and refuses the whole list when most of it is unmailable. It stores nothing and sends nothing; it returns the cleaned list.

confirmOwnList must be true, which records your statement that these are business contacts you have a reason to write to and that the list was not bought, rented or scraped in bulk.

**When it is not the right tool:** An MX check shows the domain takes mail, not that the mailbox exists. A bounce can still happen, which is why you send a small batch first. For lists over 500 rows, split the file.

## Ask your AI assistant

Paste this into an assistant that has the GrowFast MCP server connected:

> Assign to GrowFast: clean this CSV with import_leads (I confirm it is my own list of business contacts, not bought or scraped) and report how many rows were dropped and why. Don't send to anyone. Show me the result so I can approve what happens next.

Tools used: `import_leads`. These need the full server (https://growfast.sh/api/mcp) with an API key.

## FAQ

### Can I buy a list and clean it?

Cleaning does not fix where it came from. Google's guidelines say not to purchase addresses, and the people on it never asked to hear from you.

### How often should I clean?

Before every campaign. People change jobs and domains lapse.

### What bounce rate is acceptable?

As low as you can get it. GrowFast pauses an account whose last 14 days of results bounced above 5%, but you should aim well below that.

### Does cleaning remove spam traps?

Not reliably. Dropping public-sector and school domains removes common ones, but the real protection is mailing only people you have a reason to write to.

## Sources

- [Google, Email sender guidelines (Gmail Help)](https://support.google.com/mail/answer/81126) (read 2026-11-13)
- [Yahoo Sender Hub, Sender requirements and best practices](https://senders.yahooinc.com/best-practices) (read 2026-11-13)
- [UK ICO, How do we comply with the PECR electronic mail marketing rules?](https://ico.org.uk/for-organisations/direct-marketing-and-privacy-and-electronic-communications/guidance-on-direct-marketing-using-electronic-mail/how-do-we-comply-with-the-pecr-electronic-mail-marketing-rules/) (read 2026-11-13)

## Related

- [Why are my cold emails bouncing, and how do I lower the bounce rate?](https://growfast.sh/solutions/why-do-cold-emails-bounce)
- [How do I find the right person's email at a company without guessing the address?](https://growfast.sh/solutions/find-decision-maker-email-without-guessing)
- [Is cold email legal, and what do CAN-SPAM and the UK rules require for B2B outreach?](https://growfast.sh/solutions/is-cold-email-legal-can-spam)
- [MX lookup tool](https://growfast.sh/tools/mx-lookup)
- [All problems and solutions](https://growfast.sh/solutions)
