Clinic Mastery Marketing

Google Ads

Why your clinic can't track its Google Ads bookings

The booking software is usually the reason your numbers are guesswork, not the ads.

By Pete Flynn · 12 June 2026 · 6 min read

When a clinic owner tells me their Google Ads "aren't working", my first question is never about the ads. It's about the booking page. After years of auditing accounts across the Clinic Mastery community, I can tell you the single most common reason a clinic can't see whether Google Ads works has nothing to do with keywords, budget, or ad copy. It's the booking software. Embedded and iframe booking widgets quietly break the conversion signal, and once that signal is broken, every other number on the screen is guesswork. Here is what's actually happening, and what good tracking looks like.

Your booking software sets the ceiling

The clinic software tracking tier list.

A

Clean completion signal

Minimal setup

Cliniko (hosted)Nookal (portal)Splose

A real confirmation page or completion event fires the moment a booking finishes. You wire it to Google Ads through GTM, usually via GA4.

B

Trackable through GA4

Supported, less direct

Zanda

Fires a native booking completed event to a GA4 property you connect, which imports into Google Ads. Solid and supported, just routed through GA4 rather than a tag you inject.

C

No native completion signal

Custom build needed

Halaxy

The container loads, but nothing fires when a booking finishes. Counting completions takes a custom trigger plus a cross domain fix. Developer work, not out of the box.

Where each system keeps the completed booking

Cliniko

Confirmation page URL on the hosted booking page

Nookal

Purchase event in the dataLayer from the hosted portal

Splose

A booking confirmed element on the single page flow

Zanda

Native GA4 booking completed event you connect

Halaxy

No native signal. A custom GTM trigger built by hand

None of these connect natively to Google Ads. Tag Manager, usually bridged through GA4, is the connector. The work is reading the completion signal wherever your software keeps it.

Embed or link out? It depends on the system

Cliniko and Splose

Embed it

The completion signal is readable right there on the page.

Nookal

Use the portal

The iframe breaks tracking, so the hosted page is the clean path.

Halaxy and Zanda

Either works the same

The booking runs on the vendor page, so only the tag you set inside the vendor counts.

The number on the screen doesn't matter

Before we touch the booking software, I want to be blunt about why this matters. If your conversion tracking is broken, the cost per booking in your Google Ads dashboard is a work of fiction. It might say $40. It might say $300. Neither figure is real, because the thing being counted isn't a booking. Until the signal is clean, you cannot optimise, you cannot compare, and you cannot decide whether to spend more or pull back.

This is why I tell owners that the booking page is usually the real bottleneck, not the ads. People spend weeks rewriting headlines and adjusting bids while the actual leak sits in the one place nobody looks. If you want to understand the wider picture of why cost per booking varies so much, it starts here, with whether you can measure a booking at all.

If the tracking is broken, the cost per booking on your screen is a work of fiction.

Why the widget hides the booking from Google

Here are the mechanics, in plain terms. Most clinic websites embed their booking system inside the page using an iframe or a widget. Cliniko, Halaxy, Nookal, MindBody and others commonly work this way. The patient fills in their details and confirms the appointment inside that little embedded box. The problem is that the box is usually a separate page running on the booking provider's domain, and the page wrapping it generally cannot see what happens inside.

Google Ads tracks a conversion by firing a tag when something happens, usually when a confirmation page loads. But in this setup the confirmation never loads on your site. It loads inside the widget, on someone else's domain, sealed off from your tracking. So your tag has nothing to fire on. The booking genuinely happened. Google just never heard about it.

This is also why a conversion and a conversion action are not the same thing. A real patient booked an appointment, but no conversion action recorded it. The two get conflated constantly, and the gap between them is exactly where clinics lose their ability to measure anything.

Nothing tracked, or everything tracked

When the widget hides the real booking, clinics tend to fall into one of two traps, and both are worse than they look.

The first is nothing tracked. The page can't see the booking confirmation, so no conversion fires at all. Your dashboard shows zero, or close to it, and the owner concludes Google Ads doesn't work. It works fine. The scoreboard is just unplugged.

