← All Guides

Google Ads Conversion Tracking for Plumbing Businesses: Calls, Emergency Jobs and Quote Forms via GTM

A practical guide for plumbers running Google Ads. Track emergency calls, after-hours calls and quote requests correctly with Google Tag Manager, connect them to ServiceTitan, Jobber or Housecall Pro, and stop paying for leads that never become jobs.

Atiqul Islam
Written by Atiqul Islam

Tracking & analytics specialist. 278+ GTM, GA4 and server-side tracking projects for clients in the US, UK and Australia.

Rather not do this yourself? I set this up for clients every week. Free 15-minute audit, no obligation.

Book a Free Audit

A plumber in Brisbane was spending $4,000 a month on Google Ads and told me the ads "sort of worked." The account showed 212 conversions last month. When we pulled up the call log, 212 included 60 clicks on the phone number that never connected, every repeat visit to the thank-you page, and 38 form submissions, half of which were suppliers and SEO salespeople.

Plumbing is one of the most expensive keyword categories in Google Ads. Emergency terms can cost $30 to $80 a click. At those prices, the difference between tracking leads and tracking real jobs is the difference between a profitable account and a money pit.

This guide shows how I set up conversion tracking for plumbing and drainage businesses with Google Tag Manager, and how to connect it to the job management software you already use.

What a Plumbing Business Should Track

Customer action Conversion action Priority Value approach
Call from the ad Ad Call Primary Calls over 60 seconds
Call from the website, business hours Website Call Primary Average call value
Call from the website, after hours Emergency Call Primary Higher value
Quote or booking form Quote Request Primary Lower value than a call
Online booking confirmed Booked Job Primary Average job value
Booked job from field software Offline Booked Job Primary Actual job value

The last row is what separates a good plumbing account from an average one. Everything else measures leads. The offline import measures jobs.

Before You Start

  1. Google Tag Manager on every page of the site, including any landing pages built in a separate tool.
  2. A tel: link on every phone number. Many plumber sites show the number as text or an image in the header, which cannot be tracked.
  3. Google Ads conversion IDs and labels.
  4. Access to your job management software settings: ServiceTitan, Jobber, Housecall Pro, Fergus, simPRO or Tradify. You need to know whether it can store a Google click ID against a job.
  5. A decision about your business hours for the emergency split.

Step 1: Conversion Actions in Google Ads

Create the website conversions manually under Goals, then Conversions. Use Phone call lead for the calls, Submit lead form for the quote form and Book appointment for online bookings. Set Count to One for forms and bookings, and One for calls.

Set the click-through conversion window to 7 days for emergency calls and 30 days for everything else. A blocked drain is not a considered purchase.

For the Ad Call conversion, add call assets to your campaigns with call reporting on and a 60 second minimum duration. Google counts those automatically.

Step 2: Conversion Linker

Create a Conversion Linker tag firing on All Pages. This stores the click identifier so the conversion can be matched to the ad click. Skip this and a large share of your Safari and mobile conversions will vanish.

Step 3: Website Calls, Split by Time of Day

Enable the Click URL built-in variable. Create a Click, Just Links trigger with Click URL starting with tel:.

To split emergency calls, create a Custom JavaScript variable in GTM that returns business_hours or after_hours based on the visitor's local time and your trading hours:

function () {
  var now = new Date();
  var day = now.getDay();
  var hour = now.getHours();
  var weekday = day >= 1 && day <= 5;
  if (weekday && hour >= 7 && hour < 17) { return 'business_hours'; }
  return 'after_hours';
}

Create two triggers from the tel: click: one with the variable equal to business_hours, one equal to after_hours. Fire the Website Call tag on the first and the Emergency Call tag on the second.

If you use a call tracking platform with dynamic number insertion, use its Google Ads integration instead and skip the tel: method. It will give you call duration and recordings, which are useful for lead quality.

Step 4: Quote Request Forms

