Imagine you own a dental practice and spend $3,000 a month on Google Ads. The dashboard shows 48 conversions. Reception says they booked 11 new patients from the website. Which number is right?
Usually, neither. The ads account is counting button clicks, repeat visits and existing patients rebooking. Reception is only counting the patients who said "I found you on Google." Somewhere in between is the truth, and until you track it properly you cannot know which campaigns pay for themselves.
This guide walks through exactly how I set up Google Ads conversion tracking for dental clinics, using Google Tag Manager. By the end you will know which conversions matter, how to set each one up, and how to prove the numbers are real.
What Dental Clinics Should Actually Track
Most practices track one thing: a contact form. That is not enough. Patients reach a clinic in four ways, and each should be its own conversion action in Google Ads.
| Patient action | Conversion action name | Typical value | Count setting |
|---|---|---|---|
| Online appointment booking | New Patient Booking | Highest | One per click |
| Phone call from the website | Website Call | High | One per click |
| Call from the ad itself | Ad Call (call extension) | High | One per click |
| Contact or enquiry form | General Enquiry | Medium | One per click |
Two rules make this work:
- Separate new patients from existing ones. If your booking tool asks "Are you a new patient?", pass that answer to Tag Manager and only fire New Patient Booking when it is yes.
- Set the primary conversion carefully. Mark New Patient Booking and the two call actions as primary. Mark General Enquiry as secondary so it is reported but does not drive bidding.
Before You Start: The Checklist
You need the following in place before touching Tag Manager:
- Google Tag Manager installed on every page of the site, including the booking page or booking subdomain.
- Google Ads conversion ID from Goals, then Conversions, then Summary. Each conversion action also has its own label.
- Access to your booking platform settings. Dental clinics typically use Dentally, Cliniko, Zesty, NexHealth, LocalMed or a generic tool like Calendly. You need to know whether it shows a thank-you page, fires a JavaScript event, or lives inside an iframe.
- A click-to-call phone number on the site, written as a tel: link, not an image.
- A cookie consent banner with Google Consent Mode v2 if you serve patients in the UK, EU or Australia.
If any of these are missing, fix them first. Tracking built on a broken foundation produces confident, wrong numbers.
Step 1: Create the Conversion Actions in Google Ads
In Google Ads, go to Goals, then Conversions, then New conversion action, then Website. Enter your domain, then choose "Add a conversion action manually" rather than letting Google auto-create one from a URL.
Create the four actions from the table above. For each one:
- Category: Submit lead form for forms, Book appointment for bookings, Phone call lead for calls.
- Value: Use a fixed value that reflects the average first-visit revenue. For a new patient booking that might be $150 to $300. Using values lets you compare campaigns by revenue, not just lead count.
- Count: One. A patient who submits the form twice is still one patient.
- Click-through conversion window: 30 days is a sensible default for dental.
- Attribution model: Data-driven.
Copy the conversion ID and the label for each action. You will need them in Tag Manager.
Step 2: Install the Google Ads Conversion Linker
In Tag Manager, create a tag of type Conversion Linker and set it to fire on All Pages. This single tag stores the click identifier from the ad in a first-party cookie so that conversions can be matched back to the click, even when the patient browses several pages before booking.
Without the Conversion Linker, a large share of your conversions will be lost on Safari and on any site with a cookie banner.
Step 3: Track Phone Calls From the Website
For most dental clinics, calls outnumber forms three to one. Track them properly.
- In Tag Manager, enable the built-in variables Click URL and Click Element.
- Create a trigger of type Click, Just Links with the condition: Click URL starts with
tel:. - Create a Google Ads Conversion Tracking tag with the Website Call conversion ID and label. Fire it on that trigger.
For calls from the ad itself, add a call asset to your campaigns in Google Ads and turn on call reporting. Google supplies a forwarding number and counts calls over a minimum duration you set, usually 60 seconds, as the Ad Call conversion. No Tag Manager work is needed for that one.
If you want to know which keyword drove each call from the website, that needs dynamic number insertion through a call tracking tool. For a single-location practice, the tel: click method above is usually enough to start.
Step 4: Track Contact Form Submissions
The right method depends on your form plugin.
- Forms with a thank-you page: Create a Page View trigger where Page Path equals the thank-you URL. Fire the General Enquiry conversion tag on it. Simple and reliable.
- Forms that submit without reloading (Gravity Forms, Contact Form 7, Elementor, WPForms, Fluent Forms): Use the plugin's success event. Most push an event to the dataLayer or fire a JavaScript event you can listen for with a Custom Event trigger. Do not use a generic form submission trigger that fires before validation; it counts failed and spam submissions too.
- Forms inside an iframe (HubSpot, Typeform, JotForm): The form runs on another domain, so your page cannot see it. Listen for the postMessage event the tool sends on successful submission, push it to the dataLayer, and trigger from that.
Whichever method you use, the rule is the same: fire the conversion on confirmed success, never on the button click.
Step 5: Track Online Appointment Bookings
This is where dental tracking usually breaks, because booking tools are built by software companies, not marketers.
If your booking tool redirects to a confirmation page on your domain: Use a Page View trigger for that page. This is the easiest case. Dentally and several NexHealth configurations work this way.
If booking happens inside an embedded widget: Tools such as Cliniko, Calendly and Zesty confirm the appointment inside the widget without a page change. They do, however, send a message to the parent page. Add a small Custom HTML tag that listens for that message and pushes a booking_complete event to the dataLayer. Then fire the New Patient Booking conversion from a Custom Event trigger.
If booking happens on the vendor's own domain: Install Tag Manager on the booking subdomain if the vendor allows it, and set up cross-domain measurement so the click identifier follows the patient. If the vendor does not allow any tags, ask whether they can pass the Google click ID back to you so you can upload conversions offline.
Capture new versus existing patient. Where the widget exposes the patient type, push it into the dataLayer alongside the event and add a trigger condition so only new patients count toward the primary conversion.
Step 6: Add Enhanced Conversions
Enhanced Conversions send a hashed version of the patient's email or phone number along with the conversion. Google matches it to a signed-in user, which recovers conversions that cookies alone miss. For clinics in markets with strict consent rules, this often recovers 10 to 20 percent of lost conversions.
- In each Google Ads conversion action, turn on Enhanced conversions and choose Google Tag Manager as the method.
- In Tag Manager, create a User-Provided Data variable. Point it at the dataLayer variables that hold the email and phone from the form or booking.
- In each Google Ads conversion tag, enable "Include user-provided data from your website" and select that variable.
The data is hashed in the browser before it leaves the page. No readable patient data reaches Google.
Step 7: Consent Mode v2
If your patients are in the UK, EU or Australia, a consent banner that simply blocks tags when declined will delete a share of your conversions from reporting. Consent Mode v2 fixes this by letting Google Ads model conversions from the visitors who declined.
Use a consent management platform that supports Consent Mode v2 natively, such as Cookiebot, CookieYes or Usercentrics. Confirm in Tag Manager that your Google Ads tags show consent settings for ad_storage, ad_user_data and ad_personalization. Then verify in Google Ads under Goals, then Conversions, then Diagnostics that Consent Mode shows as active.
Step 8: Test Before You Trust
Do not publish and hope. Test every conversion path.
- Open Tag Manager Preview and walk through each action: click the phone number, submit the contact form, complete a test booking.
- Confirm the right tag fires once, with the correct conversion ID and label, and that the User-Provided Data variable is populated.
- Use a tag debugger such as the Insighter Debugger Chrome extension to see the exact Google Ads request leave the browser, including the hashed user data.
- In Google Ads, open the conversion action and check the Diagnostics tab the next day. It should show "Recording conversions" and no tag issues.
- Compare conversions against your practice management system for two weeks. The numbers will not match perfectly, but they should move together.
Common Mistakes I Find in Dental Accounts
- Counting every form submission as a booking. Existing patients, job applicants and suppliers all use the contact form. Separate them.
- Firing conversions on button click. This counts people who never completed the form.
- No Conversion Linker. Conversions on Safari and after consent banners silently disappear.
- Auto-created conversions from Google Analytics imports plus manual tags. The same booking is counted twice and Smart Bidding over-spends.
- Booking widget never tracked. The clinic's most valuable action is invisible, so Google optimises for cheap form fills instead.
- No conversion values. Every lead looks equal, so the account cannot tell a $90 hygiene visit from a $4,000 implant enquiry.
What Good Looks Like
When this is set up correctly, your Google Ads account reports new patient bookings, website calls and enquiries as separate numbers, each with a value. Smart Bidding gets a clean signal about which clicks turn into patients. You can look at any campaign and see cost per new patient, not just cost per click.
That is the point of all of this: not more data, but a straight answer to "which ads bring patients through the door?"
