Skip to main content

How do I tell which Google Ads campaigns produced actual work, not just leads?

Google Ads Published August 7, 2026
Short Answer

Carry an identifier from the click all the way to the job record, then report booked jobs and completed revenue by campaign instead of conversions by campaign. Tracked phone numbers and the click identifier stored with each lead are what make that join possible. Without them, campaign reporting stops at the lead and you are ranking channels by a number that ignores whether anyone bought.

Where measurement stops by default

Google Ads can see the click and, with call tracking, the call. It cannot see the dispatch, the estimate, the sold job or the invoice. Your field service system can see all of those and has no idea which campaign produced them.

So the default report ranks campaigns by cost per lead, a metric that treats a tire-kicker and a system replacement as the same event. Two campaigns with identical cost per lead can differ enormously in what they actually deliver.

This gap has a predictable consequence. Over time, budget flows toward whatever produces the cheapest leads, which is almost never whatever produces the most profitable work. The account optimizes itself into a shape nobody chose, and every individual decision along the way looked defensible.

What has to be captured at lead creation

  • The click identifier. GCLID, or the equivalent parameters used when cookies are restricted, stored on the lead record rather than only in the browser.
  • Campaign, ad group and keyword. Captured at the session, not reconstructed later from a landing page URL.
  • The tracked phone number. Dynamic number insertion ties a call back to the session that produced it.
  • A timestamp and the caller's number. These are what let you match a lead to a customer record created minutes later by a dispatcher typing manually.

The two metrics that change decisions

Booked job rate by campaign is the first: of the leads a campaign produced, what share became scheduled work. This is where campaigns that look identical on cost per lead separate, and the differences are usually large.

Revenue per lead by campaign is the second. It folds in job size, which is how a campaign with an expensive cost per lead can turn out to be the best one you run. Reporting both is the core of revenue intelligence and the reason to connect the ad platform to ServiceTitan or whatever system holds your jobs.

Report the unmatched bucket honestly

No join is complete. Customers call from untracked numbers, book weeks after the click, or were referred and searched your brand later. A credible setup states its match rate and leaves the unmatched portion as unknown rather than distributing it across campaigns to make the totals tidy.

The unmatched share is itself a useful metric. When it grows, something upstream broke — a number swapped out, a form changed, a landing page dropped its parameters. Watching that ratio is one of the cheapest early warnings available in marketing intelligence.

Topics: attribution · booked jobs · revenue by campaign · integration

Have a version of this question about your own business?

The useful answer usually depends on which systems you run and how they're connected. That's a conversation, not a blog post.

Related Answers

People who read this also asked

Browse the Answer Hub →

AI is easy to access. Making it useful is hard.

Bluefrog makes AI useful by integrating it with the way your business actually works — your software, your calls, your customers, your marketing and your revenue.

Technology development since 1997 · AI integration platforms since 2001