Answer · Integrations

Does Microsoft Bookings support webhooks?

Last updated 4 min read5 sources

The question people ask
“Does Microsoft Bookings support webhooks?”

Asked in Microsoft Learn (opens in a new tab), Microsoft Learn (opens in a new tab), Microsoft Learn (opens in a new tab) and github.com (opens in a new tab)

Short answer

No. As of September 2026 Microsoft Bookings has no webhook setting, and Microsoft Graph change notifications (subscriptions) don't support Bookings resources; Microsoft staff confirmed this on Microsoft Q&A in 2022 and again in 2023. The only event source Microsoft offers is the Power Automate Bookings connector, which is still in preview. Otherwise you poll the Graph API and work out what changed yourself.

Your three options#

ApproachReal-time?NeedsMain catch
Power Automate Bookings connectorYes, event-driven triggersBookings administrator on the calendarPreview; 5 flows per booking mailbox; Updated trigger reported unreliable
Poll Microsoft GraphAs often as you pollEntra app registration, Bookings permissionNo created-date filter; you diff results yourself
Outlook calendar eventsDepends on the toolAccess to staff calendarsGeneric calendar events, not Bookings records

Option 1: Power Automate connector#

The connector reference lists three triggers: "When a appointment is Created" (Microsoft's spelling), "When an appointment is Updated" and "When an appointment is Cancelled". Each takes the booking calendar's SMTP address. The trigger payload includes customer details, custom question answers, the customers list for group bookings, staff, service, start and end, the Teams join URL, tracking data and the cancel reason.

Documented limits worth knowing before you design around it:

  • Only Bookings administrators of that calendar can create flows with these triggers. Tenant admin rights aren't enough.
  • Five flows per booking mailbox, shared by everyone. A sixth returns HTTP 429.
  • 100 API calls per connection per 60 seconds. Connections can't be shared.
  • Update events don't say what changed, and in group bookings the second and later attendees fire Updated, not Created.
  • There's one action, "List Booking Businesses where user is an admin". You can't create or change appointments through the connector.

To turn this into a webhook for your own system, end the flow with an HTTP step that posts the trigger body to your endpoint. Check whether your Power Automate licence covers the HTTP action before you build; the Free licence is limited to standard connectors, and you can see your entitlements under Settings → View my licenses in Power Automate. If triggers never run, see why the Bookings trigger isn't firing. A step-by-step CRM flow is in the Power Automate CRM guide.

Option 2: poll Microsoft Graph#

Graph has no createdDateTime filter on appointments, so you can't ask for "new since my last check". The workable pattern:

  1. Every few minutes, request a rolling window of upcoming appointments:
Text
GET https://graph.microsoft.com/v1.0/solutions/bookingBusinesses/{id}/calendarView?start={now}&end={now+90 days}
  1. Store each appointment's id with a hash of the fields you care about.
  2. New id means a new booking. A changed hash means an update. An id that disappears from the window before its start time was probably cancelled.
  3. Fire your own webhook for each difference.

Keep requests sequential per booking mailbox: Microsoft's throttling limits allow four concurrent Bookings requests per app ID and mailbox. The Graph Bookings API only covers shared booking pages, not "Bookings with me".

Option 3: calendar-level events#

Bookings appointments land on staff members' Outlook calendars, and Outlook calendar events are a supported Graph change-notification resource. Some teams subscribe to staff calendars, or use an automation tool's Outlook calendar trigger, and treat new events as a signal. You get a generic calendar event, not the Bookings record, so custom answers, service IDs and tracking data are missing unless you look the appointment up in Graph afterwards.

Doing this with BookingsXP#

If bookings come in through the BookingsXP embedded widget on your site, the optional data layer sends a booking.created (or booking.failed) webhook to Zapier, Make, n8n or your own URL, with no Power Automate flow or Graph polling. It only sees bookings made through the widget: not bookings created by staff in the Bookings calendar, made on Microsoft's own page, or cancelled from Microsoft's email links. Webhooks are on paid plans; see webhooks and pricing. BookingsXP is independent and not affiliated with or endorsed by Microsoft.

Questions people also ask

Sources

  1. Microsoft Learn (opens in a new tab) · learn.microsoft.com
  2. Microsoft Learn: Power automate integration (opens in a new tab) · learn.microsoft.com
  3. Microsoft Learn (opens in a new tab) · learn.microsoft.com
  4. Microsoft Learn: Bookingbusiness list appointments (opens in a new tab) · learn.microsoft.com
  5. Microsoft Learn: Throttling limits (opens in a new tab) · learn.microsoft.com