Answer · Integrations
Microsoft Bookings to HubSpot, Salesforce or Dynamics
Last updated 4 min readPart of Microsoft Bookings integrations: Zoom, CRMs, Zapier6 sources
“How do I send Microsoft Bookings appointments to HubSpot, Salesforce or Dynamics?”
Asked in community.hubspot.com (opens in a new tab), Microsoft Learn (opens in a new tab) and Microsoft Learn (opens in a new tab)
Short answer
As of September 2026, Microsoft Bookings has no built-in integration with HubSpot, Salesforce or Dynamics 365. The route Microsoft supports is the Microsoft Bookings (Preview) connector in Power Automate: a flow fires when an appointment is created, updated or cancelled, then writes a contact, lead or activity into your CRM. The other options are third-party integration platforms, or polling the Microsoft Graph API yourself.
What exists for each CRM#
| CRM | Native integration | Practical route | Licence note |
|---|---|---|---|
| HubSpot | None. A HubSpot Ideas thread asks for one | Power Automate with the community HubSpot CRM connector or an HTTP call to the HubSpot API, or an iPaaS tool | The HubSpot CRM (Independent Publisher) connector is Premium |
| Salesforce | None. A Microsoft Q&A answer says there's "no built-in way" | Power Automate with the Salesforce connector | Premium |
| Dynamics 365 / Dataverse | None direct | Power Automate with the Microsoft Dataverse connector | Premium |
The Bookings connector itself is Standard, but every CRM connector above is Premium in Power Automate, so the account that owns the flow needs a premium licence.
If your team already lives in HubSpot and the bookings are sales meetings, HubSpot's own meetings scheduler may fit better than syncing Bookings into it, since each booking lands on the contact record directly. Microsoft Bookings vs HubSpot Meetings weighs the two.
Power Automate (the route Microsoft supports)#
A flow triggers on "When a appointment is Created" (spelled that way in the connector) for one booking page, then finds or creates the contact in your CRM and logs the meeting. The trigger gives you the customer's details, custom question answers, staff, service, times, the Teams link, SelfServiceAppointmentId (use it as the unique key) and TrackingData, the RefID campaign value. Separate flows on Updated and Cancelled keep the CRM record current.
What decides whether this route works for you:
- Who builds it. Only someone with the Administrator role on that booking page can create flows with the appointment triggers. Tenant admin rights aren't enough.
- Five flows per booking mailbox. Created, Updated and Cancelled already use three.
- Reliability. Users report the Updated trigger not firing for some edits, and group attendees after the first arrive as Updated, not Created. See why a Bookings trigger isn't firing.
- Clouds. Not available in GCC, GCC High, DoD or 21Vianet.
The Power Automate CRM guide builds the whole flow for Dataverse, Salesforce and HubSpot, with deduplication, group bookings and error handling.
Third-party integration platforms#
Pipedream, viaSocket and Onlizer list Microsoft Bookings integrations that can reach HubSpot or Salesforce. Pipedream says it has Bookings actions but no Bookings triggers, so these tools usually poll for new appointments rather than reacting to them. Zapier has no Microsoft Bookings app; see the Zapier options.
Poll the Graph API#
Developers can read appointments with the Microsoft Graph Bookings API and push them to the CRM. There are two catches:
- Bookings doesn't support Graph change notifications or webhooks. See Does Microsoft Bookings support webhooks?
- Appointments have no created-date filter, so you have to list them on a schedule and compare the list with what you've already synced.
Graph allows 4 concurrent Bookings requests per app and mailbox. The API covers shared booking pages only, not Bookings with me.
Manual export#
If you only need a periodic sync, download the TSV export (4-month windows) and import it into the CRM. It isn't real time, and customer lists can't be exported separately.
Doing this with BookingsXP#
If your bookings come from a website, the BookingsXP widget sits on top of your existing Bookings page. With Store bookings switched on, it sends a signed booking.created webhook to Zapier, Make, n8n, Power Automate or your CRM's inbound endpoint, including the UTM and click-ID source of the visit, which the connector can't give you; the Business plan adds a REST API for pulling stored bookings. Webhooks are on the Pro and Business plans (details), and they only cover bookings made through the widget, not bookings staff enter in the Bookings calendar. 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 (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Booking api overview (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Throttling limits (opens in a new tab) · learn.microsoft.com
Related
- Microsoft Bookings to a CRM with Power Automate
- Does Microsoft Bookings support webhooks?
- Is there a Zapier integration for Microsoft Bookings?
- Microsoft Bookings vs HubSpot Meetings (2026) compared
- Why isn't my Power Automate Bookings trigger firing?
- How to export Microsoft Bookings appointments to Excel