Five form fills came in overnight. You open the first one with the small optimism you always have, and the company website is a domain that does not resolve. No site, no mail server, in one case not even registered. The next one is a free email address next to a field that says company email. The third one typed the name of a social network in the website box.
Two of the five are real. You will spend the morning finding out which two.
The junk costs exactly what the real ones cost
This is the part that gets missed. You did not get a discount on the three bad fills. The click was auctioned at the same price, the landing page loaded the same way, and the form submitted the same way. The platform reports four dollars fifty or whatever it was, and it reports it identically for the lead that turns into revenue and the lead whose domain has never existed.
So the number on your dashboard is not your cost per lead. It is your cost per form submission. Those are different things and only one of them is a business input.
The arithmetic, which is worse than it feels
Spend two thousand dollars, get forty submissions, and the platform says fifty dollars a lead. Now assume some share of those are unusable. Your real cost per lead is the reported figure divided by the share that are real.
At twenty percent junk you are paying sixty three dollars, not fifty. At forty percent you are paying eighty three. At sixty percent you are paying a hundred and twenty five. At seventy five percent you are paying two hundred dollars for every lead a salesperson can actually work, while the dashboard still says fifty.
That is a two hundred and fifty percent error at sixty percent junk, and it does not show up anywhere in the reporting. It sits in the gap between what got submitted and what was real.
There is a second cost that never gets counted at all. If qualifying a lead takes twelve minutes of somebody's time, forty submissions is eight hours. At sixty percent junk, just under five of those hours are spent confirming that a stranger typed nonsense. That is most of a working day per two thousand dollars of spend, and nobody puts it in the CPL.
You can spot most of them in ten seconds
You do not need a data provider for this. Every check below is free and takes one lookup.
Does the domain resolve. Not does the site look good, does the domain exist at all. A business with a real website has an A record and a mail server. If the domain has neither, or if a registry lookup returns no match, there is nothing behind it.
Does the email match the domain. Someone who runs a business at a domain usually has email at that domain. A free inbox beside a company website is not disqualifying on its own, plenty of small operators run on Gmail, but a free inbox beside a domain that does not resolve is two signals pointing the same way.
Does the handle relate to anything. This one is worth more than it sounds, and it cuts both ways. An email handle that shares a fragment with the company domain is a person with a consistent identity, which is evidence for them, not against them. A handle unrelated to either the name or the domain is worth a second look.
Does the stated traffic match the site. Somebody claiming a hundred thousand monthly sessions on a domain registered last week is describing a plan, not a business.
Any one of these on its own means nothing. A real person mistypes their own domain more often than you would think, and the correct response to a domain that does not resolve is one email asking whether you read it right. Two or three of them together is a different matter.
Where the bad ones come from
They are not evenly distributed, which is the useful part. Pull a placement breakdown on any broad paid social campaign and you will usually find spend sitting in placements you never deliberately chose, because they are on by default. In-app inventory inside third party apps is the obvious one. A banner inside a mobile game collects a lot of taps that were aimed at something else, and an accidental tap that lands on a form sometimes fills it in.
Broad targeting compounds it. The wider the audience, the more of it consists of people with no relationship to what you sell, and a form is a low bar for someone who is curious rather than buying.
And the creative matters more than most people expect. An ad built on curiosity gets clicked by curious people. If the hook is a thing the reader wants to see rather than a problem they want solved, the form fills with people who wanted to see it. The click through rate looks excellent. That is the tell, not the reassurance.
What to do about it, cheapest first
Validate the domain at the form, on the server, not in the browser. One lookup, and if the domain has no records you return a message asking them to check the spelling. Real people fix it and continue. Bots and idle typists do not. This is a couple of dozen lines and it is the single highest leverage change available, because it catches the problem before it reaches your pipeline instead of a week later.
Then go look at your placement report and decide on purpose which placements you want, rather than accepting the default set.
Then judge creative on qualified fills instead of cost per fill. This is the uncomfortable one, because the ad with the best cost per submission is frequently the one producing the least usable pipeline, and killing it feels like killing your best performer.
Where we land on this
None of this is a reason to stop running paid social. It is a reason to stop reading one number off a dashboard and treating it as the cost of a customer conversation.
The version we would defend is narrow. Count the leads you could actually call. Divide the spend by that. Compare the answer to what the platform tells you. If the two numbers are close, you have a clean funnel and you can go back to optimising it. If they are not, you have been optimising the wrong ratio, and every decision built on it is a little bit wrong in the same direction.