Integrate with WordPress

With the WordPress plugin you can easily connect your Easy!Appointments installation with WordPress and display your booking page directly within your WordPress posts and pages.

WordPress logo

Your WordPress site, booking its own appointments

Visitors choose a service, a provider and a time without leaving your pages, and the confirmation email reaches both the customer and the provider on its own. No message thread to agree a time in, and no second place to keep your calendar.

The Easy!Appointments booking page on the date and time step, as it appears inside a WordPress page

How the plugin works

A bridge, not a second scheduler
The plugin creates a bridge between the two systems. It stores the URL of the Easy!Appointments installation you already run and renders that booking page in place, so your services, providers and working plans stay in one database.
The booking form in an iframe
The block, the Elementor widget and the shortcode all build an iframe that displays the Easy!Appointments booking form. The wizard runs from your Easy!Appointments server while the header, navigation and footer around it stay entirely yours.
Nothing to keep in sync
Because the page is loaded from your installation rather than copied into WordPress, a service you rename or a working plan you change is live on the next page load. There is no import step and no second copy of your data.
Tuned page by page
Optional width and height settings size the frame, and provider and service settings preselect a record, so a page about one treatment can open the wizard already set to it.
See the booking page live

Setting up the WordPress plugin

A few steps, all in WordPress's own admin area. The heavier requirements belong to Easy!Appointments itself - get that running first and the WordPress side is a short job.

What you need in place

No installation yet? Easy!Appointments installs like any other PHP application. Read the installation guide.

WordPress
Version 5.0 or higher, per the WordPress.org plugin listing.
Easy!Appointments
A working installation, reachable in a browser. The add-on connects to one; it does not contain one.
Easy!Appointments server
Apache or Nginx, PHP 8.2 or newer and a MySQL database, with a writable "storage" directory.
Same domain?
Not required. With Easy!Appointments 1.6.1 or newer it can run on any domain or host.

Version numbers move with every release. Treat the WordPress.org listing as the authority for the current version and the WordPress releases it has been tested against.

Installing the plugin

  1. Install the plugin

    The plugin is in the official plugin repository, so you can install it straight from your Plugins dashboard. If you would rather do it by hand, upload the plugin files into wp-content/plugins yourself.

  2. Activate it

    Activate Easy!Appointments on the Plugins screen. A new Easy!Appointments item appears in the admin menu.

  3. Connect your installation

    Open it, paste the URL of your Easy!Appointments installation and click Connect.

  4. Embed and test

    Add the Easy!Appointments block (or the Elementor widget, or the [easyappointments] shortcode) to any post or page, publish it, then walk through a real booking to confirm the appointment lands in your Easy!Appointments calendar.

Three ways to place the booking form

The plugin ships an Easy!Appointments block for the block editor, an Easy!Appointments widget for Elementor, and the [easyappointments] shortcode for everything else. All three render the same iframe and take the same options: width, height, provider and service.

[easyappointments]
[easyappointments width="100%" height="500px"]
[easyappointments provider="2" service="1"]
  • Block editor: click +, search "Easy!Appointments" and drop the block in. Width, height, provider and service are in the settings panel on the right.
  • Elementor: search "Easy!Appointments" in the widget panel and drag it onto the canvas. The same options are normal Elementor controls.
  • Anything else - classic editor, WPBakery, Divi, a widget area: use the shortcode below, wherever shortcodes work.
  • Provider and service take record IDs. Read them in the Easy!Appointments backend, on the Users and Services pages, from each record's dedicated link.
  • width, height and style are all optional. The frame is 100% wide and at least 1000px tall unless you change it.
AttributeExampleWhat it does
width 100% Optional. Width of the iframe the plugin renders.
height 500px Optional. Defaults to 1000px, and acts as the minimum height.
style border: 5px solid #1A865F; Optional. Inline CSS on the iframe.
provider 2 Preselects a provider by record ID.
service 1 Preselects a service by record ID.

The WordPress.org listing states the WordPress versions the current release is tested against. WordPress.org Plugins

Questions people ask first

Yes. The plugin is a bridge between two systems: it displays the booking page of an Easy!Appointments installation you already run. Work through the installation guide first, then connect the two.
No. With Easy!Appointments 1.6.1 or newer the booking page can be embedded from any domain, with nothing to configure.
In Easy!Appointments, exactly as if the visitor had opened your booking page directly. WordPress keeps no copy, so the calendar, the customer records and the notification emails are all handled by your Easy!Appointments installation.
Yes. The provider and service options on the block, the Elementor widget or the shortcode preselect a record by its ID, which you can read from the Users and Services pages of the Easy!Appointments backend.
When Easy!Appointments runs on the same domain as WordPress, the frame grows to fit the wizard by itself. On another domain the plugin cannot measure it, so the frame stays at its configured height (1000px by default, at least 1400px on phones) - set a taller height on the block, the Elementor widget or the shortcode.
The WordPress.org listing states version 5.0 or higher, and it is updated with each release. Check it there rather than trusting a number printed on this page.

If something does not line up

Most integration trouble is really Easy!Appointments configuration - a base URL, a working plan, a server setting. These are the places to look.

Documentation & FAQ

Installation, configuration and the settings reference, plus the known snags: a wizard showing no hours, a subdomain install, a timezone warning.

Browse the docs Read the FAQ

Support

Ask the community, report a bug, or buy a session if you would rather someone else did the setup.

Support overview Ask on Discord Report an issue Book technical support

WordPress write-ups

Release notes and walkthroughs for this plugin, in the order you probably want them.

How to set up the WordPress plugin Connecting WordPress, step by step The Easy!Appointments ecosystem

Need it to work differently?

Add a feature Easy!Appointments does not have, or change how an existing one works, to fit the way you schedule.