Answer · Integrations
Does Microsoft Bookings support webhooks?
Last updated 4 min read5 sources
“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#
| Approach | Real-time? | Needs | Main catch |
|---|---|---|---|
| Power Automate Bookings connector | Yes, event-driven triggers | Bookings administrator on the calendar | Preview; 5 flows per booking mailbox; Updated trigger reported unreliable |
| Poll Microsoft Graph | As often as you poll | Entra app registration, Bookings permission | No created-date filter; you diff results yourself |
| Outlook calendar events | Depends on the tool | Access to staff calendars | Generic 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:
- Every few minutes, request a rolling window of upcoming appointments:
GET https://graph.microsoft.com/v1.0/solutions/bookingBusinesses/{id}/calendarView?start={now}&end={now+90 days}- Store each appointment's
idwith a hash of the fields you care about. - New
idmeans a new booking. A changed hash means an update. Anidthat disappears from the window before its start time was probably cancelled. - 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
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Power automate integration (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Bookingbusiness list appointments (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Throttling limits (opens in a new tab) · learn.microsoft.com