PPC Management: Why Your Cost Per Lead Is Double What It Should Be
Your cost per lead is probably double what it should be because your PPC management is optimized for lead volume instead of job value. When an account is judged on total form fills and calls, cheap, low intent clicks look like wins. Once you divide spend by booked jobs instead of raw leads, the real number appears, often twice the reported figure.
Who fixes this, and for whom?
TruLata is a marketing platform for local service businesses across the United States: contractors, plumbers, electricians, HVAC companies, roofers and similar trades, whoever on the team runs the marketing. It tracks paid search spend, cost per lead and daily account changes in one place, so the person paying for the ads can see what moved and why without waiting for a monthly summary.
Why does reported cost per lead look better than reality?
There are three gaps between the number in an ad account and the number in your bank account.
Gap one: a lead is not a lead
Google counts a conversion when someone submits a form or a call passes a duration threshold. It does not know that the caller was a vendor, a tenant with no authority to approve work, or someone 40 miles outside your service area. If 40 percent of your counted leads are unqualified, your true cost per qualified lead is about 67 percent higher than the reported one. That single ratio explains most of the doubling.
Gap two: qualified is not booked
Google's own Local Services Ads documentation is explicit that you are charged for each valid lead received, and that lead prices vary by location, job type, lead type and bidding mode. Valid is a billing term, not a revenue term. A booked job rate of 30 percent versus 50 percent changes your cost per acquired customer by 67 percent with identical ad spend.
Gap three: jobs are not equal
A drain snake and a sewer line replacement are the same conversion event in a standard account. They are not the same business. Campaigns tuned to produce the most leads will reliably produce the cheapest, smallest jobs, because those are the easiest keywords to win. This is why lead cost can fall while profit falls faster.
How do you calculate cost per lead correctly?
Run four numbers, not one. The same ladder applies to cost per lead in Local Services Ads: start with billing cost per lead, then move to qualified, booked and acquired.
- Billing CPL: total spend divided by charged or counted leads. This is the vanity number.
- Cost per qualified lead: spend divided by leads that were in area, in service line and had authority to buy.
- Cost per booked job: spend divided by jobs actually scheduled from those leads.
- Cost per acquired revenue dollar: spend divided by closed revenue, then compared against gross margin.
Do this by campaign and by service line, not at the account level. Account level averages hide the two campaigns funding the waste. If you want the full arithmetic including jobs of different sizes, our walkthrough on how to calculate marketing ROI when every job is worth something different covers the weighting.
What should PPC performance tracking actually report?
Ask for a monthly report that contains these fields, per campaign:
- Spend, impressions, clicks, counted conversions
- Counted conversions split into qualified and unqualified, with the disqualification reason
- Booked jobs and average job value from those bookings
- Search terms that consumed the top 20 percent of spend with zero booked jobs
- Every account change made in the period, dated, with the reason
If the last two are missing, you cannot audit anything. Search term waste and silent setting changes are where money leaks. Google's automation can alter an account without a human deciding to, which we covered in detail on auto applied recommendations quietly costing contractors money. A daily change log turns that from a surprise into a decision.
Where does the wasted spend actually go?
Broad match with thin negatives
Broad match plus smart bidding will find volume. It finds it in "how to fix a leaking faucet", "HVAC technician jobs" and "plumbing supply near me". Pull the search terms report weekly for the first 90 days of any campaign, then monthly. Any query that has spent real money across 30 days with no booked job is a negative keyword candidate.
Service areas that overlap
Contractors running one campaign per city frequently bid against themselves in the overlap zones, inflating CPC without adding coverage. We wrote a full breakdown on PPC management across multiple service areas without competing against yourself, which is worth an hour if you run more than three geo campaigns.
Conversion actions that count everything
If newsletter signups, contact page visits and 15 second calls all count as conversions, the bidding algorithm is optimizing toward noise. Restrict primary conversions to genuine lead events: qualified calls over 60 seconds and quote request forms. Everything else goes to secondary, observation only.
Slow response after the click
You can pay a fair cost per lead and still get a terrible cost per job if nobody calls back inside five minutes. Speed is a paid search variable, not just a sales one. See why first response wins more jobs than bigger budgets.
How do you know when you are overspending?
Four signals, all checkable this week:
- Lead volume rose while revenue was flat. Classic sign that the account is chasing cheap clicks.
- Your impression share lost to budget is near zero while your search term report is full of unrelated queries. You are fully funding the wrong traffic.
- Nobody can tell you the booked job rate by campaign. If that number does not exist, the optimization decisions behind it were guesses.
- Changes appear in the account that no one can explain. Bid strategy swaps, budget reallocations, new keyword themes.
Google's guidance on Local Services Ads bid modes is useful here: "Maximize leads" optimizes for the most leads within budget, while target cost per lead and max per lead give you control over the price you will pay. If your account sits in maximize leads by default and nobody chose it deliberately, that is a decision made for you.
What should you demand from whoever manages the account?
Set these as conditions, in writing:
- Job value flows back into the account. Offline conversion imports or CRM values, so bidding optimizes toward revenue rather than form fills.
- Qualification is tracked at the lead level, with a reason code for every disqualified lead.
- A dated change log you can read without asking.
- Reporting refreshed more than once a month. A 30 day feedback loop means 30 days of wasted spend before anyone notices.
- Attribution that survives a long sales cycle. Many contracting jobs close a week or more after the click, which is why crediting the right channel when leads take days to close matters more than last click convenience.
None of this requires technical skill on your side. It requires that the numbers exist and that you can see them. That is what Google Ads reporting with a daily account watch is built to do: spend, cost per lead and every account change, visible the day it happens rather than the month after.
What does a fixed account look like after 90 days?
Expect the reported cost per lead to go up, not down. That is the point. You are removing cheap unqualified volume from the denominator. What should improve is cost per booked job, average job value from paid search, and the share of spend going to high intent queries. Set a baseline now so you can prove the change. A useful rhythm: weekly search term review for the first month, biweekly after, with a monthly reconciliation of ad spend against booked revenue by service line. Measuring PPC ROI is about refining strategies and optimizing spending, not just scoring the past month.
Start with the number you can actually verify
Pull last quarter's ad spend. Pull last quarter's booked jobs from paid search. Divide. If that number surprises you, your PPC management has been reporting the wrong metric. TruLata gives service businesses spend, cost per lead and a daily watch on account changes in one view, so the gap between reported leads and booked revenue stops being invisible. Take the live demo and see your own numbers the way they should have been reported all along.





