We had a client whose sending domain was flagged within three weeks of launching a campaign. Reply rate dropped to near zero. Emails were going to spam. Recovery took months of careful warmup work and a fresh subdomain.
The cause was a list that had not been audited. It looked fine on the surface, right titles, right company sizes, plausible emails. But forty percent of the contacts were unreachable, catch-all addresses, or people who had left their companies months ago.
Every list we run now goes through a mandatory 7-point audit before it touches a sequencing tool. This is the audit.
Why This Matters More Than Copy
Most outbound advice focuses on copy. Better subject lines, stronger opening lines, shorter messages. That advice is not wrong. But it assumes the list is clean. When the list is dirty, no copy saves you.
Here is what happens when you send to a bad list:
Email providers track bounce rates. When your bounce rate climbs above 2–3%, your sending reputation degrades. Emails start landing in spam for everyone, including the people on your list who were real contacts. The infrastructure damage outlasts any individual campaign.
LinkedIn is equally unforgiving. This is also why we set up dedicated sending infrastructure before any campaign launches. High connection request rejection rates flag your account as suspicious. Accounts with flagged activity get restricted from sending new requests. The recovery process is slow and opaque.
A list that is 60% accurate will not produce 60% of your expected results. It will produce 10%, because the 40% that is bad actively damages the infrastructure that the 60% good contacts depend on.
The 7-Point Audit
1. Email Verification
Every email address gets run through a verification service before launch. We use tools like Prospeo and Clay's waterfall email enrichment to find the most accurate email for each contact, then verify it against live mail server checks.
What we are checking: Is the mailbox active? Is it a catch-all domain? Catch-all domains accept any email sent to them, which means a verification check returns "valid" even if the specific address does not exist. Catch-all contacts get either downgraded to LinkedIn-only outreach or removed from the email campaign.
Automatic disqualifiers: bounce history, role-based addresses (info@, sales@, support@), emails that resolve to personal domains when the contact should have a company address.
2. Title Verification Against ICP Criteria
We pull the contact's current title from LinkedIn and compare it against the ICP definition. This sounds obvious, but lists built from Apollo or other databases frequently contain outdated title data.
Someone who was "VP of Sales" six months ago might now be "Chief Revenue Officer", still relevant, title updated. Someone who was "Head of Marketing" at a target company might now be in a role at a company that is out of ICP.
The audit flags any contact where the current LinkedIn title does not match the criteria. Those contacts get reviewed before the list moves forward.
3. Company Validation
We verify that the company still exists, is still operating in the category we targeted, and has not undergone a material change (acquisition, bankruptcy, pivot) since the list was built.
Acquired companies are a specific problem. The decision-maker you targeted may no longer have buying authority. Their budget may be frozen pending integration. Their team may be in restructuring. We exclude companies acquired within the last six months automatically.
4. Recency Check on Contact Data
Data decays fast. The average B2B professional changes jobs every 2–3 years, which means any given contact database is losing accuracy at roughly 3–4% per month.
We flag contacts where the last LinkedIn activity was more than 90 days ago, where the profile has not been updated in over a year, or where there is a meaningful gap between the last update and the campaign launch date. Stale profiles are either re-verified manually or removed.
5. Decision-Maker Seniority Check
ICP definitions usually specify seniority level. The list gets audited to confirm that every contact actually has buying authority for what you are selling.
The failure mode we see most often: a contact with a relevant title ("Director of Sales Operations") who reports to someone else at the same company who actually controls the budget. We cross-reference org structure where visible and flag contacts at companies where a more senior, more relevant contact already exists on the list, to avoid running two contacts at the same account on different sequences.
6. Exclusion List Cross-Reference
Every contact gets checked against three exclusion lists:
- Previous outreach: any account or contact where we already reached out in the last six months with no reply
- Active accounts: any company where we are already in conversation with someone
- Competitor-adjacent accounts: companies where we have identified the contact works with a direct competitor and has a locked-in contract
Sending to contacts on any of these lists is not just a waste, it is a liability. Hitting an active account from a different angle can blow up a conversation that was progressing.
7. Domain Health Spot-Check
For email campaigns, we run a final check on the domains of the contacts we are sending to. High-risk domains: companies known to aggressively block cold email, domains that resolve to parked pages, or domains where the MX records suggest heavy spam filtering.
This check is lighter than the others but catches edge cases that can disproportionately hurt bounce rates.
What the Audit Looks Like in Practice
What Gets Removed vs. What Gets Downgraded
Not every flagged contact gets removed. Some get downgraded to a different channel.
- Catch-all domain: Move to LinkedIn-only if the contact is still ICP-qualified
- Title mismatch, but still relevant: Move to watch list for manual review
- Stale LinkedIn profile, email still valid: Keep but tag for higher personalization threshold
- Exclusion list hit: Remove entirely
The Overhead Is Worth It
A raw list of 500 contacts that has not been audited will, on average, have 150–200 contacts that should not be there. Sending to those 150–200 contacts does not just waste sequences, it actively hurts the deliverability of the 300 contacts who were qualified.
Running the 7-point audit takes a few hours of setup and about two hours of review per list. The investment is the difference between a campaign that builds on itself and one that digs a hole.
Build the audit gate into your process before the list leaves the research phase. A contact that has not passed the audit is not a lead, it is a liability. Treat the gate as non-optional, not a nice-to-have.
Frequently Asked Questions
How long does a full audit take? For a list of 200–300 contacts, the automated portion (email verification, exclusion cross-reference) takes about 30–45 minutes. The manual review of flagged contacts takes another 1–2 hours. Larger lists scale roughly linearly with the automated steps; the manual review does not grow as fast because flagged contacts tend to cluster.
What verification tool do you use? We use Prospeo as the primary email finder and verifier, with Clay's waterfall enrichment as a fallback for contacts Prospeo cannot confirm. For large lists, we also run a ZeroBounce batch check before uploading to a sequencing tool.
Can you automate the whole audit? Most of it, yes. Steps 1–5 can be fully automated with the right Clay flows and Apify scrapers. Step 6 (seniority/org check) and the final review require human judgment. We do not skip the human step. Edge cases that automated systems miss tend to be the exact contacts that cause problems.
What is an acceptable audit pass rate? We aim to launch with lists where at least 70% of contacts pass all 7 checks cleanly. If the pass rate is below 60%, we go back to the targeting criteria and rebuild. A 50% pass rate means the sourcing was wrong, not just the contacts.
A contact that has not passed the audit is not a lead. Treat the gate as infrastructure, not process.
We run this audit for every client list before launch. Book a call to see how we do it.
