The ServiceTitan Google Ads integration sends tracked calls, booked jobs and, with Ads Optimizer, completed jobs with their revenue back to Google Ads as conversions, matched to the original ad click through the GCLID that ServiceTitan's dynamic call tracking (DNI) captures on your website. Out of the box, though, the only primary action is a lead call. Booked jobs arrive as secondary, and revenue only flows when Ads Optimizer is on. So the work is three things: confirm the click ID actually reaches the customer record, decide which ServiceTitan conversion action Smart Bidding should chase, and remove anything that double counts.
Names follow ServiceTitan's help center at the time of writing. The same features appear under Marketing Pro, Marketing Ads and ServiceTitan Max depending on your package.
What ServiceTitan sends to Google Ads.
You connect it under Settings > Integrations > Marketing Integrations, then Configure next to Google Ads (or Connect Now from the Marketing Overview screen), sign in, link the account and map campaigns. ServiceTitan's help center says account configuration by its support team is required, and that the Google Analytics integration and Dynamic Call Tracking using DNI must also be set up for the integration to be complete. Your site needs the Google tag and the DNI script. You do not build these conversion actions in Google Ads yourself. ServiceTitan creates them, and it does not edit or remove the conversion actions you already have.
- ServiceTitan Calls Conversion Action: lead calls through website DNI. Primary by default.
- ServiceTitan Booked Job - Originated from Website, and the matching Call Extension version: booked jobs by last touchpoint. Secondary by default.
- ServiceTitan Inbound Call, Lead Call - Extension, Integrated Lead Forms and Integrated Bookings: observation actions. Secondary by default.
- ServiceTitan Completed Jobs Conversion Action and Call Extension Completed Job Conversions: completed jobs with Total Revenue as the value. Primary, Ads Optimizer only.
- ServiceTitan JVP (Originated from Website, or from Call Extension): booked jobs with predicted revenue, primary only where Job Value Predictor is active.
ServiceTitan counts a call as a lead when it was booked, ran over 60 seconds unbooked without being excused, or was excused with the reason marked Is Lead. Excused calls such as out of area are not sent. Ads Optimizer, sold separately at the time of writing, adds revenue import and Job Value Predictor, and requires the Google Ads, Google Analytics and DNI integrations to be fully configured first.
How Google Ads treats those conversions.
ServiceTitan sends offline conversions matched to a click. These Google rules decide whether they move bids.
- Primary versus secondary. Primary actions appear in the Conversions column and drive bidding when their goal is used by the campaign. Secondary actions show only in All conv. and do not drive bidding, unless they sit in a custom goal.
- Auto-tagging must be on. Without it there is no GCLID in the landing page URL for DNI to capture.
- Google keeps a GCLID for 90 days. A conversion uploaded after that, or after the action's click-through conversion window, is rejected with an error that the identifiers are too old.
- Reporting date. Google reports conversions against the impression or click time, while ServiceTitan reports on the transaction date. The Conversions (by conv. time) columns are the fair comparison.
- Processing. Offline conversions usually process in under 12 hours, and a click under 6 hours old is rejected as too recent.
If you run your own offline import alongside or instead of the native integration, our working setup for offline conversions from your CRM covers file and connector uploads, enhanced conversions for leads and the Data Manager route Google now recommends.
Which action should drive bidding.
Left at defaults, Smart Bidding optimizes to lead calls over 60 seconds. A 70 second price shopper still counts. The booked job action is the stronger signal, and it ships as secondary.
Our order of preference: with Ads Optimizer, completed jobs with Total Revenue as the value, paired with a value-based strategy once volume supports it. Without Optimizer, consider promoting the booked job actions to primary and dropping the lead call action to secondary, as long as each campaign still produces enough conversions for bidding to learn. Job Value Predictor sits between the two, sending predicted revenue at booking so bidding does not wait days for an install to close. ServiceTitan notes JVP needs at least three weeks of data before you judge it.
Capturing the click ID on calls and forms.
Calls. When a visitor lands from an ad, the GCLID is in the URL. If that visitor calls the DNI number on your site, ServiceTitan stores the GCLID and assigns it to the caller. DNI has to run on every page a paid visitor can land on, including landing pages built outside the main site.
Call extensions and call assets are handled differently. ServiceTitan does not send its own conversions for calls from extensions, because Google already counts them with its calls-from-ads action. It uses its Smart Attribution to assign the campaign after the call, and with Optimizer it can send that call's revenue without a GCLID, using the caller's number, date and time. For that, ServiceTitan's help center lists conditions: Call reporting enabled in Google Ads, a ServiceTitan number set at account or campaign level (ad group level extensions block it), the number added to both the Google Ads campaign and the linked ServiceTitan campaign, the caller tapping the number in the ad rather than dialing it, and a call of at least 15 seconds.
Forms. A form that just emails the office loses the click ID. ServiceTitan accepts leads with a GCLID through its Marketing Ads Lead Form API endpoint or the Create Lead Attribution Form Zapier action, and bookings through the WebBookingAttributions API or the Create Lead Attribution Booking Zapier action. Your form has to read the GCLID from the landing URL and pass it in. How we route forms into the right ServiceTitan campaign is in ServiceTitan integrations for marketing.
Where the loop breaks.
- GCLID never stored: auto-tagging off, DNI script missing from landing pages, or a redirect that strips the gclid parameter before DNI reads it.
- Forms outside the integration: website or landing page forms that create leads by email or by a plain connector, with no GCLID passed to the lead form or booking endpoint.
- Call extension numbers not mapped: the ServiceTitan number is missing from the Google Ads campaign or the linked ServiceTitan campaign, an ad group level extension overrides it, or Call reporting is off.
- CSR overrides: a dispatcher changes the campaign at booking. Google still gets the original attribution, but ServiceTitan reports stop matching.
- Duplicate customers: a CSR creates a new customer instead of booking on the record tied to the tracked call, so the job sits on a customer with no call history. ServiceTitan's help center does not document this case, so we check it directly.
- Campaigns not mapped: Auto-Map turned off, or campaigns that do not show because ServiceTitan only lists campaigns with an impression in the past year or created in the past 30 days.
- Timing: long install cycles where the job completes after the 90 day GCLID life or the conversion window, and reports compared on different dates.
- Double counting: legacy tag-based conversions left primary next to ServiceTitan's.
How we diagnose it, top to bottom.
Symptom, cause and fix.
| Symptom | Likely cause | Fix |
|---|---|---|
| Lead calls show, booked jobs never move bids | Booked job actions are secondary by default | Promote the booked job or completed job action to primary, demote lead calls |
| Google calls show as Google Organic in ServiceTitan | No GCLID captured: auto-tagging off, DNI missing or redirect strips gclid | Turn on auto-tagging, put DNI on every landing page, remove the redirect |
| Form leads never appear as conversions | Forms bypass the Lead Form API or Zapier attribution action | Pass the GCLID into the lead form or booking endpoint |
| Conversions roughly double the booked calls | Old call or form tags still primary | Set legacy actions to secondary, keep one primary per stage |
| Extension calls land on a placeholder campaign | Number not on both campaigns, ad group extension or Call reporting off | Map the number in both places, remove ad group level extensions, enable Call reporting |
| Revenue in Google is far below ServiceTitan | Optimizer off, jobs finishing after 90 days, or comparing different dates | Confirm revenue import is on, use by conv. time columns, bid on bookings for long cycles |
| Some booked jobs carry no campaign | Duplicate customers or CSR overrides | Book on the existing customer, review Manual Marketing Attribution with CSRs |
When the native integration is not enough.
If your calls run through CallRail rather than ServiceTitan DNI, the click ID lives in CallRail and your bidding signal depends on how you push qualified calls from there, which we cover in the CallRail Google Ads integration. Either way, aim for one primary signal per campaign backed by a booked or completed job. That is the build we do in our Google Ads for contractors work.
Does ServiceTitan send revenue to Google Ads?
Yes, with Ads Optimizer. It turns on revenue import and adds completed job conversion actions that use Total Revenue as the value. Without Optimizer, the default actions send calls and booked jobs without revenue.
Do I need to create conversion actions in Google Ads for ServiceTitan?
No. ServiceTitan creates its own conversion actions after you connect the account. It does not change your existing actions, so you need to set legacy ones to secondary to avoid double counting.
How does ServiceTitan get the GCLID from a phone call?
Through Dynamic Call Tracking using DNI. When a visitor arrives from an ad with a GCLID in the URL and calls the DNI number on your site, ServiceTitan stores the GCLID on that caller.
Why do ServiceTitan and Google Ads show different revenue?
Google reports conversions against the click or impression date and ServiceTitan against the transaction date. Compare using the Conversions (by conv. time) columns, and remember jobs completed more than 90 days after the click cannot be matched.
Are call extension calls sent by ServiceTitan?
Not as ServiceTitan call conversions, because Google already counts them. ServiceTitan attributes the campaign after the call and, with Optimizer, can send that call's revenue using the caller's number, date and time.