Low-quality leads usually come from who the campaign reaches or what the offer attracts, not from the platform itself. Start in your CRM: sort last month’s paid leads by campaign and look at disqualification rate and free-email share. The same checks work for Google Performance Max and Microsoft Advertising, which have their own versions of each cause below.
First, rule out the expected causes
Some “bad lead” complaints aren’t a campaign problem. Check these first:
- The bar moved. If sales changed what counts as qualified, last month’s leads will look worse with no change in the ads. Agree the definition before you judge.
- It’s too early to tell. A lead that hasn’t been worked yet isn’t a bad lead. Judge leads only once sales has had time to contact them.
- The sample is small. Ten leads with three duds is noise. Wait for enough volume to compare campaigns fairly.
- It’s a top-of-funnel offer on purpose. An ebook campaign will produce fewer sales-ready leads than a demo campaign. Judge it against other content offers, not against demo requests.
Causes, most to least likely
1. Bots and spam fills
Website forms attract bots. Signs include gibberish names, fake company names, duplicate submissions, and forms submitted seconds after the page loaded. Google’s own Performance Max lead generation guidance recommends reCAPTCHA and server-side validation on forms to cut spam.
How to confirm: Export a month of form fills from one campaign. Look for repeated emails, nonsense text and odd hours. If your form tool logs time to submit, very short times point to bots.
2. Free-email and personal signups
On a B2B offer, a high share of gmail.com, yahoo.com and outlook.com addresses usually means people outside your market, or students and job seekers.
How to confirm: In your CRM, group paid leads by email domain and campaign. Compare the free-email share across campaigns.
3. Targeting wider than you think
The audience often drifts wider than the plan:
- LinkedIn audience expansion. It adds members similar to your targeting. Check whether it’s on in the campaign’s audience settings.
- LinkedIn Audience Network. It shows ads on third-party apps and sites. LinkedIn’s API docs say it can’t be used on Lead Generation campaigns, so this applies to website-conversion campaigns.
- Google Performance Max. It serves across Search, Display, YouTube and more. Display and video placements can bring cheaper, weaker leads.
- Microsoft Advertising. LinkedIn profile targeting on Microsoft is a bid adjustment only. It does not narrow your audience, so targeting a list of companies won’t exclude everyone else.
How to confirm: In your CRM, compare the company size, industry and job title of recent leads with your closed-won customers. Then check which campaigns have expansion or Audience Network switched on. If a campaign’s off-target share jumped on the day a setting changed, you’ve found it.
4. The offer attracts the wrong people
A free template, salary guide or course will pull in students and job seekers no matter how good the targeting is. On search, the query is the clue.
How to confirm: Open the search terms report. In Google Ads, that’s Campaigns, then Insights and reports, then Search terms. Look for spend on terms containing jobs, careers, salary, hiring, internship, free, template, course, certification, login, download, definition or “what is”. This list is a rule of thumb for B2B accounts, not a platform rule. Some of these terms will be fine for your business.
5. Optimizing for volume, not quality
Every platform optimizes toward the event you give it. If that event is “form submitted”, it will find the cheapest form fills, and those are often the weakest. LinkedIn, Google and Microsoft all reward cheap leads unless you tell them otherwise.
How to confirm: Check the campaign’s optimization goal. On LinkedIn, see whether a Lead Generation campaign optimizes for leads or for qualified leads. On Google, check whether the bid strategy uses a raw lead action or a qualified-lead or converted-lead action fed from your CRM.
The fix, step by step
Do the cheapest, most reversible steps first. Change one thing per campaign so you can see what worked.
- Block spam at the form. Add reCAPTCHA to web forms. In HubSpot, the spam prevention settings include reCAPTCHA, gibberish detection on Professional and Enterprise, and blocking free email providers on Starter and up.
- Block or flag free email. If you only sell to businesses, block free email domains on high-intent forms like demo requests. On content offers, flag them for nurture instead of routing them to sales.
- Add a qualifying question. One question such as company size or role filters out many poor fits. Google recommends qualifying questions for this reason. Keep the total fields short so good leads still convert.
- Tighten targeting. Turn off audience expansion on campaigns where off-target share is high. For website-conversion campaigns on LinkedIn, test turning off Audience Network. On Microsoft, treat LinkedIn profile targeting as a bid lever, not a filter.
- Add negative keywords. Add the junk themes you found as negatives. In Google Ads you can add them at account level or to a specific campaign; for Performance Max, Google’s negative keyword guide notes they apply to Search and Shopping inventory only. In Microsoft Advertising, use shared negative keyword lists across campaigns.
- Change the offer. If the offer attracts students, swap it for one only buyers want, such as a pricing guide, an ROI calculator or a product demo for engaged accounts.
- Optimize for quality. On LinkedIn, use qualified-lead optimization and send qualified-lead events back from your CRM. On Google, pick a Qualified Lead or Converted Lead goal fed by your CRM, which Google says also adds protection against invalid lead activity. Expect cost per lead to rise; cost per opportunity is what should fall.
How to tell the fix worked
Don’t judge by cost per lead. A cheaper lead that never becomes an opportunity isn’t cheaper.
| Measure | Where | When to check |
|---|---|---|
| Spam and junk fills | Form submissions | Within 1 week |
| Free-email share | CRM, by campaign | After 2 to 4 weeks |
| Disqualification rate | CRM lead status, by campaign | After sales has worked the leads, often 30 to 60 days |
| Lead-to-opportunity rate | CRM, by campaign | After your normal lead-to-opportunity lag |
| Cost per opportunity | Spend divided by opportunities | After 60 to 90 days |
A good result: disqualification rate falls toward the account average and lead-to-opportunity rate rises, even if lead volume drops.
How PipeHalo catches this
PipeHalo’s “low-quality leads” check runs every morning once HubSpot or Salesforce is connected. Every plan includes a CRM connection. It looks at people who came in from each ad platform in the last 60 days and the share your CRM marks unqualified, junk, spam or not a fit in lead status or lifecycle stage. It flags the platform when at least 10 people came in, 30% or more are marked that way, and the share is at least twice that of your other channels. It marks the flag high at 50%. The flag shows the counts next to your other channels and “What to try” steps. PipeHalo keeps checking every day, and an open flag clears itself once the share drops back under the line. See every daily check on the features page and how the Salesforce connection supplies lead status, or try the live demo.
Related questions
Why are my LinkedIn Lead Gen Form leads poor quality?
Lead Gen Forms pre-fill from the member’s profile, so they’re easy to submit. That raises volume but can lower intent. Add a qualifying question, check whether audience expansion is on, and judge the campaign on lead-to-opportunity rate.
Should I block Gmail addresses on B2B forms?
On demo and pricing forms, usually yes. On content offers, flagging them for nurture is often better, since some real buyers use personal email.
Does optimizing for qualified leads raise cost per lead?
Usually, yes. You’re asking the platform to find fewer, better leads. Judge the change on cost per opportunity, not cost per lead.