Skip to main content

Tracking Online Booking Conversions with Google Tag Manager

Updated this week

This article provides an overview of how to track PracSuite online booking conversions using Google Tag Manager (GTM) in combination with Google Analytics 4 (GA4).

It is written for clinic owners, web managers, or marketing professionals who are already familiar with Google’s analytics tools.

With the exception of confirming that your Google Tag Manager container ID has been added to PracSuite correctly, configuration and troubleshooting within Google Tag Manager or Google Analytics is outside of Smartsoft’s support scope.

For assistance with advanced tracking setups, attribution, or marketing optimisation, we recommend engaging your SEO or digital marketing professional.

If you wish to trigger Custom HTML using Google Tag Manager, you must contact Smartsoft and request that the ability to run custom GTM scripts be enabled on the associated PracSuite account.


A note on tracking conversions when embedding the PracSuite booking site

Modern browsers now block third-party cookies by default and limit how websites can track users across domains. This affects how marketing platforms like Google Analytics, Facebook, or Google Ads track user journeys, especially when PracSuite’s online booking system is embedded inside another website using an iframe.

Without some extra configuration, two things can happen:

  • Your main website won’t be able to track bookings or conversions that happen inside the PracSuite iframe.

  • The booking site may be seen as a separate “referral” in your analytics, breaking the link between the original traffic source (e.g. Google Ads or Facebook) and the actual booking.

What You (or Your Marketing Expert) Can Do

If you want to track conversions properly and keep attribution intact, your marketing or web team will need to:

  • Set up communication between your site and the PracSuite booking iframe using tools like window.postMessage.

  • Use Google Tag Manager (GTM) on your main site to listen for events from the iframe (such as “booking complete”) and record them as conversions.

  • Update your Google Analytics settings to exclude PracSuite from referral traffic, so it doesn’t interfere with attribution.

Who Can Help

A skilled SEO or digital marketing developer should know how to do this. You can also search for guides on terms like:

  • “GA4 cross-domain iframe tracking”

  • “Google Tag Manager postMessage tracking”

  • “Tracking conversions in embedded iframes”


If you are not embedding the PracSuite booking site, continue below for standard standalone tracking instructions.

Prerequisites

This article assumes that you have set up the following:

This article covers the following:


Adding Your GTM Tracking ID to PracSuite

This article focuses on using Google Tag Manager to track conversions, and pass events to Google Analytics.

You do not need to add both GTM and GA4 tracking IDs to PracSuite.

When using Google Tag Manager:

  • The GTM container is loaded by PracSuite.

  • GA4 events are sent from within GTM using your GA4 Measurement ID.

This is the recommended and preferred approach, as it avoids duplicate pageviews and conflicting configurations.

To begin, add your GTM account ID only in PracSuite under Settings > Online Booking > Overview.

Your Google Tag Manager tracking ID can be found in the top right-hand corner of your Google Tag Manager account. Copy this into PracSuite into the field shown above.


Configuring Google Tag Manager

We now need to set up Google Tag Manager to send an event to Google Analytics when an appointment is booked online in PracSuite.

Start by logging into your Google Tag Manager account.

Step 1: Create a GA4 Event Tag

Select Add a new tag.

Give your tag a name e.g. Online Booking Complete and then click in the area shown below to start configuring the tag.

There are many other Tag Types to choose from.

If you wish to trigger Custom HTML using Google Tag Manager, you must contact Smartsoft and request that the ability to run custom GTM scripts be enabled on the associated PracSuite account.

For this example, our tag will send a Google Analytics GA4 Event.


Next, you will require your Google Analytics Measurement ID. Expand the section below to learn more about creating/obtaining a Google Analytics Measurement ID.

Finding your Google Analytics Measurement ID


For Google Analytics 4, you will need to create a new Data Stream to obtain your measurement ID.

After logging into your Google Analytics account, start by searching for data stream in the search bar at the top of the page and then select the Data Streams option.

Select Add Stream and then select Web.

Enter the URL of your PracSuite online booking system, which you can find here. You will also need to enter a stream name, such as Online Bookings.

Select Create stream.

You will then see the Measurement ID for your new Data Stream.

Copy and paste your Google Analytics Measurement ID into the Measurement ID field. You will also need to choose an Event Name, which we've set to bookingconfirmed for this example.

Step 2: Create a Trigger

We now need to choose what action on the PracSuite online booking site should trigger the tag to send the event to Google Analytics.

For this example, we will fire the conversion event when the visitor reaches the booking complete page that appears after they click the confirm booking button.

  1. Click Triggering.


  2. Create a new trigger.



    For this example, we are firing the conversion event when they reach the booking complete page after the patient clicks the confirm booking button. This is based on /complete being in the page URL.


  3. Select History Change as the trigger type.


  4. Choose Some History Changes.


  5. Set the condition:

  • Page Path contains /complete

This trigger fires when the PracSuite booking flow transitions to the confirmation screen.

Save the trigger and complete the tag setup.

The last step is to select Submit in the top-right corner of Google Tag Manager to publish the tag live to your booking site.

This completes the setup of firing a GA4 event when your patient reaches the online booking confirmed page.



PracSuite Data Layer

The PracSuite online booking site automatically exposes basic booking‑related information to the browser via the data layer. It does not expose any information about the patient that would compromise privacy.

This data can be accessed inside Google Tag Manager by creating Data Layer Variables.

Available Data Layer Objects

The following object is populated and updated by the PracSuite booking site. Inline comments show the data type and expected values for each field.

ps_booking: {
logged_in: false, // boolean (true | false)
booking_mode: "appointment", // string ("appointment" | "class")
patient_type: "new", // string ("new" | "existing")
location_id: 14, // number (integer ID)
location_name: "Perth", // string
service_id: 1, // number (integer ID)
service_name: "Physiotherapy", // string
practitioner_id: 31, // number (integer ID)
practitioner_name: "Jessica Gomes",// string
appointment_type_id: 3, // number (integer ID)
appointment_type_name: "Initial Consult", // string
duration: 30, // number (minutes)
confirmed: true // boolean (true when booking is confirmed)
}

Using These Values in GTM

To use any of these fields in Google Tag Manager:

  1. Create a Data Layer Variable in GTM.


  2. Set the Data Layer Variable Name to the relevant path, for example:

    • ps_booking.patient_type

    • ps_booking.booking_mode

    • ps_booking.confirmed


  3. These variables can then be used in:

    • Triggers

    • GA4 event parameters

    • Conditions and filters

This allows you to build more precise conversion logic, such as:

  • Separating new vs existing patients

  • Differentiating appointment vs class bookings

Adding Conditions Based on Data Layer Objects

For example, to fire a new patient conversion event only:

  • Add an additional condition:

    • ps_booking.patient_type equals new



This allows you to send different GA4 events for different scenarios, such as:

  • New patient bookings vs existing patient bookings

  • Appointment bookings vs class bookings

  • Bookings for specific locations or services

Example setups:

  • Event name: booking_confirmed_new_patient

    • Conditions:

      • Page Path contains /complete

      • ps_booking.patient_type equals new

  • Event name: booking_confirmed_existing_patient

    • Conditions:

      • Page Path contains /complete

      • ps_booking.patient_type equals existing


Viewing Events in Google Analytics

After completing an online booking based on the example above, you will be able to see Events recorded in your corresponding Google Analytics account.

In Google Analytics, select Reports and then Realtime.

In the bottom right corner, you will see an event count where you should see the 'bookingconfirmed' event we created earlier.

Did this answer your question?