Guide · 7 min read

Cost per lead vs. cost per job: why your Google Ads dashboard can't tell you which campaigns pay

Cost per lead and cost per paid job can rank the same campaigns in opposite order. A real example ($4–$26 per lead, $20–$483 per job) and how to calculate yours.

Key facts
  • Cost per lead = ad spend ÷ leads (forms, calls, chats). Cost per job = ad spend ÷ paid jobs. They are different numbers and can rank your campaigns in opposite order.
  • In one real account (auto film shop, Minneapolis, 60 days, $7,328) cost per lead ranged from $4 to $26 across five campaigns. Cost per paid job ranged from $20 to $483.
  • Google Ads optimizes for what it can measure. If paid jobs aren't reported back as conversions, bidding chases leads.
  • Calculating cost per job needs three things: spend by campaign, a record of paid jobs, and a link between them (usually the Google click ID or the lead source and date).
  • Judge cost per job over 60–90 days. Jobs are credited to the day of the click and land weeks later, so the latest two weeks always look worse than they'll end up.

Every Google Ads report you've seen shows a cost per lead or a cost per conversion. Almost none show what you actually care about: how much ad money it took to get one person who paid. This guide explains why those two numbers drift apart, shows a real account where they ranked the campaigns in opposite order, and walks through how to calculate your own.

What each number measures

Cost per lead is ad spend divided by the number of people who raised a hand: submitted a form, called from the ad or the website, started a chat. Google Ads calls these conversions and reports them within hours of the click. It's the number most dashboards, most agencies and most monthly reports are built around.

Cost per job (cost per customer, cost per paid job, cost per sale) is ad spend divided by the number of those people who went on to pay you. It needs information Google doesn't have: what happened after the lead. It arrives late, because jobs close days or weeks after the click, and it's only available if someone records which leads became customers and connects that record back to the campaign.

The two numbers would move together if every campaign converted leads into customers at the same rate. They almost never do.

Why they diverge

Four things routinely make a campaign look cheap per lead and expensive per customer, or the other way around.

  1. Different intent. A campaign bidding on “PPF vs ceramic coating” attracts people researching. A campaign bidding on your business name attracts people who've already decided. Both produce leads at a low cost. Only one produces customers at a low cost.
  2. Different services and ticket sizes. High-ticket services get more shopping around. A $3,000 job gets five quotes; a $300 job gets one call. The high-ticket campaign's lead-to-job rate will be lower, which may be perfectly fine, but it means its cost per lead understates its cost per job by more.
  3. Geography and logistics. Leads from 40 miles away are as cheap as leads from 4 miles away. They just don't book, or they book and you lose money on drive time. Cost per lead is blind to this; cost per job isn't.
  4. Lead type. Calls and forms close at very different rates, and the mix of calls versus forms differs by campaign, device and hour. A campaign heavy on after-hours mobile clicks produces plenty of “leads” that were never answered.

The campaign that produces your cheapest leads and the campaign that produces your cheapest customers are usually not the same campaign.

A real example

Below is a real Google Ads account: a paint protection film and window tint shop with two locations around Minneapolis, over 60 days in 2026. Business and campaign names are changed; numbers are not. The shop's job software already reported completed jobs back to Google Ads, which is what made the right-hand column possible.

Auto film shop · Minneapolis · Aug 10 – Oct 8, 2026 · $7,328
CampaignSpendLeadsCost / leadPaid jobsCost / job
Paint protection · city$2,417102$245$483
Paint protection · suburb$1,20747$266$201
Window tint · city$1,140111$107.5$152
Window tint · suburb$1,383134$1021$66
Brand-name searches$1,180289$458.5$20
Total$7,328682$1198$75

On cost per lead, the spread is about 6× ($4 to $26) and every campaign sits in a range most owners would accept. On cost per job, the spread is 24× ($20 to $483). The campaign with the largest budget, a third of the account, produced 5 of the 98 jobs. Two window tint campaigns had an identical $10 cost per lead and a 2.3× difference in cost per job ($66 versus $152).

