Guide · Integrations
Move from Calendly to Microsoft Bookings (keeping Microsoft 365)
Last updated 8 min read13 sources
This guide is for teams that already pay for Microsoft 365 and want to stop paying for Calendly seats by moving scheduling to Microsoft Bookings. It shows how to map Calendly concepts to Bookings, lists the features you lose so you can decide before you start, and gives a switch-over plan that doesn't drop meetings. Expect half a day to rebuild a typical team setup and two to four weeks of running both tools side by side. All Calendly facts come from Calendly's own pricing and help pages as of September 2026.
First, decide whether you should migrate#
Bookings is a good fit when your meetings are straightforward: a set of meeting types, Teams links, email reminders, and a page customers can open. It is a poor fit if your process depends on any of the following. As of September 2026, Bookings has no native equivalent for:
| If you rely on this in Calendly | What Bookings offers |
|---|---|
| Taking payment at booking (Stripe, PayPal, on Standard and above) | Nothing. Microsoft's FAQ: "there's no payment support in Bookings." |
| Routing forms that qualify and route leads (Teams and above) | Nothing comparable. You can only send people to different service links yourself. |
| Round-robin distribution (Teams and above) | "Anyone" assigns staff randomly, with "no way to ensure equal distribution" or per-person caps |
| GA4 (Standard and above) or the Meta Pixel | No analytics integration. The only attribution is a RefID value in the booking link. |
| Webhooks and API-driven workflows | No webhooks. A preview Power Automate connector (admin-only, five flows per booking page) and the Graph API. |
| Checking Google or other non-Microsoft calendars | Only the primary Microsoft 365 calendar of each staff member is read |
| Text-message reminders in any country | SMS needs Teams Premium, and Microsoft's docs list only a handful of countries |
| Letting invitees pick the meeting length | Not possible. One duration per service. |
| Recurring bookings | Not supported |
If one of these is essential, stay on Calendly or look at the alternatives comparison. For a feature-by-feature look at the two products, see Microsoft Bookings vs Calendly.
What you gain#
- No extra seat cost if you're already licensed. Bookings is included in Microsoft 365 Business Basic, Business Standard, Business Premium, E1, E3, E5, A3, A5, F1 and F3, Teams Essentials and Teams Premium, plus the matching Office 365 plans. As listed on Calendly's pricing page in September 2026, Standard is $12 per seat per month billed monthly ($10 billed annually) and Teams is $20 ($16). In both products, the people who book need no seat or licence.
- Data stays in your tenant. Microsoft says all Bookings data is stored in Microsoft 365 and in Exchange, and that compliance policies for shared mailboxes also apply to Bookings mailboxes.
- Admin control. Admins can switch Bookings off, limit who creates pages, restrict bookings to your organisation, and block search indexing, all from the Microsoft 365 admin center.
- Native Teams and Outlook. Each online appointment gets its own Teams link, and appointments land on staff calendars without connecting a third-party app to Outlook.
Step 1: Inventory your Calendly setup#
Export or write down, for every Calendly event type:
- name, duration, location type (Teams, phone, in person)
- hosts, and whether it's one-on-one, round-robin or a group event
- invitee questions, and which are required
- buffers, minimum notice, how far ahead people can book, and start-time increments
- reminder and follow-up messages (Calendly calls these Automations)
- where the link is published: website pages, email signatures, ads, CRM sequences, PDFs
- any integrations: GA4, Meta Pixel, webhooks, CRM, payments
This list becomes both your build plan and your link-replacement checklist.
Step 2: Choose shared Bookings or Bookings with me#
Solo users with simple 1:1 meetings can use Bookings with me. It lives in Outlook, is published automatically, and supports public and private meeting types with buffers and lead times. It has no custom questions, no embed code and no API, though. If you're replacing Calendly on a website or across a team, create a shared booking page. The trade-offs are covered in Shared Bookings vs Bookings with me.
Step 3: Map event types to services#
| Calendly | Microsoft Bookings (shared page) |
|---|---|
| Event type | Service (Services → Add a service). Microsoft recommends no more than 50 per page. |
| Duration options on one event | One service per duration |
| Location options on one event | One service per location. Customers can't choose. |
| Hosts | Staff (up to 100 per page), assigned on the service's Assign staff page |
| Collective event (everyone must attend) | Multiple staff service: every assigned staff member is booked and all must be free |
| Group event | Set Maximum attendees per event above 1 when you create the service. An existing 1:1 service can't be switched to group later. |
| Secret event | Service with Publishing options off. It's hidden from the page but reachable by its own link. |
| Invitee questions | Custom fields on the service, with a Required checkbox |
| Buffers, minimum notice | Buffer time on the service. Lead time and maximum days in advance under Scheduling policy. |
| Start-time increments | Time increments from 5 minutes to 4 hours, under Scheduling policy |
| Automations (reminders) | Per-service Notifications: confirmation, reminders and follow-ups, 15 minutes to two weeks before or after |
Two differences catch people out:
- Bookings reads availability only from each staff member's primary Microsoft 365 calendar, and only when "Events on Microsoft 365 calendar affect availability" is on. Calendly can check up to four Outlook sub-calendars. Anyone who kept personal commitments in a secondary or Google calendar needs to block that time in their main Outlook calendar.
- Bookings shows odd start times (such as 9:50) when staff calendars have gaps. Set a time increment and keep calendars tidy. See odd start times.
Step 4: Replace the pieces Bookings lacks#
- Round robin. Turn off "Allow customers to choose a particular staff for booking" to get automatic assignment, and accept that it isn't balanced. Or split staff into separate services. The workarounds are in the round-robin answer.
- Routing forms. Keep your qualification form on your website and send each answer path to a different service link, using hidden services for internal-only paths.
- Payments. Take payment separately. Put a payment link in the service's "Additional information for Email Confirmation" text, or invoice afterwards. See Bookings and payments.
- Webhooks and CRM. Use the Power Automate connector. The build is in Bookings + Power Automate to a CRM.
- Analytics. Add
?RefID=spring_webinarto each link you publish (letters, numbers, underscore and hyphen only). The value appears in the Bookings export and the connector'sTrackingData. It won't reach GA4 on its own. Microsoft's page is hosted on Microsoft's domain, so you can't add tags to it.
Step 5: Plan the embed change#
Calendly offers an inline embed, a pop-up text link and a pop-up widget. Its embed script sends events such as calendly.event_scheduled to your page. Bookings gives you an iframe snippet for shared pages, under the booking page's Embed option. That iframe:
- has a fixed height, so check it on mobile
- sends no events to your page
- has no redirect to a thank-you page after booking
- only allows the colours and logo you set in Bookings
If your Calendly embed fed conversion tracking, that tracking stops when you switch to the plain iframe. Embedding Bookings on your website covers the options.
Step 6: Handle old links and the switch-over#
- Pick the booking mailbox address carefully. The public URL is built from the mailbox's SMTP address, such as
https://outlook.office.com/book/Sales@contoso.com/, and changing it later is awkward. Ask an admin to create it on your real domain, notonmicrosoft.com. That also helps confirmation emails avoid junk folders. - Put a URL you control in front of it. Create
yourdomain.com/bookon your website and redirect it to the Bookings page. Use that short link everywhere. You can't redirect a calendly.com URL yourself, but if you ever move again you'll only change one redirect. - Run both tools in parallel. Publish the Bookings page, then replace links in this order: website, email signatures, CRM templates, ads. Keep Calendly active until the last meeting booked through it has taken place, so reschedule and cancel links in old confirmations keep working.
- Watch for double bookings during the overlap. Calendly events written to your primary Outlook calendar block Bookings availability as long as the free/busy setting above is on. Check that Calendly's settings check the same calendar in the other direction.
- Existing customers. Bookings has a Customers → Import customers option that takes an Outlook-contacts-style CSV. Microsoft doesn't document the file format, and users reported failed imports in 2026. It is often simpler to let the customer list rebuild itself as people book.
Step 7: Test before you cancel Calendly seats#
- Book each service from a private browser window as an outside visitor, and complete every required question.
- Confirm that the Teams link, confirmation email, reminder and staff calendar entry all appear.
- Check that a meeting in a staff member's Outlook calendar hides that slot on the page.
- Cancel from the confirmation email and confirm the slot reopens.
- Download the export (4-month window) and check the Tracking data column shows your
RefID.
Doing this with BookingsXP#
BookingsXP covers two of the gaps above without changing your Bookings setup:
- Embedding. A widget that resizes itself and matches your brand, instead of the fixed iframe. You paste your public shared booking page link, and it needs no Microsoft admin consent.
- Tracking. Funnel events pushed to GA4, Google Tag Manager, Google Ads, Meta and LinkedIn, an optional
redirect-urlthank-you page, and UTM and click IDs written into the booking itself.
With the optional data layer turned on, paid plans also send booking.created webhooks for bookings made through the widget. It doesn't add payments, routing forms or round-robin. See /features/embed and /features/analytics. BookingsXP is independent and not affiliated with or endorsed by Microsoft.
Questions people also ask
Sources
- calendly.com (opens in a new tab) · calendly.com
- calendly.com: Webhooks overview (opens in a new tab) · calendly.com
- calendly.com: Calendly google analytics (opens in a new tab) · calendly.com
- calendly.com: Calendly meta pixel (opens in a new tab) · calendly.com
- calendly.com: Embed options overview (opens in a new tab) · calendly.com
- calendly.com: Advanced calendly embed for developers (opens in a new tab) · calendly.com
- calendly.com: How to connect your office 365 or outlook com calendar (opens in a new tab) · calendly.com
- calendly.com: Workflows overview (opens in a new tab) · calendly.com
- Microsoft Learn: Bookings faq (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Bookings overview (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Define service offerings (opens in a new tab) · learn.microsoft.com
- Microsoft Learn: Customize booking page (opens in a new tab) · learn.microsoft.com
- Microsoft Learn (opens in a new tab) · learn.microsoft.com