Shared Bookings

How Microsoft Bookings calculates availability

The order Microsoft Bookings applies business hours, staff hours, Outlook free/busy, time off, lead time, buffers and time zones, plus a symptom table.

Last updated 9 sources

A time appears on a shared booking page only if it survives every filter in a fixed chain. The Microsoft server applies the first part (hours, service availability, the staff member's Outlook free/busy, existing bookings and time off) and sends back blocks of free time. The booking page then applies the rest: buffers, lead time, the booking window, time increments and the visitor's time zone. When a time is missing, or shouldn't be there, work out which link in the chain removed it or let it through.

What the Microsoft server works out#

  1. Business hours. Set on Business information. They default to 8 a.m. to 5 p.m., Monday to Friday, in 15-minute steps. Microsoft calls them "the hours to which all bookings are restricted".
  2. Staff working hours. With Use business hours on, a staff member's hours are the business hours. Turn it off to give them custom hours, including split shifts. A weekday with no hours means they can't be booked that day.
  3. Service availability. On the service's Availability options: Bookable when staff are free, Not bookable or Custom hours. Date ranges added with Add a different date range override the general setting for those dates. The Availability section on the Booking page sets page-wide ranges, otherwise "Bookings will default to your business hours".
  4. The staff member's Outlook free/busy. With Events on Microsoft 365 calendar affect availability on (the default), Busy, Tentative and Out of office time removes slots; Free time doesn't. Graph describes this as checking the staff member's "personal calendar in Microsoft 365", and it requires the person to share free/busy with the organization. Staff from outside your tenant can't share it at all.
  5. Existing Bookings appointments. A 1:1 slot is gone for that staff member once booked. A group slot stays open until it's full. A Multiple staff service needs every assigned person free; an "Anyone" choice needs at least one.
  6. Time off and closures. Add time off in the Calendar makes the selected staff unavailable for those dates. For a closure with all staff selected, customers see a closed message on the page.

What the booking page applies on top#

  1. Duration and buffers. A slot needs room for the Before buffer, the appointment and the After buffer. Microsoft's example: a one-hour service with a 15-minute Before buffer needs 75 free minutes.
  2. Lead time and the booking window. Times sooner than Lead time in hours or beyond Maximum days in advance are dropped. A service with its own policy uses its own values. See scheduling policy.
  3. Time increments. Start times are stepped from the start of each free block and spaced at least one increment apart.
  4. Time zone. Every setting above is in the business time zone. Visitors see the result converted to their own zone, unless Always show time slots in business time zone is ticked under Region and time zone settings.

A calendar day is enabled only if at least one slot is left after all ten steps.

Where Microsoft docs disagree#

  • Business hours versus staff hours. The business information article says business hours restrict all bookings, and the add-staff article says custom staff hours "further limit" them. The Graph staff resource says that when Use business hours is off, the staff member's own hours "represent that member's general availability", which reads as a replacement, not a limit. We haven't verified which wins when staff hours fall outside business hours. Keep staff hours inside business hours and the question doesn't arise.
  • Staff time zones. The FAQ says "there's no provision to set time zone for staff". The Graph staff resource has a timeZone property. The web app offers no setting, so treat the FAQ as the working rule.
  • Two time zone settings, not one. The Bookings calendar inside the web app shows times in the signed-in user's Outlook on the web time zone. The public page uses the Booking page time zone. When those disagree, staff and customers see different times for the same booking.

What we saw when testing (September 2026)#

We captured the public shared booking page and the calls it makes (13 live captures, 913 days, 7,924 slots, viewed from New York, Los Angeles, Chicago, London, Kolkata and Kathmandu) and reproduced every slot from the data behind it.

  • The server sends blocks with statuses. Each staff member comes back as a list of blocks marked available, busy, out of office, or (for a partly filled group session) slots available. Working hours, Outlook busy time, existing bookings and service date windows are already folded in. The page doesn't apply business hours itself.
  • The answer depends on the range requested. The same hour came back as out of office in one request and available in another, depending on the start date asked for. The page requests about a month at a time, so check a doubtful day near a month boundary from both months.
  • Slots start where a block starts. A block that frees up at 6:40 gives 6:40, 7:10 and so on, and a Before buffer shifts that first start. Buffers are from the page code; none of our test services had them.
  • The earliest slot is now + lead time + about 3 minutes.
  • "Anyone" is the union of staff. Each slot keeps the list of staff who could take it, and the page picks one of them at random when the customer books.
  • The page is the safety net. Called directly, the Microsoft service accepted a booking over a busy Outlook block and one in the past. It rejected only clashes with another Bookings appointment for the same staff member.

Symptom table#

SymptomUsually caused byGo to
"No availability" on every dayStaff assignment, hours, service availability or lead timeNo available times
Slots shifted by whole hoursBusiness, Outlook or visitor time zone mismatchWrong time zone
Starts like 9:50 or 10:29Blocks beginning at odd minutesOdd start times
Booked over an Outlook meetingCalendar sync off, event marked Free, free/busy not sharedOutlook events and availability
Booked over a second calendar, Google Calendar or iCloudBookings reads one calendar per personMultiple calendars, Google Calendar
Today and tomorrow never bookableLead time, or the 1-day fallbackLead time
The calendar opens on an empty monthNo jump-to-next-opening featureNext available time
Outlook events longer than the appointmentBuffers are written into the eventBuffer time
Holidays still bookableNo time off entry, or an all-day Outlook event marked FreeHolidays and time off
Need to open only certain datesService date rangesSpecific dates only
Too many bookings in one dayNo daily cap existsLimit bookings per day
Two customers in one 1:1 slotMaximum attendees per event above 1Group services
One person never offeredSharing, membership or external staffStaff not bookable, External staff
Personal page hours look wrongDifferent rules on Bookings with meBookings with me work hours

When changes show up#

The FAQ says availability "is updated when the page is loaded, and when a booking is made", and that only one person can book a contested time. Staff, service and calendar changes usually show on a reload. Business settings such as the one-time password option can take up to 10 minutes, according to the service article.

Bookings with me pages (Microsoft now calls them Personal Bookings) use a different slot algorithm: starts sit on a grid from midnight, and the earliest is more than lead time + 15 minutes away. Developers reading availability through the API should start with available time slots via the API.

BookingsXP is independent and not affiliated with or endorsed by Microsoft.

More on this topic

Questions people also ask

Sources

  1. Microsoft Learn: Staff availability (opens in a new tab) · learn.microsoft.com
  2. Microsoft Learn: Add staff (opens in a new tab) · learn.microsoft.com
  3. Microsoft Learn: Enter business information (opens in a new tab) · learn.microsoft.com
  4. Microsoft Learn: Configure service availability (opens in a new tab) · learn.microsoft.com
  5. Microsoft Learn: Schedule closures time off vacation (opens in a new tab) · learn.microsoft.com
  6. Microsoft Learn: Set language time zones (opens in a new tab) · learn.microsoft.com
  7. Microsoft Learn: Customize booking page (opens in a new tab) · learn.microsoft.com
  8. Microsoft Learn: Bookings faq (opens in a new tab) · learn.microsoft.com
  9. Microsoft Learn (opens in a new tab) · learn.microsoft.com

Edit or question? hello@bookingsxp.com