Answer · Tracking & analytics
How do I track Microsoft Bookings conversions in GA4?
Last updated 5 min readPart of Microsoft Bookings conversion tracking: what works7 sources
“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 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, or send a server-side GA4 event for each completed booking through 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. Every booking step (service, time, form, confirmation) happens on the page Microsoft hosts:
- No tag slot. None of the Bookings 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", so a destination-page conversion is out. See thank-you page redirects.
- Embedding doesn't change this. In an iframe the booking still happens in a cross-origin frame, and your GTM container can't see inside it. See why GTM can't track inside the Bookings iframe.
What we saw when testing (September 2026)#
We captured the public booking page and the calls it makes across 13 live captures, and made and cancelled a handful of test bookings. Two findings matter here:
- Nothing to listen to. The booking API behind the page returns no CORS headers, so scripts on your site can't call it or read the embedded page from the browser. We found no message the iframe sends to the parent page when a booking is made.
- RefID does reach the appointment. The page reads a
refidquery parameter (any letter case), strips everything except letters, digits,_and-, and stores the value on the appointment as tracking data. That is the hook the server-side route below depends on. We didn't test whether the value then reaches the Power AutomateTrackingDatafield.
What GA4 can measure today#
These run on your own site, so they work with a normal GA4 or GTM setup:
| Signal | How to capture it | What it tells you |
|---|---|---|
| Click on a "Book now" link or button | GTM Click trigger, sent as a GA4 event such as booking_click | Someone intended to book, and from which page and source |
| Booking iframe scrolled into view | GTM Element Visibility trigger on the iframe | Someone saw the booking form |
| Outbound click to outlook.office.com | GA4 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#
To record real bookings, the event has to come from the server after Microsoft creates the appointment. The shortest path: store the visitor's GA4 client_id under a short key on your site, add that key to your Bookings link as ?RefID=, catch the new appointment with the Power Automate trigger When a appointment is Created (the connector spells it that way), and post a booking_completed event to the Measurement Protocol. Then mark it as a key event.
Know the limits before you build it:
- 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.
- The HTTP step that posts to GA4 is a Premium action in Power Automate.
- Since 2023, users have reported RefID links returning Bad Request or the tracking data coming through blank. Test 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. These events arrive without a session, so session-level source and medium can show as (not set).
The GA4 and GTM guide has the full build: the GTM tags, the link script, the flow expressions, the request body 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. 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 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. Appointments are still created in Microsoft Bookings, and our test booking through the widget showed the source summary (source and medium, campaign, first page, booked-from page, reference) in the notes of the Outlook event. See analytics or try it on your own booking page. BookingsXP is independent and not affiliated with or endorsed by Microsoft.
Questions people also ask
Sources
- Microsoft Learn: Customize booking page (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Reporting info (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Power automate integration (opens in a new tab) · learn.microsoft.com
- Microsoft Tech Community: Microsoft booking custom thank you page url (opens in a new tab) · techcommunity.microsoft.com
- developers.google.com (opens in a new tab) · developers.google.com
- Microsoft Learn: Track which ads are leading to completed microsoft (opens in a new tab) · learn.microsoft.com