Skip to content
🚀 Find us on Product Hunt

Microsoft Advertising (UET) GoHighLevel Calendar Booking Event Tracking for GoHighLevel

Quick answer: Select Microsoft Advertising (UET) and the GoHighLevel Calendar Booking event in the free container builder wizard, enter your tracking ID, then import the generated file into Google Tag Manager - the trigger is wired up automatically, no manual setup required.

Configure the GoHighLevel Calendar Booking event so Microsoft Advertising (UET) fires correctly on your GoHighLevel store, then generate an importable Google Tag Manager container - no manual tag, trigger, or variable setup required.

Generate my Microsoft Advertising (UET) GoHighLevel Calendar Booking container →

How it works

  1. Open the container builder with Microsoft Advertising (UET) and the GoHighLevel Calendar Booking event already selected.
  2. Enter your tracking ID/pixel credentials for this platform.
  3. Generate and download the GTM container JSON file.
  4. In Google Tag Manager: Admin > Import Container > choose the file > Merge into a new workspace, then verify in Preview mode before publishing.

Track GoHighLevel Calendar Booking with other platforms

How this event is built in your container

GoHighLevel Calendar Booking is detected automatically. GoHighLevel's booking calendar widget is an iframe. This bridge listens for window messages from HighLevel-owned domains and matches a booking-confirmed payload.

This container includes a small Custom HTML tag, firing on All Pages, that listens for that native event and pushes dataLayer.push({ event: 'ghl_calendar_booking', ... }) itself - unlike this plugin's other events, there's no code for you to add manually.

For this to work, though:

For reference, here is the exact script this container's bridge tag runs:

(function(){
  if (window.__gtmcbGhlCalendarBooking) { return; }
  window.__gtmcbGhlCalendarBooking = true;
  var trusted = ['leadconnectorhq.com','msgsndr.com','gohighlevel.com','highlevel.com','myfunnels.com'];
  var pattern = /(booking|appointment)[-_ ]?(confirmed|complete|completed|scheduled|success|booked)|(book|schedule)[-_ ]?(confirmed|complete|completed)/;
  var lastFired = 0;
  function isTrusted(origin) {
    try {
      var host = new URL(origin).hostname;
      return trusted.some(function (s) { return host === s || host.slice(-(s.length + 1)) === '.' + s; });
    } catch (e) { return false; }
  }
  function flatten(data) {
    if (typeof data === 'string') { return data; }
    try { return JSON.stringify(data); } catch (e) { return ''; }
  }
  window.addEventListener('message', function (event) {
    if (!isTrusted(event.origin)) { return; }
    var payload = event.data;
    var flat = flatten(payload).toLowerCase();
    if (!flat || !pattern.test(flat)) { return; }
    var now = Date.now();
    if (now - lastFired < 1500) { return; }
    lastFired = now;
    window.dataLayer = window.dataLayer || [];
    window.dataLayer.push({
      event: 'ghl_calendar_booking'
    });
  });
})();

The Microsoft Advertising (UET) tag itself is added automatically and wired to this trigger - you won't need to create or configure it by hand in GTM.

Troubleshooting

The event never fires.
Log window message events in the console while completing a test booking and compare the payload with the pattern in this bridge tag. If your calendar redirects to a confirmation page instead, use the Thank-You Page View event.

The event fires, but values show up blank or undefined.
Check that the pushed object's key names match exactly (case-sensitive) - a mismatched key like "Value" instead of "value" will show as undefined in GTM's variable preview.

GoHighLevel Calendar Booking fires twice for the same action.
You likely also have a manually-added Microsoft Advertising (UET) snippet listening for the same action alongside this container's own bridge tag. Remove the manual one, or disable it, before publishing.

Frequently asked questions

What triggers the GoHighLevel Calendar Booking event?

It's detected automatically - GoHighLevel's booking calendar widget is an iframe. This bridge listens for window messages from HighLevel-owned domains and matches a booking-confirmed payload.. This container includes a ready-made bridge tag for it, so there's nothing to configure manually.

Why should I track GoHighLevel Calendar Booking with Microsoft Advertising (UET) specifically?

It shows engagement further up the funnel, which Microsoft Advertising (UET) can use to build audiences and understand what leads to a purchase, even before the sale happens.

Is this free to set up?

Yes - the free tier covers 1 tracking platform at a time. If you need this event across several platforms in one container, unlocking full access covers all of them together.

Will this conflict with Microsoft Advertising (UET) code I already added manually?

It can, if the same event fires twice from two separate sources. Remove any manually-added Microsoft Advertising (UET) tag for this event before importing the generated container, or use GTM's Preview mode to confirm it only fires once.

How long does setup take?

A few minutes - select Microsoft Advertising (UET) and the GoHighLevel Calendar Booking event in the wizard, enter your tracking ID, download the container, and import it into GTM.

Do I need to add any code to my site for GoHighLevel Calendar Booking?

No. Unlike most events in this wizard, this one ships its own small Custom HTML tag inside the container itself that detects the submission and pushes it to the dataLayer - there's no snippet to paste into your theme or a code snippets plugin.

Are there any conditions for this to actually work?

A native GoHighLevel calendar widget embedded on a page that has your GTM container snippet installed.

← See all Microsoft Advertising (UET) events

Share with