Insights 12 min read

Pay per lead, and nobody counts per sale

Google's Local Services Ads charge for the phone call, not the click, and they hand you the caller's number with the invoice. It is the easiest channel in the budget to attribute to closed revenue. Almost nobody does, because the lead inbox is not where the reports live.

A woman smiling as she takes a call on her mobile phone at her desk.
Photo by Mikhail Nilov on Pexels
Contents
  1. What Local Services Ads actually sell
  2. Google grades the lead. Only you can grade the sale
  3. The easiest channel to attribute, and the least attributed
  4. What to export, from where
  5. Cost per lead is Google's number. Cost per paid job is yours
  6. The credit window is a reconciliation deadline
  7. Where the revenue goes when nobody joins the files
  8. The honest report for a pay-per-lead channel

There is a channel in most home-services and dental budgets that already does the hardest part of attribution for you. It charges by the enquiry rather than the click. It records the enquiry's date and type. It gives you the caller's phone number, and often a recording of the call. Then it sends an invoice with every one of those enquiries itemised.

That channel is Google's Local Services Ads, and in the reports most businesses actually look at, it does not appear at all. It has its own inbox, its own reporting screen and its own billing, none of which are the Google Ads account the agency logs into on Monday. So the most attributable channel in the budget is usually the least attributed one — judged, if it is judged at all, on the number Google chose to show: cost per lead.

Local Services Ads tell you exactly what each enquiry cost. They cannot tell you what it was worth, and cost per lead is the number that lets you forget the difference.

What Local Services Ads actually sell

Local Services Ads are a pay-per-lead product: the advertiser is charged for each valid enquiry — a phone call, a message or a booking request — rather than for clicks or impressions.

The mechanics are worth stating plainly because they are unlike the rest of the Google budget. The ads sit above the ordinary search results for local service queries, they carry a verification badge, and a customer who taps one calls you or sends a message. Google's own getting-started guidance puts it in one line: pay only for leads related to your business and the services you offer. There is no bid on a keyword and no landing page in the sense a search campaign has one. The ad is, in effect, a listing with a phone number on it, and the phone number is the product.

A lead, in Google's definition, is a customer who reached you: an answered call, a voicemail, a missed call you returned, a text or email, a booking request. Leads that Google's models judge invalid or low quality are not charged, and charged leads can be reassessed later and credited back. The badge on the ad has changed too — the Google Guaranteed and Google Screened labels have been consolidated into a single Google Verified badge, and the money-back guarantee that came with the old one is being discontinued. None of that changes the shape of the transaction. You are buying enquiries, one at a time, at a price Google sets per category and area.

It is an unusually honest product. Most advertising asks you to pay for attention and hope it turns into contact. This one asks you to pay for contact. The catch is that contact is still not revenue, and the product's reporting stops exactly where the interesting question begins.

Google grades the lead. Only you can grade the sale

Google's lead assessment judges whether an enquiry was real and relevant; whether it became a paid job is recorded in your own booking or invoicing system, and the two records are never joined unless you join them.

The words "valid" and "quality" do a lot of work in the Local Services Ads documentation, and it is worth being precise about what they mean. Google's models assess a lead at first contact and, for charged leads, keep reassessing it; a lead later judged low quality can be credited automatically. Advertisers can also give feedback on individual leads. The whole apparatus is aimed at one question: should you have been charged for this enquiry?

That is a fair question and it is Google's to answer. But it is not the question a business owner is asking. A lead can be entirely valid — a real homeowner, in your service area, with a real blocked drain — and still produce no revenue, because they took three quotes and chose the cheapest, or because nobody picked up the phone in time, or because the job was a fifteen-minute call-out that did not cover the cost of the lead. Google's grading cannot see any of that. It is not supposed to.

Two ledgers, two questions
Google's lead inboxYour job system
What it recordsEvery enquiry the ad produced, with date, type and phone numberEvery job booked, completed and paid, with the customer's details
What it can tell youWhat you were charged, and whether the enquiry was realWhat you were paid, and for what
What it cannot tell youWhether the enquiry became a jobWhich enquiry, if any, produced the job
Who maintains itGoogleYou
The number it naturally producesCost per leadRevenue per job

Put the two side by side and the gap is obvious. One ledger ends at the enquiry; the other begins at the booking. The join between them — this lead became that job — exists in nobody's system, and it is the only fact that turns a media cost into a return.

"Valid lead" is Google's finding about whether you should have paid. "Paid job" is your finding about whether it was worth paying. Reporting the first as if it were the second is the whole mistake.

The easiest channel to attribute, and the least attributed

Because every Local Services Ads lead arrives with a phone number and a timestamp, it can be matched directly to a closed job — which makes its usual absence from revenue reports a failure of process rather than of data.

Consider what you are handed. The lead inbox holds, for every enquiry, the date and time, the type of contact, the job category the customer selected, the phone number they called from or the email they wrote from, and whether Google charged for it. Google's own reporting screen breaks charged leads down by call, message and booking, shows total spend, and lists every lead with filters. Compare that to a display campaign, where the best you get is an impression count, or an organic listing, where you get nothing at all.

