Answer · Tracking & analytics

How do I track Microsoft Bookings conversions in GA4?

Last updated 4 min read6 sources

The question people ask
“How do I track Microsoft Bookings conversions in Google Analytics 4?”

Asked in Microsoft Learn (opens in a new tab), Microsoft Tech Community (opens in a new tab) and Microsoft Learn (opens in a new tab)

Short answer

Not directly. Microsoft hosts the public booking page on its own domain (outlook.office.com), gives you nowhere to add a GA4 or Google Tag Manager tag, and doesn't redirect to your site after a booking. As of September 2026 you have two options: measure booking intent on your own pages with GA4, or send a server-side GA4 event for each completed booking using the Power Automate Bookings connector and the GA4 Measurement Protocol.

This question has been asked since 2020. The original Microsoft Q&A thread collected 70+ "same question" votes and was locked with no answer.

Why GA4 never sees the booking#

GA4 only records what happens on pages where your tag runs. When someone books, all of the steps (choosing a service, picking a time, filling in the form, confirming) happen on Microsoft's page:

  • No tag slot. None of Microsoft's booking page documentation offers a place for GA4, GTM or pixel code. The only tracking feature Microsoft documents is a campaign ID (?RefID=) that shows up in an exported report.
  • No thank-you redirect. A Microsoft employee confirmed in 2023 that "there is no native support to redirect the Bookings appointment creation page after successfully creating an appointment." That means you can't use a destination-page conversion.
  • Embedding doesn't change this. If you put the page in an iframe on your site, the booking still happens in a cross-origin frame, and your GTM container can't see events inside it. See why GTM can't track inside the Bookings iframe.

What GA4 can measure today#

These all run on your own site, so they work with a normal GA4 or GTM setup:

SignalHow to capture itWhat it tells you
Click on "Book now" link or buttonGTM Click trigger, sent as a GA4 event such as booking_clickSomeone intended to book, and from which page and source
Booking iframe scrolled into viewGTM Element Visibility trigger on the iframeSomeone saw the booking form
Outbound click to outlook.office.comGA4 enhanced measurement (outbound clicks)Same as above, without GTM

Report these as intent, not bookings. A click that ends in an abandoned form looks the same as one that ends in a confirmed appointment.

Counting completed bookings in GA4#

To record real bookings, you have to send the event from the server side after Microsoft creates the appointment. The approach a 2026 Q&A answer suggested looks like this:

  1. On your site, read the visitor's GA4 client_id from the _ga cookie and store it under a short key.
  2. Send the visitor to your Bookings link with that key appended, for example ?RefID=k7f2a9. Microsoft only allows letters, numbers, underscores and hyphens in the campaign ID.
  3. In Power Automate, create a flow on the Bookings connector trigger When a appointment is Created (that is Microsoft's spelling). Its payload includes a TrackingData field ("Campaign tracking Data").
  4. Look up the client_id stored under that key, then POST a booking_completed event to the GA4 Measurement Protocol with your measurement ID and API secret.
  5. Mark booking_completed as a key event in GA4.

Before you build this, know the limits:

  • The connector is still in Preview. Only Bookings admins on that calendar can create flows with its triggers, and Microsoft allows 5 flows per Bookings mailbox.
  • It isn't available in GCC, GCC High, DoD or 21Vianet.
  • Since 2023, users have reported that RefID pages return Bad Request or that the tracking data comes through blank. Whether it works today is unverified, so test it on your own page first. See RefID tracking not working.
  • Google describes the Measurement Protocol as a way to supplement tag-based collection, not replace it. Sessions and engagement for these events will look thin in GA4.

The GA4 and GTM guide has the full flow, the GTM tags and the test steps.

Which approach fits#

If you only need to know which pages and campaigns send people to book, click and visibility events are enough and take about an hour to set up. If you need booked appointments as a GA4 key event (for example, to import into Google Ads), you need the server-side route, which depends on RefID working on your page. To carry campaign data through without breaking the link, see passing UTM parameters into Bookings.

Doing this with BookingsXP#

BookingsXP puts a booking widget on your own page, in front of your existing Bookings page, so the booking steps run where your tags can see them. Each step is pushed to window.dataLayer, and a GTM Custom Event trigger on bookingsxp.booking_completed fires only once a booking is confirmed. If you add your GA4 ID to the widget, it also sends generate_lead and bookingsxp_booked. Appointments are still created in Microsoft Bookings as usual. See analytics. BookingsXP is independent and not affiliated with or endorsed by Microsoft.

Questions people also ask

Sources

  1. Microsoft Learn: Customize booking page (opens in a new tab) · learn.microsoft.com
  2. Microsoft Learn: Reporting info (opens in a new tab) · learn.microsoft.com
  3. Microsoft Learn (opens in a new tab) · learn.microsoft.com
  4. Microsoft Learn: Power automate integration (opens in a new tab) · learn.microsoft.com
  5. Microsoft Tech Community: Microsoft booking custom thank you page url (opens in a new tab) · techcommunity.microsoft.com
  6. developers.google.com (opens in a new tab) · developers.google.com