Directory / plugin

yAppointment – Appointment Booking for Salons, Barbers & Clinics

v2.4.3 · by yappointment

Online appointment booking for salons, barbers, clinics and studios on your WordPress site: clients pick a service, a team member and a free time.

About this plugin

Your clients book while you work. yAppointment is an online appointment booking plugin: it 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, hairdressers, beauty and nail studios, clinics, therapists, personal trainers, coaches, consultants and every business that works by appointment.

The plugin is free. The bookings run on your yAppointment account, which starts with a 14-day free trial (no credit card); the prices after the trial are at yappointment.com/pricing.

How it works

  1. Install the plugin and click Connect with yAppointment (or Create my free account, or Build it for me)
  2. Add the yAppointment Booking block, the [yappointment] shortcode or the floating “Book Now” button to your site
  3. Clients book online; every appointment appears in your yAppointment calendar

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

Besides the booking itself, the shortcode and the block can show your locations, team, events, products, reviews and news from the same yAppointment account.

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 yappointment.com/pricing. Your site must be served over HTTPS.

For web designers

Do you build WordPress sites for small businesses? Join the yAppointment partner program: send us a client’s website address and we set up online booking for them, free. You earn 30% of their subscription for up to 24 months, as long as they keep paying. Details: https://partner.yappointment.com/?ref=wporg-plugin

External services

This plugin is a client for yAppointment (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 when an administrator opens the Get Started page, and every 15 minutes in the background (WP-Cron), never on a visitor’s page view: 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: yappointment.com/terms
yAppointment Privacy Policy: yappointment.com/privacy

Plugin tags