Fire the conversion on confirmed submission only. If the form redirects to a thank-you page, use a Page View trigger on that URL. If it submits in place, use the form plugin's success event. Guides for Gravity Forms, WPForms, Fluent Forms and Elementor on this site have the exact listener code.

Then reduce spam:

Step 5: Online Booking

If you take bookings through Housecall Pro, Jobber or ServiceTitan's online booking widget, the confirmation step is usually inside an iframe or on the vendor's domain.

Step 6: Offline Conversion Import From Your Job Software

This is the step that turns lead tracking into job tracking.

  1. Capture the Google click ID. Add a small script on your site that reads the gclid URL parameter and stores it in a first-party cookie for 90 days. Google also sets this automatically when Enhanced Conversions for Leads is on.
  2. Pass the click ID into your job software. Add a hidden field to your quote form that populates from the cookie and maps to a custom field on the customer or job record. For phone calls, your call tracking platform can pass it, or you can use Enhanced Conversions for Leads, which matches on email or phone instead.
  3. Export booked jobs weekly with the click ID, job date and job value. ServiceTitan and Jobber both support custom fields on jobs that can be exported.
  4. Upload to Google Ads under Goals, then Conversions, then Uploads, or connect a Google Sheet that Google Ads reads on a schedule.

Once this is running, mark Offline Booked Job as a primary conversion and consider demoting Quote Request to secondary. Smart Bidding then learns which searches produce jobs, not form fills.

Step 7: Enhanced Conversions

Turn on Enhanced Conversions for the quote form and booking. Create a User-Provided Data variable in GTM pointed at the email and phone fields from the dataLayer, and enable it in the conversion tags. The data is hashed in the browser.

Enhanced Conversions for Leads is particularly useful for plumbers because it lets you upload offline jobs by customer email or phone, without needing the click ID to survive the journey from form to invoice.

Step 8: Test, Then Reconcile Against Jobs

  1. Preview in GTM. Click the phone number during and outside business hours by temporarily changing the variable, submit the form, complete a test booking. Confirm one tag per action.
  2. Use a tag debugger like the Insighter Debugger extension to confirm the Google Ads request carries the right label.
  3. Next day, check Diagnostics on each conversion action.
  4. After two weeks, compare Google Ads conversions with booked jobs in your software. Expect Google Ads lead conversions to be higher than jobs. If offline imports are working, Offline Booked Job should match your software closely.

Mistakes I See in Plumber Accounts

The Outcome

With this setup, your Google Ads account tells you the cost per booked job for every campaign and keyword, including after-hours emergencies. That is the number you need to decide whether a $60 click on "emergency plumber near me" is a bargain or a waste. Most of the time it is a bargain. Until you track it, you are guessing.

Frequently Asked Questions

Most of my leads are phone calls. Do I even need website tracking?

Yes, because a large share of calls start on the website, not from the ad. Tracking tel: link clicks on the site, plus call assets on the ads, gives you both halves. Without website call tracking, your campaigns get credit for only the calls made straight from the ad.

What about Local Services Ads?

Local Services Ads have their own lead reporting and do not use Google Ads conversion tracking. This guide is for regular Search campaigns. Many plumbers run both, and the setup here makes the Search side measurable so you can compare cost per booked job across the two.

Should after-hours calls be a separate conversion?

It helps. Emergency after-hours jobs are worth more and come from different searches. Create a separate Website Call conversion that fires only outside business hours using a GTM time-based condition, or schedule your emergency campaign separately and read calls by campaign.

How do I stop paying for spam form fills?

Fire the conversion only on confirmed submission, add a honeypot field or reCAPTCHA, and count one conversion per click. Then import booked jobs from your field service software as offline conversions so Smart Bidding learns from real jobs, not form fills.

What value should I put on a call?

Work backwards from your numbers. If one in three calls becomes a job and the average job is $450, a call is worth about $150. Use that as the conversion value and update it twice a year.

Want This Done Right the First Time?

Book a free 15-minute audit call. I'll review your setup, show you what is broken, and tell you exactly what it takes to fix it.

Chat Now