Nothing in the dashboard flagged any of this, because the dashboard was reporting the left-hand columns. The full case study walks through what we recommended and the assumptions behind the projection.

How to calculate your own cost per job

  1. Pick a window. 60 to 90 days ending at least two weeks ago, so most jobs from those clicks have had time to close.
  2. Pull spend by campaign for that window from Google Ads (Campaigns view, set the date range, download).
  3. List the paid jobs from your CRM, shop software or invoicing for leads that arrived in that window. You need, per job: the date the lead came in and how it came in (which form, which phone number, or better, the Google click ID your form captured).
  4. Match jobs to campaigns. If your forms capture the Google click ID (gclid), the match is exact. If not, match by lead source and date: a call to the tracking number used only in campaign X on a day campaign X was running. Imperfect, but far better than nothing.
  5. Divide. Spend per campaign ÷ paid jobs per campaign. Then look at the spread. A 2× spread between campaigns is normal. A 5× or 10× spread means the budget is almost certainly in the wrong place.
Shortcut. If your CRM or shop software already sends completed jobs back to Google Ads as a conversion action, you can skip steps 3–5: add a column for that conversion action in the Campaigns view and divide. Check that it's the right action; see primary vs. secondary conversions.

If you have no job data yet

You're not alone; most accounts under $20,000 a month don't connect the loop. Three steps, in order of effort:

  • Start recording lead outcomes today. Even a spreadsheet with date, source, and “won / lost” lets you compute cost per job next quarter.
  • Turn on the integration you already pay for. ServiceTitan, Jobber, Housecall Pro, Urable, Shopmonkey, GoHighLevel and most practice-management systems can send booked or completed jobs to Google Ads, either natively or through an offline conversion import.
  • Until then, use quality proxies. Calls over 60 seconds, forms with a vehicle or address filled in, leads your front desk marked qualified. They're not jobs, but they separate research traffic from buyers better than raw lead counts.

Common mistakes

  • Judging the last two weeks. Jobs are credited to the click date. Recent weeks always look expensive per job because their jobs haven't closed yet.
  • Counting the wrong conversion action as a job. “Clicked phone number” and “visited the booking page” are not jobs. The audit lists every action and what it really measures.
  • Mixing brand searches into non-brand campaigns. People searching your name close cheaply. When those searches land in a non-brand campaign, that campaign looks better than it is. In the account above, $209 of “non-brand” spend was really brand searches.
  • Ignoring split credit. Google divides a job between campaigns when several clicks preceded it, which is why receipts show half jobs. Keep the fractions; rounding them away shifts credit toward whichever campaign you round up.

Questions people ask

Is cost per job the same as cost per acquisition (CPA)?

Only if your conversion action is a paid job. In most local service accounts the CPA shown in Google Ads is cost per lead, because the conversion actions are form submissions and calls. Cost per job is the CPA you'd see if the only conversions counted were customers who paid.

What's a good cost per job?

There's no universal number. It depends on your ticket size and margin. A $483 cost per job is excellent for a $5,000 roof and ruinous for a $300 tint. The useful comparison is between your own campaigns: when one closes at $20 and another at $483 from the same account, the budget split is the problem regardless of what 'good' is.

Can Google Ads optimize for paid jobs directly?

Yes, if paid jobs reach Google Ads as a primary conversion action with enough volume. Many CRMs and shop systems can send booked or completed jobs back via offline conversion import or native integrations. Until then, Google optimizes for the primary actions it has, which are usually leads.

What if half my jobs come from leads that never clicked an ad?

That's normal, and it's why matching matters. Only jobs that trace back to an ad click count toward cost per job for that campaign. Jobs from referrals or organic search are real revenue, but they shouldn't be credited to a campaign that didn't produce them.

See your own receipt.

Grant read-only access to your Google Ads account. In 2–3 business days you get a plain-English audit showing the dollars that produced customers and the dollars that didn't. Free, no obligation.

Read-only accessNo contractFlat fee, never % of spend
Get my free ad audit → See a sample report