How to track bookings from Google Ads in Cliniko
If your Google Ads account counts clicks or button presses as conversions, it is optimising for the wrong thing. Here is how to make a completed Cliniko booking the conversion that counts.
Why the booking is the conversion that matters
Google Ads learns from the conversions you report. If you tell it a conversion is someone clicking "Book now", it will find you more people who click "Book now", including the many who never finish booking. If you tell it a conversion is a confirmed appointment, it learns what a patient who books looks like.
Cliniko supports this through Google Tag Manager. The idea is simple: when a patient completes a booking, Cliniko shows a confirmation page, and you fire your Google Ads conversion tag on that page.
What you need before you start
- A Google Ads account with an active campaign.
- A Google Tag Manager (GTM) container, ideally the same one used on your website.
- A Google Analytics 4 property, linked to Google Ads. Optional for the conversion itself, but very useful for reporting.
- Cliniko online bookings switched on, with your GTM container ID added to your Cliniko account. Cliniko's help centre shows where this setting lives.
Step 1: Decide between hosted and embedded bookings
Cliniko bookings can run on Cliniko's own hosted booking page, or be embedded inside your website in an iframe. This choice matters more than any tag setting.
Embedded bookings look neat, but iframes do not pass referral information through, and Google Analytics cross-domain tracking does not work inside them. The result is that bookings often show up as "Direct" or as coming from your own website, and the link back to the ad is lost. Cliniko's own guidance is that if accurate conversion tracking is essential, you should send patients to the hosted booking page.
Our recommendation: point your "Book now" buttons at the Cliniko hosted booking page and set up cross-domain tracking (Step 5). It is the most reliable setup for most clinics.
Step 2: Create the conversion action in Google Ads
In Google Ads, go to Goals, then Conversions, and create a new website conversion action set up manually. Sensible settings for a clinic:
- Category: Book appointment.
- Count: One. A patient who books twice in a session should not count as two separate ad wins.
- Value: optional. If you know the typical value of a new patient, you can use it; if not, leave it out rather than guess.
When you save it, Google gives you a Conversion ID and a Conversion Label. You need both for the next step.
Step 3: Add the tags in Google Tag Manager
In GTM, create:
- A Conversion Linker tag, firing on all pages. This stores the ad click information so the conversion can be matched back to the ad.
- A Google Ads Conversion Tracking tag, using the Conversion ID and Label from Step 2.
- A trigger for that tag: a Page View trigger set to "Some Page Views", where Page Path contains
bookings/confirmation. That is the page Cliniko shows once a booking is complete.
Step 4: Send the booking to GA4 as well
Add a GA4 Event tag on the same confirmation trigger. Cliniko's guide uses the event name "purchase"; a clearer custom name such as booking_completed also works. In GA4, mark that event as a key event. You can then see bookings by channel, campaign and landing page, including the ones that did not come from ads.
Step 5: Keep the ad click across domains
Your website is on your domain and the hosted booking page is on Cliniko's. Without extra setup, the ad click information stays behind on your site. Two settings fix this:
- In the Conversion Linker tag on your website, enable linking across domains and add your Cliniko booking domain.
- In GA4, under your data stream settings, configure your domains so both your site and the Cliniko booking domain are included.
Step 6: Test with a real booking
- Open GTM Preview mode on your website.
- Click through to the booking page and complete a test booking.
- Check the conversion tag fired on the confirmation page, and that the GA4 event appears in GA4's DebugView.
- Cancel the test booking in Cliniko so it does not end up in your diary.
Google Ads can take a few hours to show a conversion action as recording, so check its status the next day too.
If you have to embed the booking page
Cliniko documents a workaround for embedded bookings: the embedded page sends a message to your website when the confirmation page is reached, your site listens for it and pushes a clinikoBookingCompleted event to the GTM data layer, and your tags fire from that event on your own domain. It works, but it needs a developer comfortable with JavaScript and GTM, and Cliniko does not provide support for it.
Common mistakes
- Counting the button click. It inflates conversions and trains Google on the wrong behaviour.
- Leaving old conversion actions as primary. If a "contact page view" goal is still set as primary, bidding will keep using it.
- Forgetting phone bookings. Many patients still call. Use call tracking, and record a referral source on new patients in Cliniko where you can.
- Sending patient data. Never pass names, emails or appointment details into tags. Tracking only needs to know that a booking happened.
- Never retesting. If the booking flow changes, the confirmation path can change with it. Run a test booking every few months.
The result
Once this is in place, your Google Ads reports show booked appointments and cost per booking rather than clicks, and automated bidding has the right signal to learn from. That is the basis for every sensible decision about your ad budget.
Not sure whether your current setup is counting bookings? Our free clinic website check includes a look at your tracking.