Google Ads bids on whatever you tell it counts. If the only conversions it sees are form fills and calls over 60 seconds, it learns to find people who fill in forms and call, including the tire-kickers, the price shoppers and the homeowner three ZIP codes outside your service area. The job that actually happens, booked on the schedule and paid on the invoice, happens in your field service software. Offline conversion tracking sends that event back to Google Ads, tied to the click that started it.
This guide covers which job events to send, what you need before you start, how to set it up, and the timing and value rules that trip contractors up. It sits under our Google Ads for contractors hub.
What Google Ads sees today, and why it's not enough
Out of the box, a contractor's Google Ads account usually counts three things: a form submission on the website, a tap on the phone number on a mobile page, and calls from the ad itself. Google is clear about the second one: for clicks on a number on your mobile site, it can track the clicks, not the phone calls themselves.1
All three are leads, not jobs. Say one shop answers 70% of calls and books 60% of what it answers, and another answers nearly every call and books 85%. Those are very different businesses, but Google Ads can't see the difference. It optimizes for the lead. Sending job events back changes what "good" means to the bidding system.
The three job events worth sending
Your job records can supply three distinct events. They aren't interchangeable.
| What it tells Google | Best used for | |
|---|---|---|
| Booked job | This click became a real appointment on the schedule, usually within a day or two | Primary conversion for repair, service and emergency campaigns: fast and plentiful |
| Completed job with invoiced revenue | The work was done and what it was worth, before tax | Value-based bidding and honest return on ad spend; secondary for most shops |
| Sold estimate | A replacement or install customer said yes, with the sold amount | Primary for install-heavy campaigns with enough volume; often weeks after the click |
Which one to make primary depends on the work the campaign sells. A conversion action marked primary is reported in the Conversions column and used for bidding; a secondary action appears in All conversions and isn't used for bidding (custom goals are the exception).2
| Campaign type | Example jobs | Primary event | Secondary events | Why |
|---|---|---|---|---|
| Emergency repair | No heat, burst pipe, no power to half the house | Booked job | Completed job with revenue | Booking happens within hours; volume is high enough to bid on |
| Routine service | Tune-ups, drain cleaning, water heater flush | Booked job | Completed job with revenue | Low ticket, high count; revenue tells you if it's worth it |
| Replacement and install | Heat pump, water heater, panel upgrade, reroof | Sold estimate (if 15+ a month) or booked estimate visit | Completed job with revenue | The sale takes weeks; too few sales starve bidding |
| Mixed "brand" campaign | Searches for your company name | Booked job | Everything else | These people were coming anyway; don't let them dominate bidding |
The 15-a-month line in that table is a rule of thumb from experience, not a Google threshold. The point is that a primary conversion should arrive often enough for bidding to learn from it.
What you need before you start
Prerequisites
- Auto-tagging turned on in Google Ads (Admin, Account settings, Auto-tagging), so every ad click lands with a gclid in the URL
- A website that saves the gclid from the landing URL and passes it into a hidden field on every request and booking form
- A lead record that stores the gclid exactly as received (Google says it is case sensitive)
- Jobs that keep the lead's source and click id when they're booked, completed and invoiced
- A privacy policy that tells customers you share data with third parties for ad measurement, and consent where the law requires it
- Someone who will upload on a schedule and read the diagnostics
Auto-tagging adds a gclid parameter to the URL people click from your ad.3 Google's setup guide asks you to capture it with a script on every page, store it (its sample uses local storage that expires after 90 days), and save it with each lead in your system.4 If your booking or form tool lives on another domain, check that it receives the gclid; this is where most setups quietly break.
Setting it up
- 1
Create offline conversion actions
Goals, Summary, create a conversion action for offline conversions: one for booked jobs, one for completed jobs with revenue, and one for sold estimates if you'll use it. Choose a category and a value setting for each.
- 2
Capture the gclid on every web lead
Turn on auto-tagging, store the click id when the visitor lands, and save it in a hidden field on every form, so it arrives on the lead with the UTM tags.
- 3
Map job events to conversion actions
Decide which event is primary per the table above. Write down how each value is set: invoiced revenue before tax for completed jobs, sold amount for estimates, none or a fixed estimate for bookings.
- 4
Upload or connect
Send each conversion with its gclid, conversion name, conversion time and value, at least weekly and ideally daily. Google recommends daily uploads, or a consistent schedule if daily isn't possible.
- 5
Check diagnostics
After the first uploads, open the conversion action's diagnostics. Unmatched clicks, conversion times before the click and time zone errors all show up there. Fix the source, not the spreadsheet.
Two timing details from Google's documentation. After creating a new conversion action, wait 4 to 6 hours before uploading to it; uploads in that window can take up to 2 days to appear.4 And if a click hasn't finished processing, Google suggests waiting about 6 hours on scheduled uploads before trying again.5 If you upload through code, note that Google's help center says offline conversion imports and enhanced conversions for leads moved to the Data Manager API starting June 15, 2026.6
If TradesForce manages your Google Ads, it can upload these job events from TradesWork for you once your Google Ads account is connected there. Any agency or tool that handles your uploads needs the same inputs: the click id on the lead, and the job event with its time and value.
Enhanced conversions for leads vs gclid imports
Gclid imports match on the click id alone. Enhanced conversions for leads add a second match: your form captures a hashed email or phone number with the Google tag, and when you later upload the job event with the same hashed data, Google matches it back to the ad. Google describes it as an upgraded version of offline conversion import, notes that it adds support for cross-device conversions, and still recommends sending the gclid alongside the customer data.6
It comes with obligations. You accept the customer data terms in your Goals settings, and Google's customer data policies require you to disclose that you share customer information with third parties for ad measurement and to get consent where legally required.7 Google's EU user consent policy applies to end users in the European Economic Area, the UK and Switzerland;8 for a U.S. contractor serving U.S. homeowners, the disclosure duty and state privacy law are the parts that apply, so put the disclosure in your privacy policy before you turn it on.
The age limit is shorter, too: conversions matched on customer data can be uploaded up to 63 days after the click, against 90 days for gclid.5 Start with gclid imports. Add enhanced conversions when you see a meaningful share of booked jobs from ads arriving without a click id.
Timing and value: lag, click windows and revenue
Here's how a replacement lead plays out on the calendar. The days are an example, not an average.
Day 0
Click and form
A homeowner searches for a heat pump quote, clicks your ad and sends the form. The gclid lands on the lead.
Day 1
Booked
The office books an estimate visit. Booked job conversion uploaded.
Day 4
Estimate presented
Three options presented in the home. No decision.
Day 19
Sold
The customer picks the middle option. Sold estimate conversion uploaded with the sold amount.
Day 33
Installed and invoiced
Install completed and invoiced. Completed job conversion uploaded with invoiced revenue before tax.
Day 90
Last day to upload
Google stops accepting conversions for this gclid. A sale that closes on day 95 can't be sent.
Three rules sit behind that calendar:
- The 90-day ceiling. Conversions with a gclid can be uploaded up to 90 days after the click.5 Some connected data sources import only the last 14 days on each run,4 so a fast schedule matters more than a perfect file.
- The conversion window. Each action has a window of 1 to 90 days after the click during which conversions count; Search campaigns default to 30 days if you don't change it.9 For replacement campaigns, set offline actions to 90 days so a day-33 install still counts.
- Adjustments. Google lets you adjust conversions and restate values up to 55 days from when the conversion was first recorded.5 If a job is refunded or a sale cancels, retract it.
On value: send invoiced revenue before tax, the same number your job records use. Value-based bidding needs values on all conversions.5 And if a job has no invoice yet, send nothing. A zero tells Google the job was worthless, which is a different statement from "not finished yet."
Common mistakes
| Mistake | What it does | Fix |
|---|---|---|
| Calls, forms and booked jobs all primary | One customer counts three times; bidding chases volume | One primary per campaign goal, the rest secondary |
| Uploading old history on day one | Clicks past 90 days are rejected; the rest skew learning | Start with clicks from the last few weeks and go forward |
| No gclid on booking-tool leads | Online bookings, often the best leads, never match | Pass the gclid to the booking tool or capture it before the redirect |
| Phone leads forced in | Calls to mailer or truck numbers have no click to match | Measure calls by tracking line in your job records |
| Sending revenue with tax | Return on ad spend looks better than it is | Use revenue before tax, matched to the invoice |
| Two conversions at the same timestamp | Google deduplicates identical gclid, name and time | Use the real event time for each job event |
How to measure it from your jobs
Uploading conversions is half the work. Check that Google's view and your schedule agree, every month.
Metric
Gclid capture rate
The share of leads from Google Ads that arrive with a click id. Below about 80%, something on your site is dropping it.
Google Ads leads with a gclid ÷ all leads tagged Google Ads × 100
Where the numbers come from: Your lead inbox, filtered to the Google Ads channel
Metric
Upload match rate
How many uploaded job events Google matched to a click. A falling rate usually means late uploads or a broken form field.
Conversions shown in Google Ads ÷ conversions uploaded × 100
Where the numbers come from: The conversion action's diagnostics, against your upload log
Metric
Cost per completed job (Google Ads)
What Google Ads spent for each job that was finished and invoiced. The number to judge campaigns on.
Google Ads spend ÷ completed jobs sourced to Google Ads
Where the numbers come from: Ad spend from Google Ads; completed jobs from revenue by marketing channel. If there were none, the month is blank, not zero
For the bigger picture of what a customer costs across every channel, see customer acquisition cost for contractors. For the website side of the same chain, see GA4 for contractors. The calls side runs through business phones with campaign tracking, and the habit underneath all of it is lead source attribution. Long-lag trades get their own treatment in our guides to HVAC lead generation and roofing lead generation.
A note on Facebook and Instagram: the same idea applies to Meta's ads, but Meta (Facebook) offline conversions aren't sent yet. TradesWork keeps the fbclid on the lead for when they are.
Free download · ExcelField Service KPI ScorecardTrack the 12 numbers that run a service business, week by week, with formulas already built in.Footnotes
-
Google Ads Help, "About phone call conversion tracking." https://support.google.com/google-ads/answer/6100664 ↩
-
Google Ads Help, "About primary and secondary conversion actions." https://support.google.com/google-ads/answer/11461796 ↩
-
Google Ads Help, "About auto-tagging." https://support.google.com/google-ads/answer/3095550 ↩
-
Google Ads Help, "Set up offline conversions using Google click ID (GCLID)." https://support.google.com/google-ads/answer/7012522 ↩ ↩2 ↩3
-
Google Ads Help, "Offline conversion imports FAQs." https://support.google.com/google-ads/answer/10029210 ↩ ↩2 ↩3 ↩4 ↩5
-
Google Ads Help, "Set up enhanced conversions for leads with the Google tag." https://support.google.com/google-ads/answer/11021502 ↩ ↩2
-
Google Ads Help, "Customer data policies." https://support.google.com/adspolicy/answer/7475709 ↩
-
Google, "EU user consent policy." https://www.google.com/about/company/user-consent-policy/ ↩
-
Google Ads Help, "About conversion windows." https://support.google.com/google-ads/answer/3123169 ↩