The short answer
Save the Google Ads click ID (gclid, gbraid or wbraid) on the customer record in your CRM or field service software, then upload a conversion when the job is sold, with the sold amount and the job number. Upload daily, within 90 days of the click, and bid on sold jobs once the counts are trusted.
What should a home services company count as the conversion?
Three moments matter after the call or form: the estimate or appointment booked, the job sold, and the job completed and paid. Google Ads, left alone, only sees the first contact, so it treats a tire-kicker and a full replacement as the same win.
- Booked appointment: fast and frequent. A good early stage to import.
- Sold job: the signed estimate or contract, with a real dollar amount. The conversion worth bidding on.
- Completed or invoiced: closest to cash, but late. Useful for reporting and for correcting values, less so for bidding.
Pick the sold job as the target, import the booked appointment as well, and write down which status in the office software marks each one.
Step 1: How does the click get into the CRM or field service software?
With auto-tagging on, Google Ads puts a click identifier on the landing page URL: gclid, or gbraid or wbraid on some iOS traffic. That value has to travel with the lead into the system where the job is later sold.
Store the identifiers on arrival
Save them in first-party storage when the visitor lands, so a form or booking widget on another page can still read them.
Pass them through every web form and booking widget
Hidden fields on forms. For an embedded scheduler, check that it accepts the value; many run in a frame and do not see the page URL.
Tie calls to clicks
Home services leads mostly call. Call tracking with dynamic number insertion can attach a web visitor’s click ID to the call record. Make sure that record creates or updates the customer in the office software.
Map the field onto the customer and the job
ServiceTitan, Jobber, Housecall Pro, GoHighLevel and HubSpot can all hold custom fields. The click ID must still be there after the lead becomes a customer and the estimate becomes a job.
Handle repeat customers
A returning customer who clicks an ad creates a new click ID on an existing record. Decide whether the new job takes the new click, and write the rule down.
Step 2: How do you send sold jobs to Google Ads?
Create import conversion actions
One for Appointment booked and one for Job sold, each an import from clicks. Check Google Ads Help for the current path.
Send the sold amount as the value
Unlike a health or legal outcome, the job value is ordinary business data and the most useful thing bidding can learn from. Use the amount on the signed estimate, in the account’s currency.
Use the job or invoice number as the order ID
It prevents duplicates and lets you retract or restate a conversion later, within the window Google allows, when a job cancels or the price changes.
Upload daily, inside 90 days
Google will not import a click conversion uploaded more than 90 days after the click. Long sales cycles for roofing, solar or remodeling make the booked appointment import more important, not less.
Pick the transport
A scheduled file, Google Ads Data Manager, a native connector in the office software, or the Google Ads API. Any of them works if it runs every day and logs what it sent.
Enhanced conversions for leads adds hashed email and phone to the match, sent from the form page and again with the import. It recovers conversions whose click ID was lost, which is common on phone-first businesses. Google documents a shorter upload window for these than for click ID imports; check the current limit.
How do GoHighLevel and field service integrations fit?
Several CRMs and field service platforms offer their own Google Ads connection. That can be the simplest transport, as long as someone has checked three things: which status triggers the send, which value goes with it, and whether the click ID is actually on the record when it fires.
GoHighLevel, for example, can send a conversion to Google Ads from a workflow, such as on a pipeline stage change, and its documentation says the gclid, gbraid or wbraid must be on the contact record for the conversion to attribute.
Sending leads and booked appointments from GoHighLevel to Google Ads and Meta without double counting.
What about Meta?
The same sold job can go to Meta through the Conversions API as a server event, with the value and currency, the fbc value built from a stored fbclid, and hashed contact details. Meta rejects events more than seven days old, so the send has to run close to the moment the job is sold. For Meta lead form leads, store the Meta lead ID; its CRM integration matches on that.
How do you check it before the campaigns bid on it?
One job, end to end
A test lead from a tagged URL, booked, sold in the office software, and visible in Google Ads with the right value.
A weekly count
Sold jobs from paid traffic in the office software, jobs sent in the upload log, conversions Google accepted. The gap should be stable and explained.
The diagnostics page
Google Ads reports import errors and unmatched rows. Unmatched usually means the click ID never reached the record.
Once the counts hold, make Job sold the primary conversion and let bidding work on value. That is when budget can be judged on cost per sold job and revenue per dollar, instead of cost per call.
Common mistakes
- 01
Counting every call over a minute as a conversion
Existing customers, wrong numbers and parts questions all last a minute. The platform learns to buy more of them.
- 02
Losing the click ID when a lead becomes a job
Many systems create a new job or customer record and leave custom lead fields behind. Check the field after conversion, not just on the lead.
- 03
Two tools sending the same conversion
A native integration and a separate connector both firing Job sold doubles the count and inflates the value bidding sees.
- 04
Never correcting cancelled jobs
Without an order ID and an adjustment, a cancelled job keeps its full value in the account.
- 05
Uploading at month end
The 90 day click limit and the daily learning cycle both punish batch uploads. Automate it.
Straight answers
What we will not promise
- A number of sold jobs, a close rate or a cost per job before the campaigns have run.
- That Google Ads, Meta and the office software will report the same total. Each attributes by its own rules; what the business sends is defined, correct and tested.
Questions
Does this work with ServiceTitan, Jobber or Housecall Pro?
The method works with any system that can hold the click ID on the customer or job and report the sold date and amount, by export, connector or API. What each product sends natively changes over time, so it is checked in the account before anything relies on it.
Should I send the real job value or a fixed value?
For home services, the real sold amount is usually best. It is ordinary business data, and it lets bidding tell a repair from a replacement. Correct it with an adjustment if the job cancels or the price changes.
What about Local Services Ads?
Local Services Ads run on their own lead system and report differently from Search campaigns. Check what the current Local Services reporting accepts before assuming an offline import covers those leads.
How long before bidding improves?
There is no honest fixed answer. Campaigns relearn after a primary conversion changes, and the speed depends on volume. Import first, run it as secondary until the counts are trusted, then switch.