Websites & CMS
Embed Microsoft Bookings in a Shopify store
Shops that sell fittings, consultations, repairs or classes often run their staff calendars in Microsoft 365. BookingsXP puts that Microsoft Bookings calendar on a Shopify page. A booking is an appointment in Microsoft Bookings, not a Shopify order: there is no cart, checkout or payment.
- Integration
- Shopify
- Plan: Free
- Works on every plan, including Free ($0, no card).
- In short
- A Custom Liquid section puts the widget in a storefront page; theme.liquid adds a floating button to every page.
- Microsoft Bookings
- Stays your system of record. Bookings land in Outlook and Teams and Microsoft sends the invites and reminders.
- Trademarks
- Shopify is a trademark of Shopify Inc.. BookingsXP is independent and not affiliated with or endorsed by Shopify.
What happens with Shopify
- A Custom Liquid section or block renders its HTML into the storefront page itself, so the loader runs on your shop's domain and the widget sits inline.
- Code added to layout/theme.liquid before </body> loads on every page, which suits a floating button.
- Booking events go to window.dataLayer and gtag on the storefront page, so GTM or a Google tag added in theme code sees them. Tags that run as Shopify pixels, including GTM loaded in a custom pixel, run in Shopify's sandbox with their own dataLayer and do not.
- BookingsXP does not create Shopify customers or orders. The appointment, the confirmation email and any Teams link come from Microsoft Bookings.
Set up Shopify
Step 1: Add a Custom Liquid section
Online Store → Themes → Customize. Open the template where the widget belongs, click Add section and choose Custom Liquid (the name in Dawn and most Online Store 2.0 themes; check your theme's documentation if it is missing). Paste the snippet and save.
HTML <script src="https://bookingsxp.com/embed/v1.js" async></script> <bookingsxp-widget widget="w_8fk2m1qz" theme="auto"></bookingsxp-widget>Step 2: For a dedicated booking page
Online Store → Pages → Add page, for example Book a fitting. In the theme editor, create a new page template, add the Custom Liquid section to it, then choose that template under Theme template on the page.
Step 3: Optional: a floating button on every page
Online Store → Themes → … → Edit code → layout/theme.liquid. Paste the script and a floating element just before </body> and save. Duplicate the theme first: Shopify removes code changes that are incompatible with a theme update. If your theme lets you add sections to the footer in the theme editor, a Custom Liquid section there also appears on every page without editing code.
theme.liquid <script src="https://bookingsxp.com/embed/v1.js" async></script> <bookingsxp-widget widget="w_8fk2m1qz" mode="floating" button-text="Book a fitting" accent="#111827"></bookingsxp-widget>Step 4: If your tags run as Shopify pixels
Publish the booking as a Shopify custom event and subscribe to it in your custom pixel with analytics.subscribe. Add this after the loader in theme.liquid. A simpler alternative is a redirect-url to a Shopify page such as /pages/booking-confirmed, which pixels see as a page view.
HTML <script> window.addEventListener("bookingsxp:booking_completed", function (e) { var d = e.detail || {}; if (window.Shopify && Shopify.analytics) { Shopify.analytics.publish("bookingsxp:booking_completed", { bookingId: d.booking && d.booking.id, service: d.service && d.service.name }); } }); </script>Step 5: Test on the live store
Open the storefront, not only the theme editor, and make a test booking. Check GTM Preview or type dataLayer in the browser console to see the bookingsxp.* events, then cancel the test appointment in Bookings.
Outcomes and caveats
What you get
- Microsoft Bookings availability on a page, product or landing template, in your accent colour.
- Inline on one page, or a floating button across the store.
- Booking events for GTM or a Google tag in theme code, and a documented route into Shopify custom pixels.
Limits and caveats
- Bookings are not Shopify orders. BookingsXP takes no payments or deposits and creates no Shopify customer.
- Tags that run as Shopify custom or app pixels cannot read the storefront dataLayer. Use theme-code tags, the custom event above, or a thank-you page redirect.
- Edits to theme.liquid can be lost in a theme update. Keep a copy of the snippet.
- Shopify's cookie banner controls Shopify's pixels, not theme scripts. If attribution must wait for consent, set window.bxpConsent = false before the loader until the visitor agrees; the loader then shares only the page path and referring site.
- If you use Allowed websites, add both your shop's own domain and its myshopify.com address.
Shopify questions
Start free, no card
One widget, four templates, GTM and GA4 events and attribution in every booking. No card, no time limit.
No Microsoft sign-in or admin consent. Free plan, no card.