Answer · Admin & security

Track Microsoft Bookings usage across your organisation

Last updated 5 min read12 sources

The question people ask
“How can an admin track Microsoft Bookings usage and adoption across the organisation?”

Asked in Microsoft Tech Community (opens in a new tab)

Short answer

There's no Bookings usage report in the Microsoft 365 admin center as of October 2026. The closest built-in report is Virtual Appointments usage in the Teams admin center. It counts Bookings appointments held as Teams meetings and needs a Teams Premium or Teams EHR connector licence. For a full picture you build an inventory yourself: licences show who can use Bookings, Exchange PowerShell shows how many booking pages exist, and Microsoft Graph shows which pages are published and how many appointments each one holds.

This page is for tenant admins measuring adoption. For appointment reporting inside one booking calendar, see Bookings reports and dashboards.

What people ask#

In January 2026 an admin asked on Microsoft Tech Community for "a PowerShell script or a specific Graph query that can pull activity for all MS Bookings calendars in the tenant within a 90-day window", so they could retire unused ones. Microsoft's own developer blog put the same need plainly in 2022: "Tenant/IT admins want the list of all the Bookings calendars in their organization". The Bookings FAQ confirms there's no central view: "Each Bookings calendar is maintained independently."

What the admin centers give you#

WhereBookings dataCatch
Microsoft 365 admin center → Reports → UsageNoneNo Bookings report in the list
Teams admin center → Analytics & reports → Usage reports → Virtual Appointments usageCount of Bookings appointments, plus a per-appointment table with Department (the Bookings calendar), status (Completed or No show), duration and lobby waitTeams Premium or Teams EHR connector licence; Teams meetings only; 7, 30 or 90 days
Teams admin center → Advanced Virtual Appointments activityUse of premium features such as SMS, queue and on-demand appointments, per userTeams Premium
Purview auditNothing documentedNo Bookings activities in Microsoft's audit list

The Virtual Appointments report needs the Teams admin, Global reader or Report reader role. It exports to CSV, so you can count appointments per calendar from the Department column. It only sees appointments that ran as Teams meetings, so in-person services don't appear.

Build the inventory yourself#

1. Who can use Bookings#

Start with the switches. In Exchange Online PowerShell:

powershell
Get-OrganizationConfig | Select-Object BookingsEnabled
Get-OwaMailboxPolicy | Select-Object Name, BookingsMailboxCreationEnabled, PersonalBookingsDisabled

These tell you whether Bookings is on for the tenant, and which policies allow new shared pages or personal pages. Turning Bookings off or limiting who creates pages explains each one.

Then list licensed users. Bookings is the MICROSOFTBOOKINGS service plan (199a5c09-e0ca-4e37-8f7c-b05d533e1ea2) in Microsoft's licensing reference:

powershell
Connect-MgGraph -Scopes "User.Read.All"
$plan = "199a5c09-e0ca-4e37-8f7c-b05d533e1ea2"   # MICROSOFTBOOKINGS
Get-MgUser -All -Property DisplayName, UserPrincipalName, AssignedPlans |
  Where-Object { $_.AssignedPlans | Where-Object { $_.ServicePlanId -eq $plan -and $_.CapabilityStatus -eq "Enabled" } } |
  Select-Object DisplayName, UserPrincipalName

That measures reach, not use. Many Microsoft 365 plans include Bookings, so this list is often most of your users.

2. How many booking pages exist#

Each shared booking page is an Exchange mailbox of type SchedulingMailbox:

powershell
Get-EXOMailbox -RecipientTypeDetails SchedulingMailbox -ResultSize Unlimited -Properties WhenCreated |
  Select-Object DisplayName, PrimarySmtpAddress, WhenCreated |
  Sort-Object WhenCreated

Count the results to get the number of pages, and group by WhenCreated to see the trend over time. The Bookings FAQ also gives a command that lists who has access to each mailbox. That's how you find pages whose only users have left; admin access to every calendar covers it.

3. Which pages are live and in use#

