Using WordPress? Every integration here is also available as a plugin. Browse the plugin store →

Released component

Bookings

Bookings shows your live Microsoft Bookings services, staff and open time slots on your own website, and writes the confirmed appointment straight back into Microsoft 365.

The component platform is in pre-launch, so Microsoft Bookings for WordPress is the route open today — the same Microsoft 365 job, delivered as a WordPress plugin. If the web component is what you need, tell us and we will come back to you.

brightwater-clinic.example/book
brightwater clinic
New patient consultation 30 min · Microsoft Bookings
9Mon 10Tue 11Wed 12Thu 13Fri
09:00 09:30 10:00 11:15 13:00 14:30 15:00 15:45 16:30
Confirm 10:00 Slots come from Microsoft at the moment the visitor looks.

A drawing of Bookings on a fictional site, in our own tokens rather than a customer’s brand. The released component renders live Microsoft 365 data; this frame shows its arrangement only.

Putting it on the page

What you paste into the page.

Two lines, and neither of them is a build step. Everything the component shows is resolved from the key at request time, so the markup on the page is the last markup anyone writes.

<script src="https://cdn.wpintegrate.com/v1/bookings.js"></script>
<wpi-bookings embed-key="your-embed-key"></wpi-bookings>
Illustrative markup — cdn.wpintegrate.com stands in for the bundle host. The real snippet, carrying your own embed key, comes from the builder.
  1. The script tag

    One bundle for one component. It defines the custom element and does nothing else — no framework, no build step, and no change to how the rest of the page is built.

  2. The element

    An ordinary HTML tag, placed wherever the component should appear — including inside a page builder’s raw-HTML block, a shortcode, or a template partial.

  3. The embed key

    The key resolves to one configured instance — the Microsoft 365 source, the arrangement, the theme, and the domains allowed to render it. Change any of those and the page itself never has to be edited again.

What it does

How it works

The Bookings component reads a Microsoft Bookings business through Microsoft Graph and renders the whole booking flow — service, staff member, date, time, contact details — inside your page. Availability is fetched at the moment the visitor looks, so the slots offered are the slots Microsoft says are free. The confirmed appointment lands in Bookings exactly as it would from Microsoft’s own booking page.

Why it exists

Microsoft Bookings gives a business a working scheduling engine and a booking page that lives on a Microsoft URL, in Microsoft’s styling, away from the site the visitor was reading. Sending someone off-site to book is where bookings are lost. This puts the same engine on your own page, in your own brand, without anyone having to build a Graph integration.

Element
<wpi-bookings>
Reads from
Microsoft Bookings, Microsoft Graph
Arrangements
4 in the builder
Graph access
managed or proxy — the tenant chooses

Arrangements in the builder

  • Vertical — steps stacked down the page
  • Horizontal — steps laid out across
  • Compact — condensed for a narrow column
  • Split — the form beside a business information panel

Where it runs

Anywhere you can paste two lines of HTML

A custom element needs no build step and no framework, so where your site is built is not a question you have to answer before this one.

  • WordPress
  • Webflow
  • Squarespace
  • Shopify
  • Wix
  • Astro
  • Next.js
  • Drupal
  • SharePoint pages
  • Plain HTML

Named as examples of places HTML can be pasted. No partnership is implied and none of these are customers. WordPress is the one that gets more than an embed — the same Microsoft 365 jobs also ship as plugins with a Gutenberg block.

In detail

Everything Bookings does.

9 capabilities, every one of them resolved from the embed key rather than written into the page.

  1. Services and staff come from Bookings

    The service list, prices, durations and staff members are read from the Bookings business itself — nothing is retyped and nothing drifts. Pin a default service and a default staff member and the widget opens straight on the date-and-time step.

  2. Availability is checked live

    Slots come from Microsoft’s availability for the selected service and staff member, then are converted from the timezone the business hours were authored in into the visitor’s own. There is no cached copy of the calendar to go stale.

  3. Four layouts and three ways to embed

    Vertical, horizontal and compact arrangements, plus a split layout with a business-information panel beside the form. Any of them can render inline in the page, behind a button that opens a modal, or as a floating launcher pinned to a page corner.

  4. Service and staff cards you control

    Per-service images with left, right or top alignment; per-staff photos and biography text keyed to the staff member so they survive a service-filtered list; one, two or three cards per row; and independent toggles for description, price, duration, email and photo.

  5. Only the contact fields you want

    Name, phone, address and notes can each be hidden and given a default value that is submitted invisibly. Email is always collected, because Microsoft Bookings needs it to confirm the appointment.

  6. Locale, clock and timezone

    12- or 24-hour time, first day of the week, locale string, and an option to show slots in the visitor’s own timezone. The timezone the business hours are written in is a separate setting, so international visitors see correct times rather than shifted ones.

  7. Decide what happens after the booking

    Show a thank-you message, redirect to a URL of your own, or offer cancel, reschedule and book-again buttons on the confirmation step.

  8. Reword or translate every string

    Section headings, button labels, error text and step names all accept overrides, so the widget can speak another language or simply your own house wording.

  9. Domain allowlist, reCAPTCHA and GTM

    An embed key only renders on the domains you list. reCAPTCHA v2 or v3 can gate submission, with the secret key held server-side, and a Google Tag Manager container id can be attached for measurement.

One of these you can have today.

Microsoft Bookings for WordPress is on sale in the store now and does this job inside WordPress. The web component is in pre-launch — if that is the delivery you need, tell us and we will come back to you.

Reaching your tenant

Two ways for us to reach Graph. One of them never lets us.

Every tenant runs in one mode or the other, and the choice belongs to your IT rather than to us. It is the reason this works inside organisations that will not delegate Graph access to a vendor.

managed

We hold the credentials

WPIntegrate runs the client-credentials flow for your tenant. Your administrator grants consent once and is not asked again.

proxy

You hold the credentials

You supply a base URL and an API key for your own gateway. We store that key encrypted at rest and never hold a Graph token at all.

Questions

The things people ask before they buy.

If yours is not here, ask it — the answers come back from a person rather than a form.

Do we need a Microsoft Bookings licence?

Yes. This component displays and writes to an existing Microsoft Bookings business, so Bookings has to be available in your Microsoft 365 tenant. If you want appointments taken directly against an Outlook calendar with no Bookings licence involved, use the Outlook Booking component instead.

Where do the appointments end up?

In Microsoft Bookings, as ordinary appointments. Staff see them in Outlook and customers get Microsoft’s own confirmation mail, exactly as they would if the booking had been made on the Bookings page.

Does WPIntegrate hold our Microsoft credentials?

Only if you choose managed mode, where your IT administrator grants one-time admin consent to our Azure application. In proxy mode you supply your own base URL and API key, and Graph traffic never leaves your perimeter.

Can the widget match our brand?

Yes. Colours, border radius, font family, type scale and per-tier font sizes are per-instance settings, with custom CSS for anything beyond them. The component ships neutral defaults and carries no WPIntegrate branding.

Can we put it behind a button instead of on the page?

Yes. The button embed opens the flow in a modal and the floating embed pins a launcher to a corner of the page. Both use the same configuration as the inline version, including the modal width.