The Riff - Sales Tempo Blog

Bad Data Kills Good Campaigns: How We Qualify Lead Sources Before We Build

Written by Katie Dye | 7/15/26 6:08 PM

Most failed outbound campaigns get blamed on the wrong thing. The copy gets rewritten, the subject line gets A/B tested, the sequence gets shortened. Rarely does anyone go back and check the list itself. That's usually where the campaign actually died, before the first email went out.

We've inherited lists from CROs, marketing teams, and one-off event exports enough times to know the pattern. A list that looks fine in a spreadsheet, right row count, right company names, can still be full of stale records and mismatched domains. We've seen a single bad import get a brand-new sender flagged for spam before the first sequence even finished sending, simply because too many contacts shared one domain and the send pattern looked like a blast instead of outreach. The rep did nothing wrong. The list was broken before it reached them.

Why NAICS codes lie

NAICS and SIC codes feel like solid ground because they're official. They're not as reliable as they look. A company self-reports its code at registration, sometimes years before its current business exists in its current form. A holding company can carry a manufacturing code while running a software business under it. A distributor can carry a wholesale code while doing more manufacturing than the manufacturers on your list.

Two companies can match every firmographic filter you build, same headcount, same industry code, same region, and still be completely different buyers. One is the fit your case studies describe. The other only looks like it on paper. Filtering on industry code alone tells you what a company said it does when it registered. It doesn't tell you what it does now, or whether it's the account your service was actually built for.

How bad data breaks a campaign before it starts

Bad data doesn't show up as an obvious error. It shows up as slow-motion damage that's hard to trace back to its source:

  • Domain concentration trips spam filters. A list pulled from one event or one company hierarchy often shares the same email domain across dozens of contacts. Send volume that looks reasonable per person can still read as a mass blast at the domain level, and that's what gets a sender's reputation flagged.
  • Stale records inflate bounce rates. Contacts who left a company eight months ago still show up as active. Every bounce chips away at deliverability for every email after it, not just that one message.
  • Mismatched personas kill reply rates. A contact enriched off an old title or a wrong department gets a message that doesn't match their actual job. It reads as generic at best and irrelevant at worst, and the reply rate takes the hit before anyone questions the copy.

None of these show up until the campaign is already live. By then the damage is baked into the sender reputation and the list, not just that one send.

The checklist we run before anything goes live in Clay

This is the gate every list goes through before it gets built into a Clay table, no exceptions for tight deadlines:

  1. Confirm the company is real and current. Domain and LinkedIn URL have to resolve to an operating business, not a shell entry, a stale subsidiary listing, or a registration nobody's touched in years.
  2. Check the industry code against what the company actually says it does today. Not what's on file. Pull the current site copy and compare it to the code before trusting either one.
  3. Run a domain frequency check before importing. Flag any domain with a high concentration of contacts and cap send volume per domain before the list ever gets loaded into a sequencer.
  4. Verify contact-level currency. Title, employment status, and company match need to be current within the last few months, not the last few years.
  5. Spot-check a sample by hand. Before scaling to full volume, someone actually looks at 20 to 30 rows and confirms they make sense. Automation catches patterns. It doesn't catch a list that's subtly wrong in a way nobody coded a rule for.
  6. Treat the checklist as a gate, not a suggestion. A list doesn't move to Clay or SalesLoft until it clears every step above. Skipping a step to hit a launch date just moves the failure from before the campaign to during it.

Qualifying lead sources isn't the exciting part of running a campaign. It's the part that decides whether the exciting part, the messaging, the sequencing, the personalization, ever gets a fair test. Build on a bad list and you're not testing your campaign. You're testing how fast bad data can bury a good one.