FFP Guides

Online bookings

Can you track completed Nookal online bookings?

Yes, if you use the Button Code or Text Link rather than an iframe. Nookal automatically sends page_view and purchase events to GA4 (and equivalent events to Google Tag Manager and Facebook Pixel) as patients move through the booking process and complete it. It is a Single Page App, so triggers need to watch for a History Change, not a Page View.

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

Method
Native GA4, Google Tag Manager and Facebook Pixel support, ID pasted into the location's Online Bookings settings; purchase event fires automatically on completion
On mobile
Because tracking depends on Nookal's own domain recognising the visit, test the full flow on a real phone on mobile data, not just Wi-Fi. Safari and Brave block third party cookies and trackers by default, which Nookal's own documentation flags as a reason data collection can silently fail on exactly the browsers a meaningful share of patients will be using.
Can you track bookings?
Yes. Nookal is the most complete native integration in this cluster: a Measurement ID or Container ID pasted into location settings gets you automatic page_view and purchase events with no custom script, no confirmation URL to guess at, and synchronisation across all locations once installed. The setup detail that trips people up is that Online Bookings is a Single Page App, so a standard GTM Page View trigger will not catch the purchase event, a History Change trigger will.

Add Nookal bookings to your website

  1. Confirm you are using the Button Code or Text Link, not an iframe embed, for Online Bookings (see our a2-nookal-bookings-website guide). Nookal's own tracking documentation says iframes are unreliable with tracking services.
  2. Have your GA4 property, GTM container and, if used, Facebook Pixel ID ready before opening Nookal's Location settings.

Track the bookings

  1. In Nookal, go to Setup > Online Bookings > Locations, open the location's booking options, and set an optional Measurement ID for Google Analytics under the tracking fields there.
  2. Nookal automatically sends page_view as the visitor moves through each step of the booking process, and purchase when the visitor completes a booking, regardless of whether payment was taken. The purchase event includes a transaction ID, currency, value and item details, so it behaves like an ecommerce conversion, not a generic event, when it reaches GA4.
  3. If you also install a Google Tag Manager Container ID (a separate field in the same settings, synchronised across all locations automatically once set), remember that Nookal's Online Bookings is a Single Page App: it triggers a History Change event in the dataLayer rather than a normal Page View, so build your GTM triggers, and any GA4 tags fired through GTM, against History Change, not Page View, or they will silently never fire.
  4. For cross domain tracking, GA4 needs to recognise Nookal's own booking domains, for example bookings.nookal.com and book.nookal.com or a region specific variant, in addition to your own website's domain, or the source data will not stitch together across the handoff from your site to Nookal's.
  5. Do not install both Google Tag Manager and Facebook Pixel in the same location's settings at once. Nookal's Facebook Pixel guide recommends against running both simultaneously, and Facebook Pixel's ID is entered into the same field labelled for Google Analytics, which is an easy place to make a mistake if you are configuring more than one vendor at a time.
  6. Test with a real booking, then in GA4 mark purchase (or a renamed equivalent) as a key event and import it into Google Ads under Goals > Conversions > Import > Google Analytics 4 properties, with at least Marketer access.

page_view and purchase, sent automatically

Nookal's Google Analytics integration sends two events without any custom configuration once a Measurement ID is installed: page_view "as the visitor moves through each step in the bookings process," and purchase "as the visitor completes a booking (regardless of payment)." The purchase event carries transaction ID, currency, value and item level detail, the same shape GA4 expects for an ecommerce conversion.

That is a meaningfully different starting point to Cliniko, which needs a postMessage listener script to escape its iframe, or Jane, which needs a second GA4 property and a manually built key event on a URL pattern. Nookal hands you a working conversion event as soon as the Measurement ID is saved, provided you are not using an iframe.

The Single Page App trap

The most likely way to get this wrong is assuming a standard Google Tag Manager Page View trigger will fire when a patient reaches the confirmation step. Nookal's own documentation is specific that Online Bookings "uses Single Page App (SPA) methodology," and that instead of a Page View event it "triggers a History Change event." A GTM tag built against the usual Page View trigger will simply never fire on Nookal's booking flow, with no error to tell you why.

If you are relying on GA4's own native integration (the Measurement ID pasted directly into Nookal, not routed through GTM) this does not apply, since Nookal is sending the page_view and purchase events itself. It matters specifically if you are trying to layer your own Google Tag Manager container on top, which is also how the Facebook Pixel integration is delivered, sharing the same underlying event stream.

Why the iframe warning is not just a display preference

Nookal repeats the same instruction in both its Google Tag Manager and Facebook Pixel documentation: avoid embedding Online Bookings inside an iframe, because browser changes have made iframes unreliable paired with tracking services. That is a stronger and more specific statement than most vendors in this cluster make. Combined with third party cookie blocking in Safari and Brave, an iframe embed stacks two separate points of failure onto tracking that, used as a direct link or button, works with very little setup.

Sources

  1. Nookal's Google Analytics integration sends a page_view event as the visitor moves through each booking step and a purchase event when the visitor completes a booking regardless of payment, with the purchase event including transaction ID, currency, value and item details. Nookal Support, checked 25 Sep 2026.
  2. Nookal recommends avoiding embedding Online Bookings inside iframe elements because browser changes have made iframes unreliable paired with tracking services, and notes Safari and Brave block third party cookies and trackers by default. Nookal Support, checked 25 Sep 2026.
  3. Nookal's Google Tag Manager integration synchronises across all locations automatically once installed, and Online Bookings uses Single Page App methodology, which triggers a History Change event in the dataLayer instead of a Page View event. Nookal Support, checked 25 Sep 2026.
  4. Nookal's Facebook Pixel integration sends a purchase event automatically on booking completion, is entered using the field labelled for Google Analytics, and Nookal recommends not installing both Facebook Pixel and Google Tag Manager at the same time, and also recommends avoiding iframe embedding. Nookal Support, 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.