Why your Google Ads “leads” are lying to you
Reported conversions and booked jobs are rarely the same number. Here’s where the gap opens up in home service accounts, and the rebuild that closes it.
On this page
Your report says 84 conversions last month. Your office manager says the phone rang maybe thirty times. Both are telling the truth. They’re just counting different things.
This is the single most common problem I find when I open a home service account for the first time. Not bidding. Not ad copy. Counting.
The gap nobody shows you #
Google Ads reports what it was told to report. If the tag fires on a thank-you page that reloads, on a phone number click that never connects, and on a form that a bot submits at 3am, all three land in the same column. Nobody is lying. The definition is just wrong.
If the number on the report isn’t a number your office manager recognises, the report isn’t about your business yet.Something I say on most first calls
What gets counted as a lead #
In a typical account I’ll find some mix of these inflating the total:
- Duplicate form submissions from one person filling the form twice
- Spam submissions, especially on forms with no honeypot or rate limit
- Usually from a handful of repeat sources
- Often at consistent times of night
- Phone-number clicks counted as calls, even when the call never connects
- Eight-second calls: wrong number, hung up, called the wrong trade
- Engagement events like “clicked the booking button” quietly set as conversions
None of these are jobs. Some aren’t even people. If you want to see how I structure an account so the count means something, that’s covered in the booked-job system.
Auditing your own conversions #
You can do a rough version of this yourself in about twenty minutes. Open your conversion actions and check what each one is actually measuring.
- List every conversion action and what triggers it
- Check the count setting,
EveryvsOneper interaction - Compare last month’s total against your own call log
- Pull the call durations and cut anything under 30 seconds
A quick sanity check
If you have access to GTM, this is the shape of the filter I use to stop counting short calls as leads:
// only count calls that actually got answered
if (event.call_duration >= 30) {
dataLayer.push({
event: 'qualified_call',
call_source: event.source,
call_duration: event.call_duration
});
}
The rebuild, step by step #
Here’s what a corrected setup looks like next to a typical broken one.
| What’s tracked | Typical setup | Corrected |
|---|---|---|
| Form submissions | Page-load tag | Server event, deduplicated |
| Phone calls | Number clicks | Connected calls over 30s |
| Untracked | Click + reply event | |
| Booking button | Counted as a lead | Secondary, not a conversion |
What changes after #
Once the count is real, everything downstream gets easier. Bid adjustments push toward searches that produce work. Budget moves to the services that pay. And the weekly conversation stops being about clicks.
That’s the whole reason I install tracking before touching spend on every account I take on.
