Conversion tracking for Cliniko online bookings
Cliniko is one of the few practice systems that documents its own tracking: you paste a GTM container ID into the online bookings settings, a GA4 Purchase event fires on the confirmation page, and the dataLayer carries the appointment type, business, price and currency. The catch is twofold. Embedded in an iframe, a booking loses its traffic source, which is why Cliniko itself points you to the hosted page. And for a US clinic, an appointment type's name can say more about a patient than any ad platform should hear.
Free30 minutesNo obligation
Cliniko · what breaks
What goes wrong with Cliniko bookings
- 01
The embedded iframe loses the source
Cliniko's own guide says embedded bookings make it hard to keep where each session came from.
- 02
Appointment types that describe a condition
Sending a type that names a condition or treatment to Meta discloses more than an ad platform should hold.
- 03
Purchase used for every booking
GA4's Purchase fires on confirmation, but a free initial chat and a paid treatment get the same label.
- 04
Tags quietly blocked
Cliniko blacklists some tags, so a pixel that works on your site may simply not run on the booking page.
Cliniko · the fix
What changes — Cliniko
Bookings measured on the hosted page
With the traffic source kept from the ad click.
Neutral values only
bookingPrice and a generic service category, never the clinical type name.
Attended appointments as the money signal
Sent server-side from Cliniko records, so cancellations come off.
Cliniko · architecture
What Cliniko actually lets you do
Cliniko documents more than most practice systems. Here is what it gives you, and where it stops.
- 1
A GTM container ID field
Under Settings, Online bookings. Your container loads on Cliniko's booking pages.
- 2
A GA4 Purchase event on confirmation
The completion signal, already defined.
- 3
dataLayer values on completion
cliniko.appointmentTypeId, cliniko.businessId, cliniko.bookingPrice and cliniko.bookingCurrency.
- 4
Hosted or embedded booking
Both supported; the hosted page keeps the referral source, the iframe makes that difficult.
- 5
A restricted tag list
Some tags are blacklisted, and Cliniko offers limited support for GTM problems. Its guide gives no HIPAA-specific direction.
Cliniko · diagnose
Diagnosing a Cliniko setup
Five checks, ordered so a privacy problem is found before an accuracy one.
- 01
Read exactly what your tags send
Open GTM preview on a test booking and list every field going to Meta and Google. Any condition-revealing type name gets fixed first.
- 02
Check whether bookings run embedded or hosted
Embedded is the usual reason paid traffic shows up as direct.
- 03
Confirm each tag actually fires on Cliniko
Blacklisted tags fail without any error you would notice.
- 04
Compare online bookings with attended appointments
By campaign, over a closed window.
- 05
Check whether existing patients are counted
Rebooking a current patient is not acquisition.
Cliniko · prove
The QA evidence — Cliniko
On a live Cliniko booking through the hosted page, with every outgoing payload inspected.
Source of truth
Cliniko's appointment records — online bookings and attended appointments by date, with neutral service categories
- A booking made on the hosted page from a tagged ad link, with the source confirmed in GA4.
- Every outgoing payload confirmed free of appointment type names, notes and patient details.
- dataLayer price and currency confirmed against the appointment's actual fee.
- Each attended Cliniko appointment matched to the platform conversion it produced.
- A cancelled appointment confirmed to come off every platform.
- Existing patients confirmed excluded from acquisition.
- Checked again 30 days later and after any Cliniko change to online bookings.
Cliniko · free audit
What we check in the free audit
- Read exactly what your tags send
- Check whether bookings run embedded or hosted
- Confirm each tag actually fires on Cliniko
- Compare online bookings with attended appointments
- Check whether existing patients are counted
Checked against
Cliniko's appointment records — online bookings and attended appointments by date, with neutral service categories
Free30 minutesNo obligation
Cliniko · when not to buy
When a Cliniko clinic doesn't need this
Cliniko's native setup covers more than most, so these cases are real.
- If you run Google Ads only, ad traffic already lands on the hosted page, and the GA4 Purchase import is correct on a test booking, you may already be done.
- If most new patients come from physician or insurance referrals, ad attribution will barely move your decisions.
- If your appointment types are already generic and volume is low, the native GTM route plus a privacy review may be enough.
- If your privacy counsel has not approved a server container and its agreements, send nothing server-side until they do.
Cliniko · what we deliver
The event map for a Cliniko clinic
Booking page opened
Volume signal on the hosted page.
Appointment booked
From the confirmation-page event, with cliniko.bookingPrice and cliniko.bookingCurrency.
Service category
A generic label mapped from cliniko.appointmentTypeId, not the type's clinical name.
Location
From cliniko.businessId, for multi-site practices.
Appointment attended
The conversion, from Cliniko's records.
Cancellation or no-show
Reversed, without any reason or note leaving Cliniko.
Written guarantee
95%+ tracking accuracy
Measured against Cliniko's appointment records — online bookings and attended appointments by date, with neutral service categories. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Cliniko questions, answered
Cliniko's tracking guide doesn't mention HIPAA. Compliance depends on what you send, so appointment type names, notes and patient details stay out of every ad platform, and your own privacy counsel should sign off.
For ad traffic, link to the hosted page. Cliniko's own guide says the embedded iframe makes it hard to keep the session's source.
Yes. cliniko.bookingPrice and cliniko.bookingCurrency are in the dataLayer on completion, and Google Ads can use them directly or through a GA4 import.
Cliniko blacklists some tags. Test in GTM preview on a real booking; if the tag is blocked, the event has to go server-side instead.
Not as Cliniko names it. Map each type ID to a neutral category such as new-patient visit or follow-up before anything leaves.
More on Cliniko
- Enhanced ConversionsEnhanced Conversions enrich the conversions that already fire. First we make sur…
- Meta CAPIA one-click CAPI integration sends thin events. That's why your Event Match Qual…
- Cross-Domain TrackingYour checkout provider is the best performing traffic source in your GA4 account…
RELATED GUIDES
Booking tools beside Cliniko, and what their bookings feed
- CareStackConversion tracking for CareStack online booking
- Jane AppConversion tracking for Jane App clinics
- SesameConversion tracking when patients book you on Sesame
- Meta · Mental healthMeta Ads conversion tracking for mental health and therapy practices
- Meta · Physical therapyMeta Ads conversion tracking for physical therapy clinics
- Meta × Appointment SystemHow to reconcile Meta Ads against your practice or scheduling system
- Meta · Phone call → saleHow to track phone call to sale for Meta Ads
- Mental healthConversion tracking for therapy practices, measured in attended intakes
Free · 30 min
Get Cliniko bookings measured without the privacy risk
Free30 minutesNo obligation