A phone number is the strongest matching key in local services, because the customer will almost always give the same one when they book. A completed job in a field-service platform, a dental practice management system or a plain invoicing tool carries that number too. Normalise both to the same format — country code, no punctuation — and the join is a lookup, not an inference. There is no probabilistic model in it and no assumption about intent. Either the number that enquired is the number that paid, or it is not.

So why is the channel so rarely in the revenue report? Three reasons, none of them good.

  • It lives in a different place. Local Services Ads have their own inbox and reporting, separate from the Google Ads interface most reporting is built on. A dashboard that pulls from the Google Ads API has never seen a Local Services lead.
  • It is billed differently. Search spend is a monthly total; Local Services spend is a list of charged leads. The finance side sees an invoice; the marketing side sees a lead count. Neither is looking at the same file as the other.
  • Cost per lead is already there. Google shows it, it is comparable across categories, and it goes down when you dispute bad leads successfully. It feels like a performance number, and a number that feels like performance stops people looking for the real one.

The data has been sitting in the inbox all along. Nobody exported it.

What to export, from where

Reconciling Local Services Ads needs two files: the lead list from the Local Services inbox, and the closed-jobs list from whatever system records payment — both carrying the customer's phone number and a date.

From the lead side, export every lead for the period, not just the charged ones. Uncharged and credited leads are useful precisely because they should not match anything: a credited lead that turns out to have produced a paid job is a lead you were refunded for and profited from, and that is worth knowing before you dispute the next one that looks similar. The columns that matter:

  • Lead date and time — the moment the customer reached you, which is the start of the clock for how long the job took to close.
  • Lead type — call, message or booking. These close at different rates and the difference is one of the most useful things the reconciliation will show you.
  • Customer phone number and, where present, email. These are the match keys. Export them in full; a lead list with the last four digits masked cannot be reconciled with anything.
  • Job type as the customer selected it. Later you will want cost per paid job by category, and this is the category.
  • Charge status — charged, not charged, credited, disputed. This is what lets you separate "we paid for this and it went nowhere" from "we did not pay for this".

From the job side, export the completed or paid jobs for a window that runs past the lead period by however long your jobs take to close. For emergency plumbing that is days; for a kitchen refit or an implant consultation it can be months. Every row needs the customer's phone number and email as they were captured at booking, the close or completion date, and the invoiced amount. If your system stores a source field — "Google", "referral", "repeat" — export it too, but treat it as a claim to be tested rather than a fact. It was typed by whoever answered the phone, and it is the thing the reconciliation is about to check.

CloseRev takes the two files as they are exported, normalises phone numbers and emails on both sides, and matches a paid job to the lead that enquired from the same number. Exact matches count; anything weaker is shown for a person to accept or reject; and jobs that match no lead go into a Direct / Unknown bucket rather than being assigned to a channel by guesswork.

Cost per lead is Google's number. Cost per paid job is yours

Once leads are matched to jobs, the channel can be judged on the only figure that matters — what a paid job cost to acquire and what it returned — instead of the intermediate figure the platform reports.

Here is what the reconciled view looks like, using round numbers that are invented but not implausible for a mid-sized plumbing business. Read the shape, not the figures.

