FFP Guides

Online bookings

How to set up Cliniko online bookings for a clinic with more than one location

Cliniko can show every location on one booking page, or you can filter by business with the Bookings URL builder to make a page per location, without touching the default one. Tracking stays partial either way, but Cliniko pushes a cliniko.businessId value to the dataLayer on every completed booking, so one shared Google Tag Manager container can still report bookings back by location.

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

Method
One shared booking page listing every location, or a separate embed or hosted link per location built with the Bookings URL builder filtered by Business
On mobile
Nothing about the mobile experience changes because a clinic has more than one location. Whichever builder holds the embed, the sizing and testing steps in that builder's own guide apply the same way to a filtered, single location booking page as they do to the combined one.
Can you track bookings?
Partly. The same Direct traffic and blocked third party code limits apply per location as they do for a single clinic, since every location's booking pages still run on Cliniko's domain. What is location specific is the reporting: Cliniko pushes a cliniko.businessId value to the dataLayer once a booking completes, so a clinic running one combined booking page and one shared Google Tag Manager container can still split GA4 and Google Ads reporting by location, rather than needing a separate container or a separate page per site just to see the numbers apart.

Add Cliniko bookings to Any website (Cliniko multi business account)

  1. In Cliniko, go to Settings > Business information, open each location and switch Display this business in online bookings to On for every location you want patients to see.
  2. Under Settings > Users & practitioners, switch on Show this practitioner in online bookings for each practitioner, and under Settings > Appointment Types, check which types are set to Show in online bookings, all of them are shown by default.
  3. Decide the layout: one combined booking page where the patient picks a location first, or a separate page per location, which usually suits clinics whose locations serve different suburbs or a different mix of services.
  4. For a page per location, go to Settings > Online bookings, use the Bookings URL builder panel, filter by Business (add Practitioner or Appointment type too if you want it narrower), and copy that filtered URL or its matching embed code. Cliniko says building a custom URL does not affect your normal one, and you can create as many as you like.
  5. Embed each location's filtered code on that location's own page, following the WordPress, Wix, Squarespace or Webflow guide for the embed step itself, or point that location's Book now button straight at the filtered hosted URL.
  6. Test a booking at every location separately, including one against the combined page if you kept it live alongside the filtered ones.

Track the bookings

  1. Set up Google Tag Manager and GA4 once for the account as usual, and paste the single GTM container ID into Cliniko under Settings > Online bookings, it covers every business in that Cliniko account, not just one location.
  2. In GTM, add a User Defined Variable of type Data Layer Variable named cliniko.businessId, and cliniko.appointmentTypeId too if you also want to split by service.
  3. Find each location's business ID in Cliniko by opening Settings > Business information, editing that business, and reading the ID from the page's URL.
  4. If you run one combined booking page, build one GA4 Event tag per location, each firing on the same confirmation trigger (the page path bookings/confirmation for a hosted page, or the postMessage event clinikoBookingCompleted for an embed), with an extra trigger condition matching that location's business ID, or add businessId as an event parameter and split the report in GA4 instead of splitting the tags.
  5. If you built a separate page per location instead, you do not need the businessId variable at all, each page already only ever produces bookings for its own location, so tag each page's own confirmation the same way a single location clinic would.
  6. Mark each location's event as its own GA4 key event, and import each one into Google Ads separately if the clinic runs location specific ad campaigns rather than one campaign for the whole practice.

One page for every location, or one page each

A Cliniko account with several locations does not need a separate Cliniko account or a separate set of appointment types for each one. Business information for each location has its own toggle, Display this business in online bookings, and the same pattern applies to practitioners and to appointment types, each with a Show in online bookings setting of its own, with appointment types shown by default. Switched on for every location, a single default booking page lists them all and lets the patient choose where they want to be seen.

That single page is not the only option. Whether it is the better one depends on how different the locations actually are to a patient. A clinic with two suburbs offering the same handful of services can often get away with the combined page and a location dropdown. A clinic where one site is a hydrotherapy pool and another is a general physiotherapy room, or where the locations sit far enough apart that nobody would cross town for the wrong one, usually reads better as separate pages, each pre filtered to its own location.

The Bookings URL builder makes the second option straightforward

Cliniko's Bookings URL builder, on the same Settings > Online bookings screen as the embed code, filters a booking page by Business, Practitioner and Appointment type together or on their own. Filtering to one Business produces a URL, and a matching embed code, that only ever shows that location's practitioners and appointment types, with the location choice already made for the patient. Cliniko is explicit that building one of these custom URLs does not touch the default, unfiltered one, and that there is no limit on how many custom pages you build, so a clinic with four locations can end up with four filtered pages plus the original combined one, kept live or removed as needed.

Splitting the numbers by location without splitting the container

The instinct with several locations is often to want a separate GTM container or a separate GA4 property per site, purely so the reporting comes apart cleanly. Cliniko does not require that. Once a booking completes anywhere in the account, it pushes a cliniko.businessId value to the dataLayer alongside the appointment type, price and currency, and Google Tag Manager can read that value the same way it reads any other data layer variable. Built into the GA4 event as a parameter, or used as an extra condition on a per location trigger, businessId lets one shared container report bookings by location on a combined booking page, which is the case where a clinic most needs the split and least wants to run four parallel tracking setups to get it.

Sources

  1. Enabling a business for online bookings uses the toggle Display this business in online bookings under Settings > Business information. Practitioners have a matching Show this practitioner in online bookings toggle, and appointment types have a Show in online bookings toggle, shown by default. Cliniko Help, checked 25 Sep 2026.
  2. The Bookings URL builder creates filtered online booking pages by Business, Practitioner and Appointment type. Building a custom URL does not affect the normal one, and there is no limit on how many custom pages can be created. Cliniko Help, checked 25 Sep 2026.
  3. Cliniko's booking pages push cliniko.appointmentTypeId, cliniko.businessId, cliniko.bookingPrice and cliniko.bookingCurrency to the dataLayer on booking completion. These can be read in Google Tag Manager as Data Layer Variables, and the appointment type or business ID can be found in the URL of that item's settings page in Cliniko. Cliniko Help, checked 25 Sep 2026.
  4. The GTM container ID is entered once in Cliniko under Settings > Online bookings, a single field covering the whole account. Supported tags include Google Analytics 4, Google Ads, Meta Pixel, AdRoll and Bing Ads UET. Cliniko Help, checked 25 Sep 2026.
  5. A GA4 event must be marked as a key event before it can be imported into Google Ads as a conversion, and importing requires at least Marketer access. Google Ads Help, checked 25 Sep 2026.