Every sales and marketing team has one: the spreadsheet exported from an old CRM, a trade show, a webinar and three people's LinkedIn notes. Some rows have an email. Some have a name and a company and nothing else. Some are people who left two years ago.
Before you send anything to it, here's how to fix it.
Step 1: Dedupe first
Sort by email, then by first name, last name and company together. Merge duplicates, keeping the most recent job title. There's no point enriching the same person twice.
Step 2: Standardise the columns
You need, at minimum: first name, last name, company, company website (the domain), job title, email, country. Split "Full name" into first and last. Put the domain in its own column: it's how every enrichment tool matches a company.
Step 3: Verify the emails you already have
Run them through an email checker. You'll get back roughly four groups:
| Result | What to do |
|---|---|
| Valid | Keep |
| Invalid | Remove, then try to find a new address for that person |
| Catch-all or unknown | Send in small batches, watch bounces |
| Role address (info@, sales@) | Keep only if you have nothing better |
Step 4: Fill the blanks
For rows with a name and company but no email, there are three routes:
- Pattern and verify. Work out the company's format (firstname.lastname@, f.lastname@) from a known address, build the email, then verify it. Accurate for small numbers, slow for hundreds.
- Enrichment tools. Match on name plus domain, or on a LinkedIn URL. Fast, but check what the tool counts as "found".
- Enrichment as a service. Send the file, get it back filled and verified.
Step 5: Check they still work there
The bigger cost in an old list isn't missing emails, it's people who've moved on. Their old address might not bounce straight away, which is worse: you think you're reaching them. Match your list against current profiles and update the title and company, or mark them as gone. If they moved to another company that fits your market, that's a new lead, not a dead one.
Step 6: Fill in what makes the list useful
Company headcount, industry and country let you split the list into segments that get different messages. A LinkedIn URL lets you check someone before you write to them.
What good looks like at the end
Before: 4,200 rows
duplicates removed -310
left the company -620 (180 re-found
at new companies)
emails found for blanks +1,150
invalid emails removed -240
After: 3,180 usable, verified contacts
Fewer rows, many more replies. Then set up your sending properly: our guide on why cold emails go to spam covers domain setup, and buying a B2B email list covers the checks worth running on any new data you add.
Questions people ask
How often should I clean my contact list?
Before every major campaign, and at least quarterly for a list you email regularly.
Can I guess emails from the name and domain?
You can guess the pattern, but always verify before sending.
What's a catch-all address?
A domain that accepts any address, so a checker can't confirm the person exists. Send carefully and in small numbers.
Send us the messy spreadsheet
Fill the Gaps in Your List: send your file, we find the missing work emails, verify every address, update people who moved and fill in company details. 50 rows done free first, then from $39 for 1,000.
Leave a comment: