Title: Yatoon Booking System
Author: yatoon
Published: <strong>March 26, 2026</strong>
Last modified: April 1, 2026

---

Search plugins

![](https://ps.w.org/yatoon-booking-system/assets/banner-772x250.png?rev=3492143)

![](https://ps.w.org/yatoon-booking-system/assets/icon-256x256.png?rev=3492135)

# Yatoon Booking System

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

[Download](https://downloads.wordpress.org/plugin/yatoon-booking-system.zip)

 * [Details](https://wordpress.org/plugins/yatoon-booking-system/#description)
 * [Reviews](https://wordpress.org/plugins/yatoon-booking-system/#reviews)
 *  [Installation](https://wordpress.org/plugins/yatoon-booking-system/#installation)
 * [Development](https://wordpress.org/plugins/yatoon-booking-system/#developers)

 [Support](https://wordpress.org/support/plugin/yatoon-booking-system/)

## Description

**Yatoon Booking System** is a professional appointment booking plugin built for
salons, nail studios, spas, and any service business that takes appointments.

Customers book online through a clean, mobile-friendly multi-step form embedded 
on any page. You manage everything from the WordPress dashboard — no monthly fees,
no third-party accounts needed in the free version.

#### ✅ Free Features

**Customer-Facing Booking Form**
 * Beautiful multi-step booking flow: Service  
Options  Staff  Date & Time  Details * Multi-service booking — customers can add
multiple services in one appointment * Guest booking — book for multiple people (
e.g. couples, friends) in one session * Smart staff assignment — “Any available 
staff” or pick a specific person * Real-time time slot availability * Mobile-friendly
with floating cart bar * Customer portal — view, manage, and cancel upcoming appointments

**Service & Staff Management**
 * Unlimited services with categories, pricing, duration,
descriptions, and photos * Add-on options per service (e.g. nail art, gel top coat)*
Staff profiles with photos, bios, and service assignments * Individual staff schedules
and working hours

**Booking Management**
 * Full booking calendar and list view in the dashboard *
Manual booking creation and editing by admin * Booking status management (confirmed,
pending, cancelled, completed) * Customer contact details and appointment notes *
Waitlist management for fully booked time slots * Customer blacklist (block repeat
no-shows)

**Notifications & Communication**
 * Automatic email confirmations to customers *
Customizable email subject and template * Contact message inbox (customers can message
you from the booking form)

**Business Settings**
 * Business hours and closed days configuration * Booking 
lead time (minimum advance notice required) * Maximum future booking window * Latest
appointment end-time cutoff * Anti-abuse protection (limit bookings per phone number)

#### 🔒 Pro Features (Upgrade to unlock)

 * **Square POS sync** — two-way sync of services, staff, and bookings with your
   Square account
 * **Vagaro sync** — import appointments from Vagaro
 * **SMS Notifications** — automated booking confirmations and reminders via Twilio
 * **Google Calendar sync** — appointments appear on your Google Calendar automatically
 * **Brand & Colors** — customize logo, colors, fonts, button labels, and border
   radius to match your brand
 * **Advanced staff management** — add, edit, and manage staff directly from WordPress(
   no Square required)
 * **Priority support**

[Upgrade to Pro ](https://yatoon.com/pricing)

#### How It Works

 1. Install and activate the plugin
 2. Add your services and staff in the WordPress dashboard
 3. Set your business hours
 4. Add the shortcode `[ybs_booking]` to any page
 5. Customers can start booking immediately

#### Perfect For

 * Nail salons and nail studios
 * Hair salons and barbershops
 * Spas and massage studios
 * Esthetics and skincare clinics
 * Lash and brow bars
 * Any small service business taking appointments

### External Services

This plugin optionally connects to the following third-party services. All connections
are **opt-in** and only occur when you explicitly configure and enable the relevant
integration in the plugin settings.

#### Square Appointments (Optional)

If you configure Square integration, this plugin communicates with the Square API
to:
 – Fetch your services, staff, and booking availability from Square – Create
and manage bookings in your Square Appointments calendar – Sync booking data between
your WordPress site and Square

**What data is sent:** Customer name, email, phone number, selected service, staff
member, and appointment date/time are sent to Square when a booking is created. 
Availability queries send service and staff IDs.
 **When it is sent:** Only when
a visitor submits a booking form, or when the admin triggers a manual sync. **Service
provider:** Square, Inc. – [Terms of Service](https://squareup.com/us/en/legal/general/ua)–
[Privacy Policy](https://squareup.com/us/en/legal/general/privacy)

#### Square Booking Widget (Optional — Hybrid Mode)

If you enable “Hybrid Mode” in settings, a JavaScript widget is loaded from Square’s
servers to display Square’s native booking interface.

This plugin loads a script from `https://square.site/appointments/buyer/widget/`
to embed Square’s booking widget.

**What data is sent:** The visitor’s browser connects to `square.site` to load the
widget script. No personal data is sent until the visitor interacts with the widget.
**
When it is sent:** Only when a page containing the booking shortcode is loaded and
Hybrid Mode is enabled. **Service provider:** Square, Inc. – [Terms of Service](https://squareup.com/us/en/legal/general/ua)–
[Privacy Policy](https://squareup.com/us/en/legal/general/privacy)

#### Vagaro (Optional)

If you configure Vagaro integration, this plugin communicates with the Vagaro API
to fetch availability and create bookings.
 **What data is sent:** Customer name,
email, phone, service, and appointment details. **When it is sent:** Only when a
visitor submits a booking form with Vagaro mode enabled. **Service provider:** Vagaro
Inc. – [Terms of Service](https://www.vagaro.com/pro/terms-of-use) – [Privacy Policy](https://www.vagaro.com/pro/privacy-policy)

#### Google Calendar (Optional)

If you configure Google Calendar integration, this plugin connects to the Google
Calendar API to add booking events to your calendar.
 **What data is sent:** Booking
details (customer name, service, date/time) are sent to Google. **When it is sent:**
Only when a booking is confirmed and Google Calendar integration is enabled. **Service
provider:** Google LLC – [Terms of Service](https://policies.google.com/terms) –
[Privacy Policy](https://policies.google.com/privacy)

#### Twilio SMS (Optional)

If you configure Twilio integration, SMS notifications are sent via the Twilio API.
**
What data is sent:** Customer phone number and booking details. **When it is sent:**
Only when a booking is confirmed and Twilio SMS is enabled. **Service provider:**
Twilio Inc. – [Terms of Service](https://www.twilio.com/en-us/legal/tos) – [Privacy Policy](https://www.twilio.com/en-us/legal/privacy)

**Note:** The free version of this plugin works entirely locally — no external services
are required or contacted unless you explicitly configure an integration in the 
settings.

## Screenshots

 * [[
 * Service selection — categorized services with photos, descriptions, and pricing
 * [[
 * Date & time picker — multi-service booking with guest support and real-time availability
 * [[
 * Full booking view — step progress bar, service summary, and appointment sidebar
 * [[
 * Mobile — service selection on phone
 * [[
 * Mobile — calendar and floating cart bar
 * [[
 * Mobile — cart drawer showing appointment summary

## Installation

 1. Download and upload the plugin ZIP via **WordPress Admin  Plugins  Add New  Upload
    Plugin**
 2. Activate the plugin
 3. Go to **Yatoon Booking  Settings** to configure your business hours and email settings
 4. Go to **Yatoon Booking  Services** to add your services
 5. Go to **Yatoon Booking  Staff** to add your staff members
 6. Add `[ybs_booking]` shortcode to any page to display the booking form
 7. That’s it — your booking page is live!

## FAQ

### Does this plugin work without Square or any other third-party account?

Yes! The free version is 100% local. Everything — services, staff, bookings, availability—
is managed inside WordPress. No Square account, no API keys, no external services
needed.

### How do customers book appointments?

Add the shortcode `[ybs_booking]` to any WordPress page. Customers will see a beautiful
multi-step booking form where they can choose a service, staff member, date and 
time, and enter their contact details.

### Can customers book for multiple people at once?

Yes! The booking form supports group bookings. Customers can add services for themselves
and additional guests (Guest 2, Guest 3, etc.) all in one appointment session.

### Can I add multiple services per appointment?

Yes. Customers can add multiple services for themselves or for each person in their
group. The form automatically calculates total duration and finds available time
slots that fit everything.

### Does it work on mobile?

Yes, fully. The booking form is responsive and mobile-optimized, with a floating
cart bar that keeps the appointment summary visible while browsing services.

### How do I limit how far in advance customers can book?

Go to **Yatoon Booking  Settings** and set the “Maximum booking window” (e.g. 60
days in advance) and “Minimum lead time” (e.g. 2 hours notice required).

### Can I block specific customers?

Yes. Go to **Yatoon Booking  Blacklist** and add customer phone numbers to prevent
them from making new bookings.

### What happens when a time slot is fully booked?

Customers can join a waitlist. You’ll see waitlisted customers in **Yatoon Booking
Waitlist** and can contact them if a cancellation opens up.

### How do I upgrade to Pro?

Click **⬆️ Upgrade to Pro** in the Yatoon Booking admin sidebar, or visit [yatoon.com/pricing](https://yatoon.com/pricing).
After purchase, download the Pro ZIP from your account and install it via **Plugins
Add New  Upload Plugin**.

### Does the free version have any limits on services or staff?

No artificial limits in the free version — add as many services and staff as you
need.

### Is this compatible with my theme?

The booking form uses self-contained CSS and works with any standard WordPress theme.
It does not depend on any page builder.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Yatoon Booking System” is open source software. The following people have contributed
to this plugin.

Contributors

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

[Translate “Yatoon Booking System” into your language.](https://translate.wordpress.org/projects/wp-plugins/yatoon-booking-system)

### Interested in development?

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

## Changelog

#### 1.1.7

 * i18n: Added full translations for Chinese Simplified (zh_CN), Vietnamese (vi),
   and Spanish (Spanish) (es_ES)
 * Removed all hardcoded salon-specific default values (business name, address, 
   phone, website URLs)
 * Added Business Address and Business Website fields to Contact Information settings
 * Booking confirmation screen now dynamically renders address/phone/website from
   settings (hidden when blank)
 * Unified business phone option key to yatoon_business_phone

#### 1.1.6

 * Added i18n infrastructure: all user-facing strings wrapped with translation functions
 * Added languages/ directory with .pot template file

#### 1.1.5

 * Fixed: All color option values in class-yatoon-frontend.php now wrapped with 
   sanitize_hex_color() before CSS injection
 * Fixed: admin/views/bookings.php ABSPATH check moved before global \$wpdb

#### 1.1.3

 * Fixed: Replaced all $table_xxx variables in SQL queries with {$wpdb->prefix}tablename
   directly (resolves InterpolatedNotPrepared + UnescapedDBParameter)
 * Fixed: All date() calls replaced with gmdate() (25 instances)
 * Fixed: strip_tags() replaced with wp_strip_all_tags()
 * Fixed: Added phpcs:disable/enable to all view files for NonPrefixedVariableFound(
   view files are included partials, not global scope)
 * Fixed: Added nonce verification to ajax_get_staff_services and ajax_update_staff_services
 * Fixed: ExceptionNotEscaped in cron.php – exceptions are logged, not echoed to
   users
 * Fixed: UnfinishedPrepare – $placeholders and $ph contain %d format strings
 * Fixed: NonPrefixedFunctionFound – sbs_resolve_font renamed to yatoon_resolve_font
 * Fixed: SBS_* backward-compat constants annotated with phpcs:ignore
 * Fixed: MissingTranslatorsComment – added /* translators: */ comments
 * Fixed: EscapeOutput remaining instances in admin views

#### 1.1.2

 * Compliance: Renamed all plugin prefixes from ybs_/sbs_ to yatoon_ (≥4 chars) 
   per WP.org guidelines
 * Compliance: Renamed all class names from SBS_* to YATOON_*
 * Compliance: Added == External Services == documentation to readme.txt
 * Security: Replaced all _e() with esc_html_e() for proper escaping (68 instances)
 * Security: Added nonce verification to Google OAuth callback (state parameter)
 * Security: Replaced remaining stripslashes() with wp_unslash()
 * Security: Added sanitize_text_field() to $_SESSION reads
 * Security: Added wp_unslash() to all JSON POST data reads
 * i18n: Added missing text domain to __() calls in activator.php
 * i18n: Fixed shortcode names to yatoon_booking and yatoon_customer_portal
 * Compatibility: Updated Tested up to WordPress 6.9

#### 1.1.1

 * Security: Added direct file access protection (ABSPATH check) to all PHP files
 * Security: Added nonce verification to sync_bookings_from_square, debug_square_availability,
   debug_date_bookings handlers
 * Security: Replaced wp_redirect() with wp_safe_redirect() throughout
 * Security: Added wp_unslash() to all sanitize calls for POST/GET input
 * Security: Escaped all unescaped output in admin and public views
 * Security: Sanitized $_SERVER[‘REMOTE_ADDR’] via sanitize_text_field()
 * Compatibility: Removed unnecessary load_plugin_textdomain() call (not needed 
   for WP 6.0+)
 * i18n: Fixed text domain — unified all strings to ‘yatoon-booking-system’
 * i18n: Fixed admin page slug URL references
 * Tested up to WordPress 6.8

#### 1.1.0

 * Initial public release on WordPress.org

## Meta

 *  Version **1.1.7**
 *  Last updated **2 weeks ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.8 or higher **
 *  Tested up to **6.9.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [appointments](https://wordpress.org/plugins/tags/appointments/)[booking](https://wordpress.org/plugins/tags/booking/)
   [salon](https://wordpress.org/plugins/tags/salon/)[scheduling](https://wordpress.org/plugins/tags/scheduling/)
   [spa](https://wordpress.org/plugins/tags/spa/)
 *  [Advanced View](https://wordpress.org/plugins/yatoon-booking-system/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/yatoon-booking-system/reviews/)

## Contributors

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

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/yatoon-booking-system/)