Platforms

WordPress plugin

Install the BookingsXP WordPress plugin, then add your Microsoft Bookings widget with a block or the [bookingsxp] shortcode, or a floating button site-wide.

The BookingsXP plugin adds a block, a [bookingsxp] shortcode and a settings page to WordPress. It outputs the same <bookingsxp-widget> element and script as a hand-written embed, and loads the script only on pages that show a widget.

Requirements: WordPress 6.0 or later, PHP 7.4 or later.

Install#

  1. Download bookingsxp-wordpress.zip.
  2. In WordPress, go to Plugins → Add New → Upload Plugin, choose the zip and press Install Now.
  3. Press Activate.

To install by hand, unzip it and upload the bookingsxp folder to /wp-content/plugins/, then activate it under Plugins.

The block#

In the block editor, add BookingsXP booking widget (search for "booking" or "Microsoft Bookings"). In the sidebar, set:

  • Widget ID (w_…) from your BookingsXP account, or
  • Microsoft Bookings URL for link-only mode, no account,
  • Display: inline, popup button or floating button (bottom-right),
  • Button text for popup and floating.

The block supports wide and full alignment. If you leave both the ID and the URL empty, it uses the defaults from Settings → BookingsXP. For template, theme, colour and the other options, use a saved widget and set them in the dashboard, or use the shortcode.

The shortcode#

Use the shortcode in the classic editor, widgets, and page builders that do not support blocks.

Text
[bookingsxp widget="w_8fk2m1qz"]
Text
[bookingsxp url="https://outlook.office.com/book/Contoso@contoso.com/"]
Text
[bookingsxp widget="w_8fk2m1qz" mode="popup" button_text="Book a call" accent="#0f766e"]

Shortcode attributes#

AttributeValuesDefaultNotes
widgetWidget ID, w_…Settings defaultWins over url.
urlPublic Microsoft Bookings URL, https://Settings defaultLink-only mode.
modeinline | popup | floatinginline
button_textTextBook a timePopup and floating only.
templateclassic | compact | minimal | split | week | stepper | cardsSaved templatePro templates need a Pro or Business widget.
themelight | dark | autoSaved theme
accentHex colour, for example #0f766eSaved accent
serviceService ID or the code after /s/ in a Bookings service linknonePreselects a service.
redirect_urlURLSaved redirectThank-you page after booking. {booking_id}, {service} and {start} are replaced.
heightPixels, 200 to 4000480Initial height before the widget sizes itself.

Attributes use underscores (button_text, redirect_url) because WordPress shortcodes do. Other embed options, such as locale, staff and prefill, are not available in the shortcode. For those, write the HTML embed, script tag included, in a Custom HTML block.

Values are checked before output: unknown modes, templates and themes are dropped, and accent must be a hex colour.

Without JavaScript, a saved widget falls back to a plain iframe and a link-only widget to a link to your Bookings page.

Settings → BookingsXP#

SettingWhat it does
Default widget IDUsed by blocks and shortcodes that set neither widget nor url.
Default Microsoft Bookings URLThe same, for link-only mode. Ignored when a default widget ID is set.
Load on every pageLoads the script on every page and adds a floating "Book" button site-wide, using the default widget or URL. Off by default, so the script loads only where a widget is shown.
Floating button textLabel for that site-wide button. Default "Book a time".
Script base URLLeave as https://bookingsxp.com. Change only if you self-host BookingsXP; the script is loaded from <base>/embed/v1.js.

Tracking in WordPress#

The plugin does not add Google Tag Manager, GA4, Google Ads, Meta or LinkedIn tags. Keep using your existing plugin or theme for those; BookingsXP sends events to them when they are on the page. Add the tracking IDs to your saved widget in the dashboard. See GTM, GA4 and ad conversions.

Caching and optimisation plugins#

The output is a plain HTML element and one async script, so page caches and optimisation plugins work without exceptions. If an optimisation plugin combines or delays scripts, exclude bookingsxp.com/embed/v1.js so the widget appears without waiting for a user interaction.

Uninstalling#

Deactivate and delete the plugin under Plugins. Deleting it removes its settings from the database. Bookings are unaffected: they live in Microsoft Bookings, and anything stored in BookingsXP stays in your dashboard until you delete it.

Edit or question? hello@bookingsxp.com