Title: yAppointment
Author: yappointment
Published: <strong>September 30, 2026</strong>
Last modified: September 30, 2026

---

Search plugins

![](https://ps.w.org/yappointment/assets/banner-772x250.png?rev=3720340)

![](https://ps.w.org/yappointment/assets/icon-256x256.png?rev=3720340)

# yAppointment

 By [yappointment](https://profiles.wordpress.org/yappointment/)

[Download](https://downloads.wordpress.org/plugin/yappointment.2.4.0.zip)

 * [Details](https://frp.wordpress.org/plugins/yappointment/#description)
 * [Reviews](https://frp.wordpress.org/plugins/yappointment/#reviews)
 *  [Installation](https://frp.wordpress.org/plugins/yappointment/#installation)
 * [Development](https://frp.wordpress.org/plugins/yappointment/#developers)

 [Support](https://wordpress.org/support/plugin/yappointment/)

## Description

**Your clients book while you work.** yAppointment puts your booking page on your
own WordPress site. A client picks a treatment, a team member and a free time, and
the appointment lands in your calendar, day or night, without a phone call.

Made for salons, barbers, beauty and nail studios, clinics, therapists, coaches 
and every business that works by appointment.

#### No time to set it up? We build it for you

Click **Build it for me** on the plugin’s Get Started page and send us the link 
of your website (or your Facebook, Instagram, Planity or Treatwell page). We set
up your yAppointment account from it: your services, prices and opening hours. You
only check it and connect the site.

#### What your clients see

 * Your services with photos, descriptions, prices and durations
 * Your team: clients can choose who they book with
 * Only the times that are really free, so there is no double booking
 * Reviews written by clients after their visit
 * The booking page in their own language (27 languages, it follows your site’s 
   language)
 * Works on phones, tablets and computers

#### What you get

 * Every online booking in your yAppointment calendar, next to your walk-ins and
   phone bookings
 * Your services, team and opening hours managed in one place
 * No commission on bookings
 * A 14-day free trial, no credit card needed

#### Run a WooCommerce shop? Keep it in sync (optional)

If your site sells products with WooCommerce, you can switch on **Webshop sync**:
your products and stock stay in step with yAppointment, and every paid webshop order
appears in yAppointment at once, where you can confirm the payment, ship, add a 
tracking number or refund it without opening WordPress. What you change there also
happens in WooCommerce, through your shop’s own settings and payment methods. It
is off until you set it up, works with High-Performance Order Storage, and does 
nothing on a site without WooCommerce.

#### Put it on your site in three ways

 * **A booking page:** add the yAppointment Booking block (or the `[yappointment]`
   shortcode) to any page
 * **A floating “Book Now” button** on every page of your site, which opens the 
   booking in a popup
 * **A button for one treatment:** the booking opens with that service already selected,
   great for a price list or a promotion page

The button takes your colours: pick them yourself, or click **Use my yAppointment
colours**.

#### Connect in one click

Click **Connect with yAppointment**, sign in to yAppointment in the new tab and 
confirm your site. You come back to WordPress connected. There is nothing to copy
and you never type your yAppointment password into WordPress. New to yAppointment?**
Create my free account** opens the sign-up with your e-mail address already filled
in.

#### Good to know

The plugin is free. It shows your yAppointment booking page on your site, so you
need a yAppointment account (the plugin opens the sign-up for you). yAppointment
is a subscription service after the free trial; the prices are at https://yappointment.
com/pricing. Your site must be served over HTTPS.

### External services

This plugin is a client for yAppointment (https://yappointment.com), a SaaS online
booking platform operated by yAppointment. It does not work without a yAppointment
account: your booking portal, services and bookings live on yAppointment, and the
plugin shows them on your site. Nothing is sent to yAppointment until an administrator
clicks one of the buttons on **Get Started**. It connects to three yAppointment 
hosts:

 * **yAppointment admin app** (`https://portal.yappointment.com`, or the yAppointment
   Admin URL set under General Settings > Advanced). Where the business signs in
   to connect the site, creates an account, or asks for a setup.
    - When: only when an administrator clicks **Connect with yAppointment** / **
      Reconnect**, **Create my free account** or **Build it for me** on the Get 
      Started page. The administrator’s browser opens it in a new tab; WordPress
      itself sends nothing.
    - What is sent (in the address of the new tab): this site’s address, the address
      yAppointment returns to after the confirmation, and a one-time random value
      that protects the return. **Create my free account** and **Build it for me**
      also send the clicking administrator’s e-mail address (to prefill the form;
      the button says so) and `utm_source=wordpress-plugin`.
 * **yAppointment booking portal** (`https://app.yappointment.com`, or the Portal
   Base URL set under General Settings > Advanced). Used to show your booking portal
   on your site.
    - When: only while the site is connected, every time a visitor views a page 
      that contains the `[yappointment]` shortcode, the yAppointment block, or (
      when enabled) the floating button, and when a visitor opens the booking popup.
      The visitor’s browser loads the portal in an iframe. Showing a page never 
      makes WordPress itself call yAppointment.
    - What is sent: the portal address contains your company ID, the portal page,
      the language and, if set, a service ID. As with any embedded page, the visitor’s
      browser also sends its IP address, user agent and the referring page address.
      Everything the visitor enters inside the embedded portal (for example name,
      e-mail address, phone number and the booking details) is sent directly to 
      yAppointment to create and manage the booking.
 * **yAppointment API** (`https://api.yappointment.com`, or the API URL set under
   General Settings > Advanced). Used to finish the connection, to check it, and
   to read public information about your business. Always from your WordPress server,
   never from a visitor’s browser, and never while a visitor views a page.
    - When the Connect tab returns to WordPress: `POST /api/v1/wordpress/exchange`
      sends the one-time code from the return address and this site’s address, and
      receives the site key and your business’s ID, short name and name.
    - When you connect manually (Advanced) and whenever an administrator opens one
      of the plugin’s admin pages, at most once an hour: `GET /api/v1/public/companies/{
      company ID}` with the site key checks that the connection is still valid (
      and reads your business name). When you click “Use my yAppointment colours”
      the same request reads your booking portal’s colours.
    - When the block editor loads the Service picker: `GET /api/v1/public/companies/{
      company ID}/services` with the site key and the editor’s language (for the
      service names).
    - When you click **Disconnect**: `POST /api/v1/wordpress/disconnect` with the
      site key, so yAppointment revokes it.
    - What is sent: the items listed above and the site key (in the `Authorization`
      header). No data about your visitors is sent, and no data about your WordPress
      users except the e-mail address described above, which goes only in the address
      of the tab an administrator opens.
 * **The same yAppointment API, for the optional Webshop sync (WooCommerce only).**
   Nothing below is sent unless WooCommerce is active, the site is connected and
   an administrator has turned **Webshop sync** on and finished the setup in yAppointment(
   which opens in a new tab). Always from your WordPress server, never from a visitor’s
   browser. Requests after the setup are signed with a secret that only your site
   and yAppointment know (HMAC-SHA256; the secret is kept in your database and is
   never put in an address).
    - Turning it on: `POST /api/integration/bridge/toggle` sends the switch (on 
      or off) with the site key. If the setup has not been done, yAppointment answers
      with the address of its setup page, which the plugin opens in a new tab.
    - When the setup returns to WordPress: `POST /api/v1/wordpress/sync-exchange`
      sends the one-time code from the return address and receives the sync secret.
    - When products, stock or orders change (usually within seconds; retried with
      a growing pause when yAppointment cannot be reached; after every setup and
      every switch-on the whole shop is sent again): `POST /api/integration/bridge/
      events`.
    - Products: name, short description, SKU, barcode, price, currency and tax settings,
      status, type, stock level, main image address, and the yAppointment id stored
      on the product.
    - Stock changes: the product, the amount added or removed and the reason.
    - Paid orders (WooCommerce’s own order data): the customer’s name, e-mail address,
      phone number, billing and shipping addresses, the items bought, prices, taxes,
      totals, payment method, status and order notes; refunds with amounts and items.
    - Unpaid, failed and abandoned-checkout orders are not sent.
    - Every 5 minutes while the sync is set up, and when an administrator opens 
      the plugin’s Dashboard page (at most once a minute): `POST /api/integration/
      bridge/status` reports the WooCommerce version, the plugin version, whether
      the switch is on, how many changes wait to be sent and the last error message,
      and receives the state of the sync. Every 5 minutes (only while the switch
      is on) and on **Sync now**: `POST /api/integration/bridge/changes` asks for
      changes made in yAppointment.
    - yAppointment calls your site: `POST /wp-json/yappointment/v1/shop/command`
      on your own site address, signed with the same secret and accepted only when
      the signature, the timestamp (5 minutes) and a one-time value are valid. It
      creates or updates a product, changes stock, or changes an order (status, 
      note and tracking number, payment received, refund) with WooCommerce’s own
      functions.
    - Turning Webshop sync off (or disconnecting the site) stops all of it and removes
      the secret from your site. The `_yappointment_*` values kept on products and
      orders (the yAppointment id and a tracking number) stay so that turning it
      on again links to the same products instead of creating copies.
    - yAppointment processes this data on your behalf under its Terms of Service
      and Privacy Policy (links below).

yAppointment Terms of Service: https://yappointment.com/terms
 yAppointment Privacy
Policy: https://yappointment.com/privacy

## Screenshots

[⌊Get Started: connect with yAppointment in one click, create a free account, or
let us build it for you.⌉⌊Get Started: connect with yAppointment in one click, create
a free account, or let us build it for you.⌉[

Get Started: connect with yAppointment in one click, create a free account, or let
us build it for you.

[⌊Your booking page on your own site: services with photos, prices, durations and
reviews.⌉⌊Your booking page on your own site: services with photos, prices, durations
and reviews.⌉[

Your booking page on your own site: services with photos, prices, durations and 
reviews.

[⌊The floating "Book Now" button opens the booking in a popup on any page.⌉⌊The 
floating "Book Now" button opens the booking in a popup on any page.⌉[

The floating “Book Now” button opens the booking in a popup on any page.

[⌊The yAppointment Booking block in the editor: pick a service and the booking opens
with it selected.⌉⌊The yAppointment Booking block in the editor: pick a service 
and the booking opens with it selected.⌉[

The yAppointment Booking block in the editor: pick a service and the booking opens
with it selected.

[⌊Button Styles: the button in your own colours, shape and size.⌉⌊Button Styles:
the button in your own colours, shape and size.⌉[

Button Styles: the button in your own colours, shape and size.

## Blocks

This plugin provides 1 block.

 *   yAppointment Booking

## Installation

 1. In WordPress go to **Plugins > Add New**, search for “yAppointment”, then click**
    Install Now** and **Activate** (or upload the zip under **Plugins > Add New > Upload
    Plugin**)
 2. Go to **yAppointment > Get Started**
 3. Click **Connect with yAppointment** if you have an account, **Create my free account**
    if you are new, or **Build it for me** if you want us to set it up. yAppointment
    opens in a new tab: sign in, confirm this site, and the tab returns to WordPress
    connected
 4. Add the **yAppointment Booking** block to a page, or switch on the floating button
 5. Optional, WooCommerce shops only: on **yAppointment > Dashboard** turn on **Webshop
    sync**. yAppointment opens in a new tab for a short setup (stock location, invoicing)
    and sends you back

## FAQ

### Do I need a yAppointment account?

Yes. The plugin shows your yAppointment booking page on your site; your services,
calendar and bookings live in yAppointment. Click **Create my free account** on **
Get Started** to start a 14-day free trial (no credit card), or **Build it for me**
to have us set it up from your website.

### What does “Build it for me” do?

It opens yAppointment in a new tab with your e-mail address and your site’s address
filled in. You send us the link of your website or social page, and we set up your
account from it: services, prices and opening hours. When your account is ready,
come back to **Get Started** and click **Connect with yAppointment**.

### How do I connect my business?

Under **yAppointment > Get Started**, click **Connect with yAppointment**. yAppointment
opens in a new tab; sign in, choose the business if you have several, and confirm
this site. The tab comes back to WordPress and shows “Connected to “. Behind the
scenes yAppointment gives this site its own site key; you never have to copy it.

### Can I connect without the new tab?

Yes. In yAppointment open **Company > Integrations > WordPress** and generate a 
key for your site. In WordPress open **Get Started > Advanced: connect manually 
with a site key**, enter your company ID (or the link of your booking page) and 
the key, and click **Test and connect**.

### How do I disconnect?

Click **Disconnect** on **Get Started**: the site key is revoked in yAppointment
and removed from WordPress. You can also disconnect the site in yAppointment (**
Company > Integrations > WordPress**); the plugin then shows “Disconnected in yAppointment”
on its pages with a **Reconnect** button.

### Why does my booking page show nothing?

The booking page, the block and the floating button are shown only while the site
is connected with a valid site key. When the site is not connected, or the connection
was removed in yAppointment, visitors see nothing; logged-in administrators see 
a short “yAppointment: not connected” note in its place. A shortcode or block can
only show the business this site is connected to. Your site must also be served 
over HTTPS (see below).

### Does the plugin need my yAppointment password?

No. You sign in on yAppointment’s own site, never in WordPress. WordPress stores
only the site key, which lets it read what your public booking page already shows(
business name, services, colours). It cannot read bookings or customers, and you
can revoke it at any time.

### Can the booking page open with a service already selected?

Yes. In the block, pick the service from the **Service** list. With the shortcode,
add its ID: `[yappointment service="SERVICE_ID"]`. The booking page opens with that
service selected.

### How do I match the button to my brand?

Under **yAppointment > Button Styles**, pick the background, text and hover colours,
the shape and the size, and click **Save Changes**. **Use my yAppointment colours**
fills the colour fields with your booking page’s colours.

### My booking page won’t load / shows blank

Your WordPress site must be served over HTTPS. The yAppointment booking page can
be embedded in any HTTPS page and needs no configuration on your side; on a plain-
HTTP site the browser refuses the embed and it stays empty (the plugin’s settings
page warns about this). Also check that **yAppointment > Get Started** shows “Connected
to “.

### Can I put the booking on several pages?

Yes. Use the block or the shortcode on as many pages and posts as you like, even
several on one page. The booking page adjusts its height to its content by itself(**
Auto Resize** in the settings, on by default).

### Which shortcodes are there?

[yappointment] shows your booking page in the page. Its options:

 * `company_id`: optional. Your connected business is used by default; only the 
   business this site is connected to can be shown
 * `page`: booking, services, events, products, locations, employees, reviews, news,
   login, register
 * `height`: initial height in pixels (default: 700)
 * `width`: width (100%, 800px, 80vw)
 * `lang`: ar, bg, cnr, cs, da, de, el, en, es, et, fi, fr, hr, hu, it, lt, lv, 
   nb, nl, pl, pt, ro, sk, sl, sv, tr, uk (default: the language of the current 
   page; omitted when the booking page does not support it)
 * `style`: inline (default) or popup
 * `class`: an extra CSS class for the container
 * `service`: a service ID; opens the booking page with this service selected
 * [yappointment_button] adds a button that opens the booking in a popup. Its options:
 * `company_id`: optional, as above
 * `page`: which page to open in the popup (default: booking)
 * `text`: the button label (default: “Book Now”)
 * `lang`: same values as above
 * `class`: an extra CSS class for the button
 * `color`: the button colour in hex format (default: #4F46E5)
 * `service`: a service ID; opens the booking page with this service selected

### Is the booking popup accessible?

Yes. It keeps the keyboard focus inside while it is open, closes with the Escape
key, and carries the ARIA roles screen readers need.

### What does my site need?

WordPress 6.0 or newer, PHP 7.4 or newer, and HTTPS. A yAppointment account is required:
the plugin shows your yAppointment booking page on your site.

### How does the Webshop sync work?

It needs WooCommerce and a connected site. On **yAppointment > Dashboard** turn 
on **Webshop sync**: yAppointment opens in a new tab for a short setup, then sends
you back and the plugin starts. From then on new and changed products, stock levels
and paid orders are sent to yAppointment within seconds (through WooCommerce’s own
Action Scheduler queue, with retries), and what you do in yAppointment (edit a product,
confirm a payment, ship, refund) is applied to WooCommerce with its own functions.**
Sync now** retries what is waiting and asks yAppointment for changes; the card also
shows how many changes wait to be sent and the last problem. Turn it off there or
in yAppointment at any time.

### Which products and orders are synced?

Simple products and variations (each variation is its own product in yAppointment).
Other product types (grouped, external, bundles) are reported to yAppointment with
their type and shown there as “not synced”, never silently dropped. Orders are sent
once they are paid or wait for an offline payment (on hold, processing, completed,
and later cancelled or refunded); unpaid, failed and abandoned-checkout orders are
not sent. Nothing bought (items, quantities, prices, customer) is ever changed from
yAppointment.

### Does it work with High-Performance Order Storage?

Yes. The plugin declares compatibility and reads and writes orders only through 
WooCommerce’s own order functions.

### Is the webshop data sent anywhere before I turn it on?

No. Until you turn Webshop sync on and finish the setup in yAppointment, no product,
stock or order data leaves your site. See “External services” below for exactly 
what is sent afterwards.

### Where can I get help?

Ask in this plugin’s support forum on WordPress.org, or contact yAppointment at 
https://yappointment.com/contact.

### Is it GDPR compliant?

The plugin does not collect visitor data on your site. Your yAppointment account’s
data processing policies apply to bookings made through the embedded booking page.
If you turn on the optional Webshop sync, the personal data of your shop’s customers(
name, e-mail address, phone number, addresses, what they bought) goes to yAppointment,
which processes it on your behalf; mention it in your privacy policy (the plugin
adds suggested text under Settings > Privacy).

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“yAppointment” is open source software. The following people have contributed to
this plugin.

Contributors

 *   [ yappointment ](https://profiles.wordpress.org/yappointment/)

[Translate “yAppointment” into your language.](https://translate.wordpress.org/projects/wp-plugins/yappointment)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/yappointment/), check
out the [SVN repository](https://plugins.svn.wordpress.org/yappointment/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/yappointment/) by
[RSS](https://plugins.trac.wordpress.org/log/yappointment/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 2.4.0

 * New: Webshop sync for WooCommerce (optional, off until you set it up). Products,
   stock and paid orders are sent to yAppointment through WooCommerce’s Action Scheduler
   queue (signed, batched, retried), and changes made in yAppointment (products,
   stock, order status, notes and tracking numbers, payments, refunds) are applied
   to WooCommerce with its own functions, so your shop’s settings, tax and payment
   methods keep applying. A switch, the state, “Sync now”, the queue and the last
   problem are on yAppointment > Dashboard.
 * New: compatible with High-Performance Order Storage; a site without WooCommerce
   is unaffected.
 * New: suggested privacy policy text under Settings > Privacy.
 * Change: the “External services” section describes the webshop sync’s requests.

#### 2.3.3

 * Change: the “almost ready” notice after activation shows only on the Plugins 
   screen and the plugin’s own pages, not across the whole admin. It still disappears
   once the site is connected or the notice is dismissed.
 * Change: translations come from translate.wordpress.org; the plugin no longer 
   bundles its own translation files.

#### 2.3.2

 * Readme: a plain-words description for salon and clinic owners, the shortcode 
   options in the FAQ, and new screenshots.

#### 2.3.1

 * Fix: Dialogs in an embedded booking page now open in the visible part of the 
   screen on phones.

#### 2.3.0

 * New: Connect with yAppointment. Sign in to yAppointment in a new tab, confirm
   this site, and come back connected; the site receives its own site key and nothing
   has to be copied.
 * New: “Create my free account” (sign-up with your e-mail address and site prefilled,
   connected when the account is ready) and “Build it for me” (the yAppointment 
   team sets up your account from your website) on Get Started.
 * New: Disconnect on Get Started revokes the site key in yAppointment. A connection
   removed in yAppointment shows “Disconnected in yAppointment” with a Reconnect
   button, and the block’s Service picker explains why it is empty.
 * New: Advanced manual connection with a company ID and a site key generated in
   yAppointment (Company > Integrations > WordPress).
 * Change: the booking page, the block and the floating button are shown only while
   the site is connected with a valid site key, and only for the connected business.
   Otherwise visitors see nothing and administrators see a short “not connected”
   note. The key is re-checked at most once an hour when an administrator opens 
   the plugin’s pages, never on a visitor’s page view.
 * Change: the plugin reads your business and services through the yAppointment 
   API with the site key; the shared public client token is no longer used.
 * New: yAppointment Admin URL under General Settings > Advanced (for development
   installations).
 * Sites connected by link in 2.2.x need to connect once more: the Get Started notice
   appears again after the update.

#### 2.2.1

 * Fix: the dashboard’s troubleshooting and requirements now say what an embed really
   needs, a site served over HTTPS, instead of an outdated server header instruction.
 * Fix: the booking block in the editor names your connected business instead of“
   No company ID set” when the block uses the business from the plugin settings,
   and its calendar icon shows again.
 * Readme: screenshots, an HTTPS requirement in the FAQ, where to create an account
   and where to get help.

#### 2.2.0

 * New: connect by link. Paste the link of your booking page (or your company ID)
   in General Settings; the plugin checks it with yAppointment and shows “Connected:“.
   An unknown business is rejected and the previous value is kept; if yAppointment
   cannot be reached, the value is saved with a warning.
 * New: Get Started screen and a first-activation notice: connect your business,
   then copy the shortcode or switch on the floating button.
 * New: “Use my yAppointment colours” on the Button Styles page fills the button
   colours from your booking portal (you still click Save).
 * New: `service` attribute for `[yappointment]` and `[yappointment_button]`, and
   a Service picker in the block: the booking page opens with that service selected.
 * New: API URL setting under General Settings > Advanced (with the Portal Base 
   URL), for self-hosted and development installations.

#### 2.1.0

 * Fix: the default Portal Base URL is now https://app.yappointment.com (the customer
   portal). Sites still on the old default (https://portal.yappointment.com, the
   admin app) are moved automatically on update.
 * The portal language follows the current page’s language (WPML/Polylang aware)
   across all 27 portal languages; when the page language is not supported, no language
   is passed and the portal chooses one.
 * Default Language setting and block language select list every portal language.
 * Portal Base URL accepts http:// for localhost, 127.0.0.1, [::1] and *.localhost(
   local development); everything else must be https://. Query strings and fragments
   are rejected.
 * Fix: the floating button and popup-style embeds open the booking popup again.

#### 1.0.0

 * Initial release
 * Inline embed shortcode `[yappointment]`
 * Popup button shortcode `[yappointment_button]`
 * Gutenberg block support
 * Auto-resize via postMessage
 * Accessible popup modal with focus trap
 * Hungarian and English translations

## Meta

 *  Version **2.4.0**
 *  Last updated **5 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/yappointment/)
 * Tags
 * [appointment](https://frp.wordpress.org/plugins/tags/appointment/)[booking](https://frp.wordpress.org/plugins/tags/booking/)
   [online booking](https://frp.wordpress.org/plugins/tags/online-booking/)[salon](https://frp.wordpress.org/plugins/tags/salon/)
   [scheduling](https://frp.wordpress.org/plugins/tags/scheduling/)
 *  [Advanced View](https://frp.wordpress.org/plugins/yappointment/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/yappointment/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/yappointment/reviews/)

## Contributors

 *   [ yappointment ](https://profiles.wordpress.org/yappointment/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/yappointment/)