Answer · Tracking & analytics
Why do UTM parameters break my Microsoft Bookings link?
Last updated 4 min readPart of Microsoft Bookings conversion tracking: what works4 sources
“Why do UTM parameters break my Microsoft Bookings link?”
Asked in Microsoft Tech Community (opens in a new tab) and Microsoft Learn (opens in a new tab)
Short answer
The Microsoft Bookings page doesn't officially support arbitrary query strings. The only parameter it documents is RefID. Since 2020, adding UTM tags has caused a Bad Request page for some people, and in 2026 users reported that UTMs with encoded spaces (%20) still break the page. The accepted answer on Microsoft Q&A is to keep UTM values free of spaces and special characters. Even when the page does load, Bookings doesn't store UTM values, so they don't reach your booking data.
What's been reported#
- 2020, Tech Community: adding
utm_sourceto a Bookings link produced a Bad Request page. The thread ran until 2023 and the only workaround was to put the booking page in an iframe on your own page. A 2023 reply said UTMs added by email marketing tools still broke it. - January 2026, Microsoft Q&A: a
%20inside a UTM value broke the page. The accepted answer, from Microsoft external staff, recommended replacing spaces with_or-at the source, using a URL shortener, or opening a support ticket. - SharePoint embeds: SharePoint added
?odSkipAutoFocus=trueto an embedded Bookings URL, which caused Bad Request (reported in 2021). - RefID: the campaign parameter Microsoft documents has also produced Bad Request pages for some users. See RefID tracking not working.
The 2026 answer suggests simple UTMs now load and encoded characters are the problem. Microsoft doesn't document which parameters or characters the page accepts, so treat any tagged link as untested until you've opened it.
What we saw when testing (September 2026)#
We captured the current shared booking page and the calls it makes, and made and cancelled a few test bookings. The booking request the page sends has one field for campaign data, tracking data, which it fills from a refid parameter (matched in any letter case, first one wins) after stripping every character except letters, digits, _ and -. There is no field for UTM values, and the RefID itself didn't appear in the calendar event the owner receives. On "Bookings with me" personal pages the booking request has no tracking field at all. So even when a UTM link loads, the campaign is gone once the visitor books.
How to fix a broken link#
- Remove spaces from UTM values. Use
utm_campaign=spring_offer, notutm_campaign=spring offer(which becomesspring%20offer). Check the settings in your email and ad tools, since they often insert campaign names automatically. - Avoid other encoded characters. Leave out
&,+,#,/and accented letters in values. - Test every tagged link in a private browser window before a campaign goes live. Also test on mobile, because email clients sometimes add their own tracking parameters.
- If it still fails, confirm that the plain link without parameters works. If it does, send traffic to your own page first (next section) or open a Microsoft support ticket with the exact URL.
Where the UTMs should go#
Even a clean UTM link doesn't help much. Your analytics tag can't run on the Bookings page, and Bookings doesn't save UTM values with the appointment. A better setup:
- Point campaigns at a landing page on your own site, with full UTMs. GA4 attributes the session correctly there.
- Link from that page to Bookings with no parameters, or with a short
RefIDcode if you want the campaign in the Bookings export. RefID values can only contain letters, numbers, underscores and hyphens; anything else is silently removed. - Track the click on your Book button as an intent event in GA4.
The step-by-step version, including how to carry gclid and map short codes back to campaigns, is in the guide to passing UTM parameters into Microsoft Bookings.
Doing this with BookingsXP#
With BookingsXP, UTM-tagged links point to your own page, where the widget runs, so the Bookings page never has to accept them. The widget captures UTMs, click IDs (gclid, fbclid, msclkid and others), the referrer and the landing page. It keeps the first touch for 90 days and writes the source into the booking notes; our test booking through the widget showed that summary in the notes of the Outlook event. See analytics and attribution or try it with your booking page. BookingsXP is independent and not affiliated with or endorsed by Microsoft.
Questions people also ask
Sources
- Microsoft Tech Community: Office bookings do not work with query paramaters (opens in a new tab) · techcommunity.microsoft.com
- Microsoft Learn: 20 in utm is breaking functionality of bookings pa (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Customize booking page (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Bookings feature wont embed into sharepoint site (opens in a new tab) · learn.microsoft.com