FFP Guides

Online bookings

How to track Cliniko bookings with the Meta Pixel for Facebook and Instagram ads

Cliniko has no Meta Pixel setting, only a GTM field under Settings > Online bookings, and it blocks Custom HTML on its booking pages. The pixel goes in as a GTM Custom Image Tag, firing on the confirmation path. Meta's Business Tools Terms say health information must not go through the Pixel, and event names must not imply it either.

Last checked 25 Sep 2026 against the sources listed at the end of this page.

Method
A GTM Custom Image Tag calling the Meta Pixel's tr endpoint, since Cliniko has no native Meta Pixel field and restricts which tag types can run on its booking pages
On mobile
Pixel firing does not depend on the device, a Custom Image Tag loads the same way on a phone as a desktop. What does vary by device is whether the underlying booking runs as an embed or a hosted page, which changes whether the postMessage route or the plain page path rule applies, so confirm in Test Events that the conversion fires from a real mobile booking, not only a desktop one.
Can you track bookings?
Partly. Cliniko blocks the Custom HTML tag type inside its booking pages, which is how most sites would normally drop in a Meta Pixel, so Cliniko's own guide uses a Custom Image Tag in Google Tag Manager instead, calling the Pixel's tracking endpoint directly. A Meta Custom Conversion built off the booking confirmation URL then stands in for the pixel's usual event tracking. The same Direct traffic and cross domain limits apply to an embedded booking as with any other tag, and Meta's own Business Tools Terms restrict what a health related event is allowed to say about a patient.

Add Cliniko bookings to Any website (via Google Tag Manager)

  1. In Cliniko, sign in as an Administrator, go to Settings > Online bookings, and confirm bookings are switched on for the practitioners and appointment types you want to advertise.
  2. In Meta Events Manager, create a Meta Pixel if you do not already have one, then go to Business Settings > Data Sources > Pixels and copy its Pixel ID.
  3. Create or reuse a Google Tag Manager web container for the website, since Cliniko does not have a Meta Pixel field of its own, only a Google Tag Manager container ID field, and it restricts which tag types are allowed to run inside its booking pages for patient security.
  4. Paste your GTM container ID into Cliniko under Settings > Online bookings and save.

Track the bookings

  1. In GTM, create a new tag, set the type to Custom Image Tag, and set the Image URL to https://www.facebook.com/tr?id=YOUR_PIXEL_ID&ev=PageView&dl= followed by GTM's built in Page URL variable (the words Page URL inside double curly braces), with your Pixel ID in place of YOUR_PIXEL_ID. Enable Cache Busting, which Cliniko's own guide sets to the default parameter gtmcb.
  2. Set the tag to trigger on All Pages, so the pixel fires a PageView on every page the visitor sees, matching how a normal Meta Pixel install behaves.
  3. In Meta Events Manager, create a Custom Conversion rule that matches when the URL contains bookings/confirmation. This becomes the conversion event Meta ads can optimise toward.
  4. Install the Meta Pixel Helper Chrome extension and confirm it reports the pixel firing on the booking pages, then check Test Events in Events Manager for the PageView and the custom conversion.
  5. For an embedded booking where you need the original ad to get credit, add Cliniko's postMessage listener, the same script used for GA4, then add a second Custom Image Tag that fires on its clinikoBookingCompleted custom event instead of the page path rule, since the URL in the browser's address bar never actually changes inside an iframe.
  6. Before publishing any of this, decide what the tag, the conversion and any parameter will be named. Meta's Business Tools Terms say health information must not be sent through the Pixel, Conversions API or SDK, and that event names and audience criteria must not reflect or imply that category either. A name such as booking_confirmed is fine, a name that states the appointment type or condition, such as knee_pain_booking_confirmed, is exactly what the terms rule out.

There is no Meta Pixel field in Cliniko, only a GTM one

A clinic used to pasting a Meta Pixel ID straight into a website builder's marketing settings will not find an equivalent inside Cliniko. Settings > Online bookings has a single tracking field, a Google Tag Manager container ID, and Cliniko names five tag types it will let run inside its own booking pages through that container: Google Analytics 4, Google Ads, Meta Pixel, AdRoll Smart Pixel and Bing Ads UET. What is missing from that list, deliberately, is the Custom HTML tag type, which is the tag type most Meta Pixel installs actually use. Cliniko's own guide works around this with a Custom Image Tag instead, a tag type built to load a single tracking pixel image URL rather than run arbitrary script, which is allowed to fire on the booking pages where Custom HTML is not.

A pixel built from an image request, and a conversion built from a URL

The Custom Image Tag calls Meta's own tracking endpoint directly, https://www.facebook.com/tr, with the Pixel ID and a PageView event as query parameters, and Cliniko's guide turns on Cache Busting so each request is unique rather than cached by the browser. That gets a PageView recorded for every page a visitor sees, including the booking pages. The conversion side is built separately, inside Meta Events Manager, as a Custom Conversion rule matching the confirmation page's URL, bookings/confirmation, the same page path every other tag in this cluster keys off. The Meta Pixel Helper browser extension and Events Manager's Test Events panel are the two ways to confirm both parts are actually firing before trusting the numbers.

What a health business is not allowed to tell Meta about a booking

Meta's own Business Tools Terms, which govern the Pixel, the Conversions API and its SDKs, list health information among the categories of data a business must not send, alongside financial and other sensitive information. The terms go further than the raw data itself: event names and any custom audience criteria built from them must not reflect or imply a category the terms cover, so a booking event named or parameterised after a condition or a treatment area breaks the rule even if no other patient detail is attached to it. For a clinic, the safe pattern is a generic event name such as booking_confirmed with no appointment type, practitioner or condition folded into the event name, a URL parameter, or a custom conversion rule that only matches the confirmation page path in general.

Sources

  1. Connecting a Meta Pixel to Cliniko online bookings goes through Google Tag Manager, using a Custom Image Tag rather than Custom HTML for security. The tag's Image URL is https://www.facebook.com/tr?id={PixelID}&ev=PageView&dl= plus GTM's Page URL variable, with Cache Busting enabled using the default parameter gtmcb, triggered on All Pages. A Custom Conversion is then built in Meta Business Manager matching the URL containing bookings/confirmation. Cliniko Help, checked 25 Sep 2026.
  2. The GTM container ID is entered in Cliniko under Settings > Online bookings. Supported tags include Google Analytics 4, Google Ads, Meta Pixel, AdRoll and Bing Ads UET. Cliniko Help, checked 25 Sep 2026.
  3. Meta's Business Tools Terms, Section 1.h, prohibit businesses from sending data that includes or is based on health information, financial information, consumer report information or other categories of sensitive information through Meta Business Tools such as the Pixel, Conversions API and SDK, and state that event names and custom audience criteria must not reflect or imply any category covered by that section. Meta, checked 25 Sep 2026.
  4. The Meta Pixel Helper browser extension and Events Manager's Test Events panel are the tools Cliniko's own troubleshooting guide points to for confirming a Custom Image Tag pixel and its Custom Conversion are firing correctly on Cliniko's booking pages. Cliniko Help, checked 25 Sep 2026.
  5. Due to iframe limitations, referral data is not passed from the website to the embedded booking iframe, iframes do not support cross domain tracking, and embedded bookings report as Direct or from the parent website. Cliniko Help, checked 25 Sep 2026.
  6. Cliniko's workaround script listens on the parent page for a message containing cliniko-bookings-page:confirmed and pushes a clinikoBookingCompleted event to the dataLayer. Cliniko says it can be hit and miss and that it cannot offer troubleshooting support for it. Cliniko Help, checked 25 Sep 2026.