At one B2B client, between 35 and 38% of sales-qualified leads had been spam for six straight months. These were meetings booked on account executives’ calendars, and they stayed in the SQL count until someone disqualified them by hand at month end.
At another client, the problem ran the other way. A partner sent referrals that nobody called, because every record arrived tagged as out of market. Several were exactly the companies the team wanted.
From the sales floor, both look like a source that sends bad leads. They have different causes and fixes, so I don’t let a team argue about lead quality until someone has opened the records. A short weekly audit that checks both directions makes that routine. The cases below are where each check came from, and the audit is at the end.
Spam that reached the sales-qualified stage
The 35 to 38% figure came up in the first of a new weekly ops meeting at the first client, when someone from sales asked whether it was high. I asked how they defined spam. Mostly it was garbage form data, often variations on Gmail addresses, and most of it never booked anything. The problem was the share that did book a meeting and landed with sales. Spam came out of reported numbers at month end, so any report pulled mid-month included some and projections ran high. The marketing lead described the SQL definition itself as loose.
The disqualification setup was worth copying. Spam was one of six to ten reasons in the CRM, alongside timing, cost and product gaps. Every disqualified record except spam moved into a nurture pipeline, where the reason set the next step, either an automatic follow-up task or a sequence with a delayed start.
What changed afterward was visibility. A weekly report of spam as a share of SQLs went to sales leadership. By July, when sales directors raised spam again, a check of 85 recent SQLs found five or six marked spam, and nobody on the team saw unusual signals. I can’t say how much of that drop came from cleaner traffic and how much from comparing one week with a six-month average, because no specific fix was documented. The weekly number did settle the argument in one meeting.
Partner referrals tagged as out of market
The second client’s partner feed posted two or three referrals a day into a Slack channel, roughly 50 to 60 a month. Each carried a field from the partner marking the business as outside the client’s market. Someone on the team admitted in a meeting that they had stopped looking because everything was tagged that way, then opened the channel and found five clearly in-market companies, including one everyone knew was doing well. A few others had joke email addresses, so real junk sat next to the good referrals.
The working theory was a code error on the partner’s side. Product was asked to find out why the tag was applied, and in the meantime the go-to-market team agreed to read every referral by hand, which at that volume takes minutes a day. The team also tested a same-day first review for partner referrals, because partners send fewer leads when they never hear back. My notes don’t show when the tag was fixed.
Purchased data can be wrong in the same way. At the first client, when five recent SQLs were cross-checked, two had the wrong current vendor in the enrichment field. That field fed LinkedIn targeting, display targeting and outbound lists.
A covering rep skipped the best lead source
The first client’s best inbound offer was a free assessment tool. In its first two weeks, 9 of 53 requests became sales-qualified leads, against roughly 2% conversion for the company’s usual content offers, and by midyear it was still converting at about one in ten. It launched as a manual process on purpose. Each request sent a Slack alert to one owner, who ran the assessment and sent the report within one business day.
In October that owner was out, and the person covering stopped following up on most requests because they looked like low-intent leads. Marketing raised it in a weekly meeting. When sales leadership asked for a list of requests that hadn’t been completed, there was no clean way to build one, because the team wasn’t using lead statuses or closing tasks.
A rep deciding a source isn’t worth calling leaves nothing in the CRM. If nobody had raised it, the first sign would have been a dip in that source’s pipeline weeks later. The team agreed it needed a written process that doesn’t depend on whoever is covering, but no owner or date was set, and I’d treat that as the open risk.
Bounced domains, bots and job seekers
Some junk shows up before anyone qualifies it. At a third client, form submissions from unfamiliar domains started about a week and a half after paid traffic moved to a new landing page, and every reply bounced. The marketing owner cleared each one in about a minute with a templated reply, so we left the form alone and kept a CAPTCHA in reserve in case volume grew.
Traffic spikes deserve the same suspicion. One month, sessions jumped enough at the first client that leadership asked about it. The causes turned out to be a display vendor’s measurement bot generating thousands of visits, a wave of job seekers on the careers pages, and higher referral traffic. SQL conversion didn’t move. The CRM had filed display under paid media and let unclassified visits fall into direct, so it disagreed with the product analytics tool about the source. At the third client, bots from a few countries were inflating direct traffic, so we filtered them in the data warehouse and defined clean sessions to exclude bots and the team’s own visits.
The weekly qualified lead audit
Run it on a fixed day against the previous week’s records, before the sales and marketing meeting. Most checks become saved CRM views after the first week. Record each result in a sheet, because a spam share means little until you know what a normal week looks like.
| Check | How to run it | It fails when | What to do |
|---|---|---|---|
| Junk that got in | |||
| 1. Spam share of new SQLs | SQLs created last week now marked spam, divided by all SQLs created last week | It rises above your trailing four-week level, or any of last week’s spam is still open | Disqualify the open records today. Look for a shared pattern, such as one domain or one form, and block it at the form. |
| 2. Meetings booked by spam | Last week’s booked meetings filtered to records later marked spam | Any appear | Tell the reps which pattern got through. Add validation before the scheduling step for that pattern. |
| 3. Bounced first replies | New form contacts whose first reply bounced, grouped by email domain and landing page | A cluster from one domain, or a jump right after a page or form change | Mark them spam and note the page. Add a CAPTCHA only when clearing them costs more than the friction would cost buyers. |
| 4. Traffic that moved without leads | Last week’s sessions by channel and top landing page, next to SQLs by source | Sessions jump in one channel or page and SQLs don’t. Check careers pages, display, referral and single-country traffic first. | Split out careers traffic, filter known bots and ask the vendor about measurement bots. Don’t report the jump as demand. |
| 5. Marketing and sales counts | Last week’s SQL count from the marketing report and from the sales report | The counts differ | Find the records behind the gap. Agree which version goes to leadership, with its pull date. |
| Good leads pushed out | |||
| 6. Auto-tagged sources | For each source with an automatic tag or score, read 10 records marked out of market or low fit | Any are clearly in market | Route that source to manual review, open a ticket on the tag and tell the partner what you found. |
| 7. Unworked leads by source | Last week’s SQLs and requests with no logged activity past your response time, grouped by source and owner | Any source has unworked records, above all your best-converting offer | Name an owner and a backup for every source. |
| 8. Coverage changes | Who owns each lead queue this week, and who is out | An owner is out with no named backup, or the backup doesn’t know how well the source converts | Reassign the queue in writing and include the source’s conversion rate. |
| 9. Disqualification reasons | Last week’s disqualified records by reason and source. Read every one marked as a bad lead or with no reason. | One source’s disqualifications cluster under one reason, or reasons are blank | Read them with the rep. Confirm every non-spam disqualification went to nurture. |
| 10. Enrichment fields used for routing | Five of last week’s SQLs checked against each company’s website for fields used in routing, such as industry or current vendor | Any field is wrong | Stop routing or targeting on that field until it’s corrected, and list the programs it feeds. |
These checks come from a few clients over about seven months, so they reflect the failures I happened to see, and they only cover records that reached the CRM. For the problems further down the funnel, see why B2B lead generation produces leads but not revenue, and for tracing one group of leads through the CRM, see when marketing and sales report different lead numbers. After a month, the sheet shows your normal spam share and which sources get misjudged, and the weekly lead quality conversation can start there.