The second is everything tracked. To get a number on the board, someone sets the conversion to fire on a button click, a page view, or a directions tap. Now every person who clicked the Book Now button counts as a booking, including the ones who opened the widget, saw the next available appointment was three weeks out, and closed the tab. This is the same trap I describe in the tap that doesn't quite turn off: a signal that's technically firing but measuring the wrong moment.

Tracking a button click counts the people who looked and left as if they booked.

Good tracking

  • Fires on a verified booking completion, after the appointment is confirmed
  • Counts one booking per patient
  • Reflects fee for service patients you can actually serve
  • Matches what you see in your practice management software

Broken tracking

  • Fires on a button click or page view, before anyone has booked
  • Counts intent, hesitation and abandonment as bookings
  • Inflates conversions and produces a fake low cost per booking
  • Has no relationship to what landed in your calendar

What good tracking actually is

Good tracking is a verified booking completion conversion. Not a page view. Not a button click. The signal should fire only after a real appointment is confirmed, and it should match what you can see in your practice management software at the end of the week. If your Google Ads conversions and your actual bookings don't reconcile, the tracking isn't done.

For an embedded widget, getting that clean signal usually takes custom development. Cliniko's embedded booking can often be tracked by listening for a message the widget posts back to the parent page when a booking completes, though the exact setup depends on how the widget is embedded. Halaxy can be harder, because some configurations only expose tracking at the practitioner level, so a common workaround is treating the Book Now page as the conversion point instead. Some platforms make direct conversion tracking difficult or block it, and pop up booking flows sit outside the page entirely. None of this is plug and play, and any agency that tells you it is hasn't met your booking system yet.

Common platforms and what they need

Cliniko

Listen for the booking message

Embedded booking can often be tracked by listening for a message the widget posts back to the parent page when a booking completes. Setup varies by embed.

Halaxy

Track the Book Now page

Some configurations only expose practitioner level tracking, which blocks a clean campaign signal. A common workaround is treating the Book Now page as the conversion point.

Locked down platforms

Direct tracking is hard

Some platforms make direct conversion tracking difficult or block it outright. Plan for a workaround or a different measurement point from the start.

Pop up flows

Sit outside the page

A pop up booking flow runs outside your page, so the booking completion is invisible without custom code.

Why this has to come first

Once the signal is clean, everything downstream becomes real. You can see that a healthy physio account costs roughly $80 to $100 per booking and check yourself against it honestly. You can spot the patient types who aren't actually reachable on Google. You can tell whether your website is even ready to take the traffic. None of that analysis means anything if the foundation is guesswork.

I'd go further. Fixing tracking before scaling spend is not optional. Putting more budget behind a campaign you can't measure is just spending faster in the dark. Get the booking completion firing first, reconcile it against your real calendar for a couple of weeks, and then make decisions. The number on the screen only matters once it's true.

Not sure if your tracking is real?

We audit clinic Google Ads accounts and check whether your booking page is actually reporting bookings.

If your conversions don't reconcile with your calendar, we'll find out why and tell you exactly what your booking system needs.

Get a free Google Ads audit

Common questions

The questions that come up most often.

How do I know if my booking tracking is actually working?

Reconcile your Google Ads conversions against your practice management software for a couple of weeks. If the number of bookings Google reports doesn't match the bookings that actually landed in your calendar from ad traffic, the tracking is wrong. A clean setup should line up closely with what you can see in your own system.

Can every booking system be tracked properly?

Most can, but not all in the same way and not all without custom development. Embedded widgets like Cliniko often need custom code to pass a completion signal back to your page. Some platforms make direct conversion tracking difficult or block it, so you have to measure at a different point or accept a workaround. The right approach depends on your specific booking software.

Should I just track the booking button click instead?

No, because a button click is not a booking. Tracking the click counts everyone who opened the widget and then left without confirming, which inflates your conversions and produces a fake low cost per booking. You want a verified booking completion as your conversion, so the number reflects patients who actually booked, not patients who only looked.

Want this for your clinic?

We'll show you what good looks like for your account.

Send us your Google Ads account access. We'll send back a written audit covering wasted spend, missed opportunities, and the fixes we'd make first.

More insights

Keep reading.