Guide · Tracking & analytics

Find where Microsoft Bookings visitors drop off

Last updated 7 min read7 sources

Microsoft Bookings can't tell you where visitors give up. As of October 2026 it reports finished bookings only, through the Home page and the TSV export. The page runs on a Microsoft domain, so your analytics can't see the steps inside it, whether you link to it or embed it in an iframe. What you can do is measure both ends: visits and clicks on your own page, and bookings in the export. Compare the two, then work through the checklist of causes below. Most "traffic but zero bookings" cases come down to a broken link, a page with no open times, or a sign-in or code step.

This guide is for whoever owns a landing page or campaign that sends people to a shared Bookings page. Setting up the measurement takes about an hour. The checklist takes 20 minutes with a phone and a private browser window.

Why you can't see inside the booking steps#

The shared booking page lives at outlook.office.com/book/.... You can't add a tag to it. The customisation options cover colour, logo and wording, not scripts. Embedding doesn't help. The iframe is cross-origin, so the browser stops scripts on your page from reading it or hearing clicks inside it. Microsoft documents no messages from the frame to your page, and Bookings doesn't send people back to your site after they book. GTM and the Bookings iframe covers this in detail.

So you can't see a funnel of service, then date, then time, then details, then confirm. You can see what happens before the booking page and whether a booking came out the other end.

What you can measure natively#

SignalToolWhat it tells you
Landing page sessionsGA4 page viewsHow many people arrived
Clicks on Book linksGA4 outbound clicks, or a GTM link-click triggerHow many people went to the booking page
Booking iframe in viewGTM Element Visibility triggerHow many scrolled to the embedded form
First click into the iframeGTM Custom HTML tag that watches window blurHow many started using the form
Completed bookingsBookings TSV export, or a Power Automate flowHow many booked
Campaign on each bookingRefID in the Tracking data columnWhich link a booking came from, when it works

Some notes on each:

  • Outbound clicks. GA4's enhanced measurement records a click event, with link_domain and link_url, when someone follows a link to another domain. That covers plain links to outlook.office.com. A "Book now" button that isn't a real link needs a GTM click trigger instead. The GA4 and GTM guide has the trigger set-up.
  • Iframe events. The visibility trigger and the blur snippet are in the GTM iframe answer. Treat the blur event as "started", not "booked".
  • Bookings. Only the Administrator role on the booking page can download the export. Each file covers up to four months. The steps are in exporting Bookings to Excel.
  • Campaigns. Add ?RefID= followed by a plain code (letters, digits, underscore or hyphen) to each link. Users have reported both Bad Request pages and blank Tracking data, so test it first. See RefID tracking not working.

Build a rough funnel#