Microsoft Graph adds what Exchange can't show. Listing booking businesses returns only the ID and name, and it stops at 500 with no paging. Getting each business returns isPublished, publicUrl, createdDateTime and lastUpdatedDateTime. calendarView returns the appointments in a date range. The least privileged permission for all three calls is Bookings.Read.All.

powershell
Connect-MgGraph -Scopes "Bookings.Read.All"
$start = (Get-Date).AddDays(-90).ToUniversalTime().ToString("o")
$end   = (Get-Date).ToUniversalTime().ToString("o")

Get-MgBookingBusiness -All | ForEach-Object {
  $b     = Get-MgBookingBusiness -BookingBusinessId $_.Id
  $appts = Get-MgBookingBusinessCalendarView -BookingBusinessId $_.Id -Start $start -End $end -All
  [pscustomobject]@{
    Page            = $b.DisplayName
    Published       = $b.IsPublished
    Created         = $b.CreatedDateTime
    LastUpdated     = $b.LastUpdatedDateTime
    Appointments90d = @($appts).Count
  }
} | Export-Csv bookings-usage.csv -NoTypeInformation

Three caveats:

  • calendarView counts appointments that take place in the window, not bookings made in it. Graph has no created-date filter for appointments.
  • Delegated calls run as you. Microsoft doesn't say whether they reach pages where you aren't staff, so compare the count with the Exchange list. For a reliable tenant-wide run, use an app with the application permission and admin consent. Graph permissions for Bookings explains the trade-offs.
  • Run calls one at a time per booking mailbox. Graph allows four concurrent Bookings requests per app and mailbox.

Add Get-MgBookingBusinessStaffMember to record each page's staff and roles. A page with no Administrator left is a page nobody can manage. A published page with zero appointments in 90 days is a candidate for retirement. The Bookings admin checklist puts this inventory into a regular review.

What this won't show#

Personal "Bookings with me" pages aren't booking mailboxes and aren't in the Graph Bookings API. You also won't get page views or how many visitors gave up without booking. Microsoft Bookings doesn't record either.

Doing this with BookingsXP#

BookingsXP doesn't fill the admin gap. It has no tenant-wide report and no connection to Microsoft Graph, so it can't list your booking pages, licences or appointments. It only sees traffic and bookings on its own widgets and hosted pages. For the pages you embed with it, the analytics show what Microsoft's tools can't: views, bookings, conversion rate and "missed demand" (visits that found no open times), per widget. On Pro you also get the step-by-step funnel and source and campaign reports. Business covers up to 50 Bookings calendars and 10 workspace members, which suits a team that runs several department pages and wants one view of how their public pages perform. Bookings made on the page Microsoft hosts, or added by staff, aren't counted. Plans are on pricing. BookingsXP is independent and not affiliated with or endorsed by Microsoft.

Questions people also ask

Sources

  1. Microsoft Learn: Activity reports (opens in a new tab) · learn.microsoft.com
  2. Microsoft Learn: Virtual appointments usage report (opens in a new tab) · learn.microsoft.com
  3. Microsoft Learn: Advanced virtual appointments activity report (opens in a new tab) · learn.microsoft.com
  4. Microsoft Learn: Bookings faq (opens in a new tab) · learn.microsoft.com
  5. Microsoft Learn: Licensing service plan reference (opens in a new tab) · learn.microsoft.com
  6. Microsoft Learn: Bookingbusiness list (opens in a new tab) · learn.microsoft.com
  7. Microsoft Learn (opens in a new tab) · learn.microsoft.com
  8. Microsoft Learn: Bookingbusiness list calendarview (opens in a new tab) · learn.microsoft.com
  9. Microsoft Learn: Get mgbookingbusinesscalendarview (opens in a new tab) · learn.microsoft.com
  10. Microsoft Learn: Throttling limits (opens in a new tab) · learn.microsoft.com
  11. devblogs.microsoft.com: Using scripts for microsoft bookings calendar and mailbox (opens in a new tab) · devblogs.microsoft.com
  12. Microsoft Learn: Audit log activities (opens in a new tab) · learn.microsoft.com