One month of Local Services Ads, reconciled against paid jobs (illustrative)
Emergency call-outsBoiler installsBathrooms
Charged leads642214
Cost per lead (Google's figure)$38$61$74
Lead spend$2,432$1,342$1,036
Matched paid jobs2962
Lead-to-job rate45%27%14%
Cost per paid job$84$224$518
Matched revenue$7,830$19,200$16,400
Revenue per lead dollar3.2×14.3×15.8×

Every row after "cost per lead" is invisible without the join, and each one changes the decision. On cost per lead, emergency call-outs are the bargain and bathrooms are the expensive category. On cost per paid job, bathrooms are six times dearer to win. On revenue per lead dollar, bathrooms are the best-performing category in the account by a distance — two jobs paid for the whole month's spend on the category several times over. Three different rankings from the same month, and only the last one is about money coming back.

It also exposes the leads that closed nothing, and this is where the reconciliation earns its keep operationally rather than just in the report. Of the thirty-five emergency leads that did not become jobs, some will be Google's problem — wrong area, wrong service, spam — and those are the ones to dispute. Some will be yours: calls that rang out, quotes that went out late, a booking request nobody answered until the next morning. The lead inbox cannot tell the two apart. The reconciled list, with the call recording beside the outcome, can.

A category with the cheapest leads and a category with the best return are rarely the same category. Cost per lead cannot see that; a reconciled jobs file cannot miss it.

The credit window is a reconciliation deadline

Google's lead credit and feedback processes operate on a roughly 30-day clock, which means reconciliation has to be at least monthly and is far more useful weekly.

Google's automated credits page says charged leads are reassessed over time and that credits, in most cases, land within 30 days. Advertisers can give feedback on leads they think were poor quality. All of that runs on a calendar that does not wait for your quarterly review. A lead that closed nothing and looks like it should never have been charged is worth raising while it is still recent; by the time a quarterly report notices it, the useful moment has passed.

A weekly reconciliation fits the channel. Most home-services jobs from a Local Services lead close within days, so a week is long enough to see outcomes and short enough that the leads which closed nothing are still fresh in the memory of whoever took the call. It is also short enough to catch the operational failures — the unanswered booking requests, the missed calls nobody returned — while they are still a habit that can be changed rather than a quarter that has been lost.

Businesses in categories where credits are not offered at all have a stronger reason to reconcile, not a weaker one. If there is no refund for a bad lead, then the only lever left is knowing which categories, areas and hours produce leads that pay, and moving the budget there. That knowledge comes from the jobs file, and from nowhere else.

Where the revenue goes when nobody joins the files

Unreconciled Local Services Ads revenue is not lost; it is credited to whichever channel happens to touch the customer next, so the channel that paid for the enquiry carries its cost without its return.

This is the same failure as any other unattributed channel, but it is worth walking through for this one specifically, because the leak has a shape. A customer taps the ad and calls. They get a quote. They think about it, come back a day later by searching the business name, and book through the website form. The website analytics record a form submission from organic branded search. The CRM records the source as "website". The Local Services inbox records a charged lead that, as far as anyone knows, went nowhere.

Or: the customer calls from the ad, the job is done that afternoon, they pay the technician on the doorstep. The invoicing system has a source field, and the technician — who had no reason to know how the customer found the number — leaves it on the default, which is "repeat customer" or blank. The revenue is real and recorded. The channel that produced it is recorded as having produced a lead and nothing more.

Multiply that across a year and the shape of the report is predictable: Local Services Ads look like an expensive lead source with a mediocre close rate, branded search and "website" look like they are quietly carrying the business, and the recommendation writes itself — cut the pay-per-lead spend and put it into the channels that convert. Which removes the thing that was creating the enquiries the other channels were harvesting.

The channel that paid for the phone call is the one most likely to lose the credit for the job, because the job is recorded by somebody who never saw the ad.

The honest report for a pay-per-lead channel

A defensible Local Services Ads report shows lead spend, matched paid revenue, cost per paid job by category, and the leads that closed nothing, split into the ones to dispute and the ones to fix.

It is a short report, and every line in it can be checked against a file somebody can open.

  1. Lead spend for the period, taken from the charged-lead list rather than the invoice total, so credits and disputes are already netted off.
  2. Matched paid revenue: the invoiced value of every job whose customer phone number or email matches a charged lead in the period, with the lag between lead and close shown so a reader can see the tail.
  3. Cost per paid job and revenue per lead dollar, by job category and by lead type. This is the line that reallocates budget.
  4. The unmatched charged leads, listed, with the call recording or message alongside — split into candidates for a Google dispute and failures on your own side.
  5. The paid jobs that matched no lead from any channel, reported as Direct / Unknown and left there. Not assigned, not modelled, not quietly folded into the channel that looked most plausible.

Notice what is not in it. There is no cost per lead as a headline, because it is an input rather than an outcome. There is no lead-quality score borrowed from Google's grading, because that answers a billing question. And there is no attributed figure that cannot be traced to a specific job and a specific enquiry, because that is the one property that makes the report worth arguing over.

A pay-per-lead channel is a gift to anyone who wants to measure marketing honestly. It has already reduced the problem to a list of phone numbers and a price against each one. The only thing left to do is the thing the platform cannot do for you: find out which of those numbers paid.

Questions people actually ask

Does Google already tell me which Local Services Ads leads were good?
Google tells you which leads it considers valid and chargeable — a real person, in your area, asking about a service you offer. That is a judgement about the enquiry, not about the outcome. A perfectly valid lead can still be a price-shopper who booked elsewhere, and only your own job or invoice records can say which leads became paid work.
What do I export to reconcile Local Services Ads against revenue?
From the lead inbox: every lead with its date, its type (call, message or booking), the customer's phone number or email, the job type, and whether it was charged. From your job system: every completed and paid job with the customer's phone and email, the close or completion date, and the invoiced amount. The two files match on the phone number, so both need it in full.
Why is cost per lead the wrong number for this channel?
Because it is the one number Google has already given you, and it stops at the point where your money is spent rather than the point where it comes back. Two categories with the same cost per lead can differ threefold in cost per paid job, and the difference is invisible until the lead file is reconciled against the jobs file.
How often should I reconcile Local Services Ads leads?
Weekly. Google's lead credit process runs on a roughly 30-day clock, so a monthly reconciliation regularly finds a lead that should have been queried after the point where querying it does any good. A week is long enough for most home-service jobs to close and short enough to act on what did not.
What happens to Local Services Ads revenue if I do not reconcile it?
It does not vanish; it gets credited to something else. A customer who called from the ad and then booked online looks like a website conversion. One who called and paid on site looks like walk-in or word of mouth. The channel that paid for the enquiry ends up with its cost on the ledger and its revenue under another name.

See it on your own numbers.

Two exports and a few minutes. Three days free, no card, nothing to install.