Put the counts for the same week, and the same page, side by side:

  1. Sessions on the landing page (GA4).
  2. Book clicks or iframe in view (GA4 events).
  3. Iframe interactions, if you embed (GA4 event from the blur tag).
  4. Bookings from that page (export rows with that page's RefID, or all rows if only one page sends traffic).

Then read the gaps:

  • Few clicks or few iframe views. The problem is your page: the offer, the button, or the form sitting below where people stop scrolling. A session-recording tool on your own page helps here; see Clarity and Bookings for what it can and can't record.
  • Plenty of clicks, few or no bookings. The problem is on the booking page. Work through the checklist below.
  • Bookings in the export but none credited to your campaign. The bookings may be fine and the RefID lost. Check the link people actually used.

This funnel is rough. Clicks are counted per browser session and bookings per appointment. Some people click today and book next week from a bookmark. Use it to find the step that's broken, not to report a precise rate.

The drop-off checklist#

Do this as a customer would. Use a private window, sign out of Microsoft 365, and open the exact URL from the ad or email, on a phone as well as a laptop.

  • Bad Request. UTM tags with spaces or special characters, and sometimes RefID, can break the page. See UTM parameters and Bad Request. This alone produces "lots of ad clicks, zero bookings".
  • Blank frame or "refused to connect". Usually the page needs sign-in, and Microsoft's sign-in page won't load inside a frame. See iframe refused to connect and page not loading.

2. Are there any times to pick?#

This is the most common cause. A page with no open times looks fine to you and is useless to visitors.

  • Lead time and booking window. A long Lead time in hours hides the next few days. A short Maximum days in advance cuts off the rest. See minimum notice and booking window.
  • Staff hours versus business hours. Slots appear only where they overlap.
  • Outlook busy events. Recurring holds, focus time and all-day Busy events remove slots. See how Outlook events block availability.
  • No staff assigned to the service, or staff who aren't bookable.

No available times has the full checklist. Check several weeks ahead, not just today.

3. Is the choice too long?#

A page that lists ten services before showing a calendar loses people who don't know which one they need. Send campaign traffic to one service with its own link. See linking straight to a service.

The staff picker adds a decision too. Bookings shows "Anyone" alongside named staff and you can't remove it; see the Anyone option. If the choice doesn't matter to customers, turn staff selection off for that service.

4. Does the page ask for sign-in or a code?#

  • Sign-in. A page set to organisation-only asks outside visitors to sign in, and most leave. See sign-in required.
  • One-time code. If the shared page requires a one-time password, the booking isn't created until the visitor enters a code from their email. People who can't find it, or whose email went to junk, never finish. Personal Bookings with me pages always ask; see Bookings with me email verification.

5. Is the form too long?#

Every required custom question costs some bookings. Keep required questions to what you need before the appointment, and make phone, address and notes optional where you can. See custom fields and custom questions best practices.

6. Are the times shown in the right zone?#

Visitors see slots in their own time zone unless Always show time slots in business time zone is ticked. A mismatched Outlook time zone on the Bookings account can shift slots too. People who see 3 a.m. slots leave. See wrong time zone.

7. Does the embed work on a phone?#

The copied embed code uses height='100%', which often collapses into a small box with a scroll bar inside it. On a phone that hides the confirm button. See iframe cut off on mobile.

After each fix#

Change one thing at a time and give it a week of traffic before you judge it. Keep a note of the date of each change so you can line it up with the weekly counts.

Doing this with BookingsXP#

BookingsXP puts a booking widget on your own page in front of your existing Bookings page. Availability and appointments still come from Microsoft Bookings. Because the steps run where your page can hear them, its analytics show the funnel this guide can't: saw the widget, picked a day, picked a time, started details, booked. They also count Missed demand, the visits that opened the widget and found no open times, plus failed bookings. A visit that picked a time also counts as having picked a day, because the widget opens on the first free day. On Pro you can split the funnel by page, service, device type, channel, source and campaign. It won't fix an empty calendar, but it tells you how many people met one.

On Free you get the headline counts (views, bookings, conversion rate and Missed demand) for 30 days. Every plan also pushes each step to the dataLayer, and with your GA4 ID it sends bookingsxp_view, bookingsxp_slot, bookingsxp_form_start and generate_lead, so you can build a funnel exploration in GA4 yourself. See GTM and GA4. The funnel, channel, campaign and page reports are on Pro with 12 months of history, and Business keeps 24 months; see pricing. It only counts visits and bookings through the widget or hosted page, not people who book on the page Microsoft hosts. You can try it with your own booking page. BookingsXP is independent and not affiliated with or endorsed by Microsoft.

Questions people also ask

Sources

  1. Microsoft Learn: Reporting info (opens in a new tab) · learn.microsoft.com
  2. Microsoft Learn: Customize booking page (opens in a new tab) · learn.microsoft.com
  3. Microsoft Learn: Set scheduling policies (opens in a new tab) · learn.microsoft.com
  4. Microsoft Learn: Bookings faq (opens in a new tab) · learn.microsoft.com
  5. Microsoft Learn (opens in a new tab) · learn.microsoft.com
  6. support.google.com (opens in a new tab) · support.google.com
  7. Microsoft Learn: Track which ads are leading to completed microsoft (opens in a new tab) · learn.microsoft.com