{"id":286050,"date":"2026-03-26T18:08:01","date_gmt":"2026-03-26T18:08:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/yatoon-booking-system\/"},"modified":"2026-08-24T23:47:51","modified_gmt":"2026-08-24T23:47:51","slug":"yatoon-booking-system","status":"publish","type":"plugin","link":"https:\/\/ko.wordpress.org\/plugins\/yatoon-booking-system\/","author":23459728,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.6.1","stable_tag":"4.6.1","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Yatoon Salon Booking & Appointments","header_author":"Yatoon","header_description":"Free appointment booking system for salons, spas, and service businesses. Manage services, staff, and bookings locally. Upgrade to Pro for Square\/Vagaro sync, SMS reminders, Google Calendar, and brand customization.","assets_banners_color":"f8d2d7","last_updated":"2026-08-24 23:47:51","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/yatoon.com\/bookingdemo\/","header_author_uri":"https:\/\/yatoon.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":4717,"num_ratings":1,"support_threads":2,"support_threads_resolved":2,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"4.5.0":{"tag":"4.5.0","author":"yatoon","date":"2026-08-10 03:45:14"},"4.5.5":{"tag":"4.5.5","author":"yatoon","date":"2026-08-16 02:44:13"},"4.6.0":{"tag":"4.6.0","author":"yatoon","date":"2026-08-22 15:13:31"},"4.6.1":{"tag":"4.6.1","author":"yatoon","date":"2026-08-24 23:47:51"}},"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3571419,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3571419,"resolution":"256x256","location":"assets","locale":"","width":1024,"height":1024}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3605313,"resolution":"1544x500","location":"assets","locale":"","width":1554,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3605313,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["4.5.0","4.5.5","4.6.0","4.6.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3631501,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3642766,"resolution":"10","location":"assets","locale":"","width":1440,"height":900},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3642766,"resolution":"11","location":"assets","locale":"","width":1440,"height":900},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3642766,"resolution":"12","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3631501,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3631501,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3639030,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3642766,"resolution":"5","location":"assets","locale":"","width":1440,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3642766,"resolution":"6","location":"assets","locale":"","width":1440,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3642766,"resolution":"7","location":"assets","locale":"","width":1440,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3642766,"resolution":"8","location":"assets","locale":"","width":1440,"height":900},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3642766,"resolution":"9","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Mobile-first booking with a clear five-step flow, service choices, and persistent cart.","2":"Service variations, upgrades, options, and recommended add-ons.","3":"Pro multi-service group appointments for a client and guests in one visit.","4":"Qualified staff selection with Any Staff and preferred-team choices.","5":"Recommended openings plus fast week, month, and time selection.","6":"Per-service reference photo uploads with a visible Uploaded confirmation.","7":"Complete confirmation receipt with guests, services, times, prices, directions, and calendar actions.","8":"Service catalog controls for categories, pricing, status, and upload rules.","9":"Pro brand controls for logos, colors, typography, buttons, and live previews.","10":"Mobile Staff Portal with a practical day calendar.","11":"Customer self-service for reviewing, rescheduling, or cancelling safely, with Pro service changes.","12":"Pro service changes with duration checks and qualified available staff."}},"plugin_section":[],"plugin_tags":[8132,269,11523,11522,2672],"plugin_category":[40],"plugin_contributors":[78154,258722],"plugin_business_model":[],"class_list":["post-286050","plugin","type-plugin","status-publish","hentry","plugin_tags-appointments","plugin_tags-booking","plugin_tags-salon","plugin_tags-spa","plugin_tags-square","plugin_category-calendar-and-events","plugin_contributors-freemius","plugin_contributors-yatoon","plugin_committers-yatoon"],"banners":{"banner":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/banner-772x250.png?rev=3605313","banner_2x":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/banner-1544x500.png?rev=3605313","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/icon-128x128.png?rev=3571419","icon_2x":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/icon-256x256.png?rev=3571419","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-1.png?rev=3631501","caption":"Mobile-first booking with a clear five-step flow, service choices, and persistent cart."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-2.png?rev=3631501","caption":"Service variations, upgrades, options, and recommended add-ons."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-3.png?rev=3631501","caption":"Pro multi-service group appointments for a client and guests in one visit."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-4.png?rev=3639030","caption":"Qualified staff selection with Any Staff and preferred-team choices."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-5.png?rev=3642766","caption":"Recommended openings plus fast week, month, and time selection."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-6.png?rev=3642766","caption":"Per-service reference photo uploads with a visible Uploaded confirmation."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-7.png?rev=3642766","caption":"Complete confirmation receipt with guests, services, times, prices, directions, and calendar actions."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-8.png?rev=3642766","caption":"Service catalog controls for categories, pricing, status, and upload rules."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-9.png?rev=3642766","caption":"Pro brand controls for logos, colors, typography, buttons, and live previews."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-10.png?rev=3642766","caption":"Mobile Staff Portal with a practical day calendar."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-11.png?rev=3642766","caption":"Customer self-service for reviewing, rescheduling, or cancelling safely, with Pro service changes."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-12.png?rev=3642766","caption":"Pro service changes with duration checks and qualified available staff."}],"raw_content":"<!--section=description-->\n<p><strong>A flexible WordPress booking system built for salons, spas, and service businesses.<\/strong> The free version provides a complete local booking workflow, while Pro adds Square integration and advanced operational features.<\/p>\n\n<p>Yatoon has powered daily bookings at a real nail salon for more than a year, connecting a branded customer experience with day-to-day salon operations.<\/p>\n\n<p><strong><a href=\"https:\/\/yatoon.com\/bookingdemo\/\">Try the live booking demo<\/a><\/strong> - no account or installation required.<\/p>\n\n<h4>Start booking with Free<\/h4>\n\n<p>Square is not required. Local mode runs inside WordPress and gives service businesses a practical booking system without connecting an external scheduling or payment account.<\/p>\n\n<ul>\n<li>Mobile-first booking for services, options, staff, date, time, customer details, and confirmation<\/li>\n<li>Services, service variations, qualified staff, business hours, staff schedules, breaks, and closed dates<\/li>\n<li>Any Staff assignment and final server-side availability checks to help prevent schedule conflicts<\/li>\n<li>Multiple services and guests in one booking journey, with separate staff choices and reference photos<\/li>\n<li>Booking calendar, appointment management, client records, notes, and basic reports<\/li>\n<li>Email confirmations and configurable booking notifications<\/li>\n<li>Secure customer self-service for viewing, cancelling, rescheduling, rebooking, and adding appointments to a calendar<\/li>\n<li>Staff Portal schedule view for day-to-day mobile access<\/li>\n<li>Service menu, waitlist, form fields, brand basics, privacy tools, and a guided one-click migration from Bookly or Amelia (Pro also migrates from LatePoint)<\/li>\n<li>SEO-ready local discovery storefront with portfolio, popular services, multi-location links, private favorites, and quick rebooking<\/li>\n<li>Privacy-safe booking-funnel reporting and an installable lightweight customer app for home-screen access<\/li>\n<li>Gutenberg blocks, Elementor widgets, shortcodes, responsive layouts, RTL styles, and maintained language catalogs<\/li>\n<li>Up to two staff members in the Free plan<\/li>\n<\/ul>\n\n<h4>Grow with Pro<\/h4>\n\n<p>Upgrade when your business needs Square, payments, automation, more staff, or broader salon operations. Pro includes everything in Free, plus:<\/p>\n\n<ul>\n<li>Unlimited staff members<\/li>\n<li>Square Appointments and POS workflows, Square online payments, deposits, refunds, sync monitoring, and recovery tools<\/li>\n<li>Optional Vagaro synchronization and Google Calendar two-way availability<\/li>\n<li>Stripe and PayPal payment options, deposits, prepayment, invoices, taxes, and refund workflows<\/li>\n<li>SMS reminders through Twilio and optional WhatsApp workflows (Pro adds full Meta WhatsApp Cloud API templates)<\/li>\n<li>Packages, memberships, gift cards, coupons, loyalty, recurring appointments, waitlist automation, broadcasts, and review requests<\/li>\n<li>Verified-appointment review badges and one-customer-at-a-time timed waitlist claim links<\/li>\n<li>Advanced customer self-service, including changing services safely<\/li>\n<li>Multi-location rules, shared resources, inventory, commissions, dynamic pricing, group classes, reports, and automations<\/li>\n<li>Advanced brand controls, operational diagnostics, authenticated REST integrations, and priority support<\/li>\n<li>Native Bricks, Beaver Builder, and Divi booking modules<\/li>\n<\/ul>\n\n<p>External providers are optional and require their own accounts, credentials, supported regions, and any applicable provider fees.\nFeatures connected to external providers also depend on those providers' API availability, compatibility, policies, and continued service; provider outages or API changes can temporarily affect the corresponding integration without affecting Local mode.<\/p>\n\n<h4>Reliability for real salon operations<\/h4>\n\n<p>Yatoon rechecks staff qualification, working hours, breaks, closed dates, existing appointments, and relevant external availability before sensitive booking changes are saved. If confirmation fails, the booking form keeps the customer's details and provides clear recovery actions instead of forcing the customer to start over.<\/p>\n\n<p>Pro's Operations health center adds recent sync activity, webhook status, stale-sync warnings, failed background jobs, retry controls, migration status, upgrade snapshots, rollback tools, performance measurements, and a privacy-safe technical summary for support.<\/p>\n\n<h4>Add Yatoon anywhere<\/h4>\n\n<ul>\n<li><code>[yatoon_booking]<\/code> - complete booking form<\/li>\n<li><code>[yatoon_discovery]<\/code> - indexable salon discovery storefront, portfolio, favorites, reviews, and booking entry points<\/li>\n<li><code>[yatoon_service_menu]<\/code> - visual service menu with Book buttons<\/li>\n<li><code>[yatoon_customer_portal]<\/code> - customer self-service portal<\/li>\n<li><code>[yatoon_staff_portal]<\/code> - mobile staff schedule portal<\/li>\n<li><code>[yatoon_growth_storefront]<\/code> - Pro package and membership storefront<\/li>\n<li><code>[yatoon_group_appointments]<\/code> - Pro capacity-based classes and independent attendee reservations<\/li>\n<\/ul>\n\n<p>Every major shortcode is also available as a native Gutenberg block and Elementor widget.<\/p>\n\n<h3>External Services and Privacy<\/h3>\n\n<p>Free Local mode performs booking and availability inside WordPress and does not require Square, Vagaro, Stripe, PayPal, Twilio, Google Calendar, Microsoft Outlook, or Meta WhatsApp.<\/p>\n\n<p>The plugin bundles Freemius for optional account connection, licensing, updates, and upgrade screens. Freemius is contacted when an administrator chooses to opt in, connect an account, manage a license, or use related services, and may receive the site, administrator, plugin, WordPress, PHP, and license information required to provide them. See <a href=\"https:\/\/freemius.com\/privacy\/\">Freemius Privacy Policy<\/a> and <a href=\"https:\/\/freemius.com\/terms\/\">Terms<\/a>.<\/p>\n\n<p>Pro integrations contact only the providers an administrator configures and enables. Depending on the workflow, the minimum required booking, customer, staff, catalog, calendar, message, payment, refund, location, and provider-reference data is sent to that provider. Provider credentials are stored encrypted in WordPress; Yatoon diagnostics must not include them.<\/p>\n\n<ul>\n<li><a href=\"https:\/\/squareup.com\/us\/en\/legal\/general\/privacy\">Square Privacy<\/a><\/li>\n<li><a href=\"https:\/\/www.vagaro.com\/privacy\">Vagaro Privacy<\/a><\/li>\n<li><a href=\"https:\/\/stripe.com\/privacy\">Stripe Privacy<\/a><\/li>\n<li><a href=\"https:\/\/www.paypal.com\/us\/legalhub\/privacy-full\">PayPal Privacy<\/a><\/li>\n<li><a href=\"https:\/\/www.twilio.com\/en-us\/legal\/privacy\">Twilio Privacy<\/a><\/li>\n<li><a href=\"https:\/\/policies.google.com\/privacy\">Google Privacy<\/a><\/li>\n<li><a href=\"https:\/\/privacy.microsoft.com\/privacystatement\">Microsoft Privacy<\/a><\/li>\n<li><a href=\"https:\/\/www.facebook.com\/privacy\/policy\/\">Meta Privacy<\/a><\/li>\n<\/ul>\n\n<p>Site owners are responsible for obtaining required consent, publishing an accurate privacy notice, configuring retention, and complying with the rules of their region and chosen providers.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Yatoon Salon Booking.<\/li>\n<li>Complete <strong>Yatoon Booking &gt; Setup Wizard<\/strong>.<\/li>\n<li>Configure services, variations, staff qualifications, schedules, business hours, breaks, and closed dates.<\/li>\n<li>Stay in Local mode with Free, or connect the integrations your Pro workflow requires.<\/li>\n<li>Add the Yatoon Booking block, Elementor widget, or <code>[yatoon_booking]<\/code> shortcode to a public page.<\/li>\n<li>Exclude booking and portal pages from full-page caching and delayed JavaScript optimization.<\/li>\n<li>Complete a test booking and confirmation before launch. If configured, also test payment, refunds, synchronization, customer self-service, and staff workflows.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20free%20version%20require%20square%20or%20another%20external%20service%3F\"><h3>Does the Free version require Square or another external service?<\/h3><\/dt>\n<dd><p>No. Free can run in Local mode inside WordPress. Square, Vagaro, Stripe, PayPal, Twilio, and Google Calendar are optional Pro integrations.<\/p><\/dd>\n<dt id=\"what%20makes%20yatoon%20different%20from%20a%20generic%20appointment%20plugin%3F\"><h3>What makes Yatoon different from a generic appointment plugin?<\/h3><\/dt>\n<dd><p>Yatoon focuses on salon workflows: service variations, multi-service visits, reference photos, qualified technicians, Any Staff assignment, customer self-service, and practical staff and client tools. Pro extends those workflows with Square and other advanced operations.<\/p><\/dd>\n<dt id=\"what%20does%20pro%20add%3F\"><h3>What does Pro add?<\/h3><\/dt>\n<dd><p>Pro adds unlimited staff, Square and Vagaro synchronization, online payments and deposits, SMS and calendar integrations, advanced customer self-service, growth tools, multi-location operations, and priority support. Features that use third-party providers require separately configured provider accounts.<\/p><\/dd>\n<dt id=\"what%20does%20the%20square%20integration%20cover%3F\"><h3>What does the Square integration cover?<\/h3><\/dt>\n<dd><p>Square is optional and available in Pro. Yatoon Pro supports Square Appointments and POS workflows plus Square online payment, deposit, and refund options. Exact behavior depends on correct Square location, service, variation, team-member, and permission mappings.<\/p><\/dd>\n<dt id=\"how%20does%20yatoon%20protect%20against%20schedule%20conflicts%3F\"><h3>How does Yatoon protect against schedule conflicts?<\/h3><\/dt>\n<dd><p>It checks staff qualification, working hours, breaks, closed dates, existing appointments, shared resources, and external availability where applicable. A final server-side check runs immediately before the change is saved.<\/p><\/dd>\n<dt id=\"can%20one%20booking%20contain%20several%20services%20or%20guests%3F\"><h3>Can one booking contain several services or guests?<\/h3><\/dt>\n<dd><p>Yes. Each guest can have separate services, staff assignments, timing, and reference photos while remaining part of one booking journey.<\/p><\/dd>\n<dt id=\"can%20customers%20and%20staff%20manage%20appointments%20from%20a%20phone%3F\"><h3>Can customers and staff manage appointments from a phone?<\/h3><\/dt>\n<dd><p>Yes. Customers can install the lightweight booking app from a supported browser for fast access to booking, discovery, and My Appointments. The Customer Portal provides secure self-service, and the installable Staff Portal is designed for mobile daily operations.<\/p><\/dd>\n<dt id=\"does%20it%20support%20deposits%20and%20online%20payments%3F\"><h3>Does it support deposits and online payments?<\/h3><\/dt>\n<dd><p>Online payments and deposits are available in Pro. Configure only the provider and deposit rules required by your business, then test the full payment and refund workflow in the provider's test environment before going live.<\/p><\/dd>\n<dt id=\"is%20yatoon%20multilingual%3F\"><h3>Is Yatoon multilingual?<\/h3><\/dt>\n<dd><p>Yes. Yatoon is translation-ready and includes maintained catalogs for Simplified Chinese, Traditional Chinese, Spanish (Spain and Mexico), and Vietnamese. English is the source language. Community translations distributed by WordPress.org continue to work, and untranslated strings safely fall back to English. Business-owned service names, descriptions, policies, and custom labels remain editable by the site owner.<\/p><\/dd>\n<dt id=\"where%20can%20i%20get%20help%3F\"><h3>Where can I get help?<\/h3><\/dt>\n<dd><p>Downloads, licensing, updates, and priority support are available through <a href=\"https:\/\/yatoon.com\/\">Yatoon.com<\/a>. Copy the privacy-safe technical summary from Operations when reporting an integration problem.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.6.1<\/h4>\n\n<ul>\n<li>Fixed the booking form jumping up and down when moving from services or options to the next step by coalescing competing scroll targets into one stable position.<\/li>\n<li>Extended one-time AI consent, sensitive-data screening, and the site-wide provider budget to the customer-portal reschedule\/cancel assistant; completed a systematic gettext pass across settings, portals, operational tools, provider errors, and notification defaults.<\/li>\n<li>Hardened client-IP rate limits with an opt-in trusted-proxy allowlist; forwarded headers remain ignored by default.<\/li>\n<li>Added an explicit uninstall data policy: appointments, customers, services, staff, settings, and integration data are preserved unless permanent deletion was deliberately enabled.<\/li>\n<li>Fixed network activation on WordPress Multisite so every existing site receives the complete Yatoon schema before migrations run.<\/li>\n<li>Added explicit customer consent and sensitive-data screening before frontend AI requests can reach a configured third-party provider.<\/li>\n<li>Added idempotent booking contact indexes and reduced the durable job queue's fallback poll from every minute to every five minutes while retaining prompt single-run jobs.<\/li>\n<li>Hashed OTP codes, limited failed attempts, stripped uploaded-image metadata by re-encoding, and translated direct JSON\/error responses.<\/li>\n<li>New: client Look History. The client profile now has a place to log what color, style, or product a visit used, with an optional photo, tied to that client and (when logged from a booking) that appointment automatically.<\/li>\n<li>New: keep a card on file. Customers can save a card when they book, after agreeing to your cancellation policy \u2014 the exact wording they agreed to is stored with the card, with the date. Cards are held by Stripe; nothing in your database can be used to reconstruct a card number.<\/li>\n<li>New: charge for missed appointments and late cancellations, as a fixed amount or a percentage of the booking. Manual by default, with an option to charge automatically.<\/li>\n<li>New: move in from Fresha, Booksy, Vagaro or any system that exports a CSV. Customers, appointment history, remaining package visits and gift card balances all come across, with a preview before anything is written and every import reversible.<\/li>\n<li>Staff Portal sign-in \u2014 PIN, Google, and email\/text-message codes \u2014 is now set up directly from the employee editor instead of a separate Identity screen, and setting a PIN no longer reloads the page.<\/li>\n<li>Fixed a site activated through WP-CLI or another headless\/staging tool never getting past the licensing library's one-time connect-or-skip prompt: 10 admin pages returned a bare \"Sorry, you are not allowed to access this page\" until that prompt was seen in a browser.<\/li>\n<li>Fixed the Settings page itself being able to disappear from the admin menu on some installs, from the plugin registering its other pages before its own Settings page instead of first.<\/li>\n<li>Fixed a JavaScript error on every Settings tab except General, and on five locked feature-preview pages, from a script reading a Deposit\/Prepay control that only exists on the General tab.<\/li>\n<li>Fixed the setup wizard creating a duplicate \"My Appointments\" customer page and silently switching every customer-facing link to it, instead of reusing the page the plugin already creates automatically on activation.<\/li>\n<li>Fixed the Clients screen showing \"No clients yet\" directly under a heading that said how many customers you have \u2014 three of the five sort columns used SQL the database rejects.<\/li>\n<li>Fixed the month view of the booking date picker, which threw a JavaScript error and never rendered.<\/li>\n<li>Fixed five Settings sub-pages (SMS, Google Calendar, Deposit &amp; Prepay, No-show Tracking, Waitlist) rendering their controls without the script driving them.<\/li>\n<li>Fixed a fatal error on every fresh install from the salon-operations dashboard loading on a profile switch it did not belong to.<\/li>\n<li>Fixed double-booking on customer self-service: rescheduling and changing services now take the same per-day lock new bookings already used.<\/li>\n<li>Added rate limiting to the booking endpoint, per visitor and per contact detail.<\/li>\n<li>Fixed appointment times shown in Zoom invitations, confirmation emails, admin notifications and waitlist notices, which were shifted by the site's UTC offset.<\/li>\n<li>API credentials are no longer silently stored in plain text when a server cannot encrypt; saving now fails with a clear notice instead.<\/li>\n<li>Reference-photo uploads now verify the chosen service actually accepts them, instead of only checking the site-wide switch.<\/li>\n<li>Push notifications no longer send customer names, services or appointment times to an external relay.<\/li>\n<li>Escaped staff names in the booking form, added accessible names to form controls, translated 60+ booking-flow strings, raised touch targets to 44x44, and fixed a text colour below the accessibility contrast floor.<\/li>\n<li>Availability lookups now cache within a request: a multi-location, multi-service search dropped from hundreds of database queries to a handful.<\/li>\n<li>Free and Pro no longer drift on cancelled-appointment workload counting, webhook health checks, or the Reviews builder widget.<\/li>\n<\/ul>\n\n<h4>4.6.0<\/h4>\n\n<ul>\n<li>Added a polished local discovery storefront, favorites sync, quick rebooking, verified review trust signals, privacy-safe booking-funnel analytics, timed waitlist claim links, and an installable customer PWA.<\/li>\n<li>Balanced the mobile whitespace above the Your appointments card and shortened guest sign-in guidance across the booking flow.<\/li>\n<li>Added a fast, free-tier-friendly frontend AI mode with conditional availability checks, shorter prompts, bounded retries, provider-aware failover, answer caching, and clickable local-menu fallback instead of a dead-end busy message.<\/li>\n<li>Added configurable frontend AI performance and cache controls plus a clearer progress state for slower provider responses.<\/li>\n<li>Fixed multi-service owner and customer emails so every selected variation and add-on is listed with its segment duration.<\/li>\n<li>Added salon address, phone, website, manage\/reschedule\/cancel, and calendar links to customer confirmations, including sites with older saved email templates.<\/li>\n<li>Clarified optional guest checkout and removed repeated sign-in prompts from intermediate booking steps.<\/li>\n<li>Corrected confirmation and admin email duration for combined services and add-ons.<\/li>\n<li>Fixed multi-service Square time checks so selected add-ons and total duration match final confirmation.<\/li>\n<li>Added better Step 5 spacing and sticky-header-safe mobile progress scrolling.<\/li>\n<li>Restored desktop hover opening for the booking sign-in menu and stopped failed AI provider calls from consuming the customer's longer usage allowance.<\/li>\n<li>Added automatic model\/provider failover for temporary AI overloads and rate limits, without exposing raw technical provider errors to customers.<\/li>\n<li>Replaced the browser-native booking sign-in control with a stable button menu, removing the duplicate triangle and unreliable open\/close behavior seen in Chrome.<\/li>\n<li>Restored the booking sign-in menu as a tidy desktop overlay that no longer expands the whole appointment banner.<\/li>\n<li>Styled Google, Facebook, and email as consistent full-width boxed sign-in actions.<\/li>\n<li>Keeps current Gemini, OpenAI, and Claude choices while restoring the complete original working model set, compatibility-first defaults, and provider-agnostic runtime fallback.<\/li>\n<li>Increased wide-screen booking typography so the expanded layout remains readable and visually balanced.<\/li>\n<li>Added a wider, balanced booking layout for large desktop screens while preserving responsive laptop and mobile behavior.<\/li>\n<li>Removed the booking page's wide-then-shrink first-paint jump and fixed delayed AI Feature Switch checkmarks.<\/li>\n<li>Made hidden optional modules searchable with direct enable-feature guidance.<\/li>\n<li>Added secure booking-homepage customer sign-out, responsive Growth Modules forms, and clearer AI settings discovery.<\/li>\n<li>Refined the customer sign-in banner with a branded Google button, clear appointment-management copy, and a login-aware My Appointments action.<\/li>\n<li>Fixed Rank Math breadcrumb JSON-LD items that omitted the Google-required name field.<\/li>\n<li>Added Google and email-code customer sign-in, with SMS-code capability available when the Pro Twilio integration is configured.<\/li>\n<li>Added customer self-service service changes with fresh staff\/time availability checks for eligible unpaid single-service appointments.<\/li>\n<li>Hardened local reschedule availability across breaks, resources, time off, and external calendars.<\/li>\n<li>Added native Brizy elements for booking, customer and staff portals, service menus, catalogs, galleries, reviews, and booking management.<\/li>\n<li>Fixed the enabled Already booked banner being suppressed by legacy option types or temporarily unavailable destination URLs.<\/li>\n<li>Prevented partial General settings actions from silently clearing unrelated checkboxes.<\/li>\n<li>Fixed delayed checkbox checkmarks across all Settings controls in Chromium and Edge.<\/li>\n<li>Fixed false no-availability results when a primary variation was also submitted as an add-on after staff selection.<\/li>\n<li>Added Google sign-in and My Appointments to the optional booking-form portal banner, automatic customer-portal page setup, and clearer OAuth readiness guidance.<\/li>\n<li>Added shared Google OpenID Connect identity for customers and explicitly authorized employees.<\/li>\n<li>Added customer Google sign-in and verified profile prefill in both Local and Square booking modes.<\/li>\n<li>Added employee Google, email-code, SMS-code, and six-digit PIN sign-in with one hardened session model.<\/li>\n<li>Added persistent identity links, one-time OAuth handoffs, collision-safe customer matching, and Square Customer resolution.<\/li>\n<li>Added an Identity &amp; Sign-in admin screen with per-employee authorization controls and audit-ready bindings.<\/li>\n<li>Simplified the booking-page sign-in dropdown wording (\"Continue with email\" \/ \"Continue with text message\") and made both labels editable under Settings.<\/li>\n<li>Fixed the \"Already booked with us?\" banner heading not upgrading to the shorter default when the saved text used different capitalization.<\/li>\n<li>Moved the direct-access guard in class-yatoon-core.php to the top of the file (it previously sat after an unguarded top-level function).<\/li>\n<li>Fixed appointment reminders being marked as sent even when delivery failed, whenever the (Pro-only) SMS reminder toggle was left checked.<\/li>\n<li>Added revenue trend, revenue-by-service, and revenue-by-staff charts to the Reports page.<\/li>\n<li>Added an AI reschedule assistant: customers can describe a new time in their own words in \"My Appointments\"; AI only reads real open slots and never invents availability, and the customer still confirms before anything changes.<\/li>\n<li>Gave WhatsApp reminders and the Bookly\/Amelia\/LatePoint migration center their own readme callouts instead of leaving them buried in a shared bullet point.<\/li>\n<li>Rebuilt the Reports page charts on a locally-vendored Chart.js (no CDN): a combined revenue\/bookings trend chart plus real bar charts for revenue by service and by staff, replacing the earlier plain CSS bars.<\/li>\n<li>Broadened the AI assistant in \"My Appointments\" beyond reschedule-only: it now also recognizes cancellation requests (\"please cancel it\") from the same chat box, still only proposing an action after checking real data, and still requiring the customer to confirm before anything changes.<\/li>\n<\/ul>\n\n<h4>4.5.6<\/h4>\n\n<ul>\n<li>Closed a concurrent Square webhook duplicate-processing window with atomic event claims and safe retry release.<\/li>\n<li>Stopped the booking service worker from persisting HTML, API responses, WordPress nonces, or personalized pages.<\/li>\n<li>Added post-migration table verification so failed optional-module migrations retry instead of being marked complete.<\/li>\n<li>Added direct-access guards to remaining core integration classes and expanded executable release contracts.<\/li>\n<\/ul>\n\n<p>Older release notes are preserved in the project release archive; the plugin package intentionally carries only recent upgrade-relevant history.<\/p>","raw_excerpt":"Mobile-first salon booking with staff scheduling, customer self-service, reminders, flexible payments, and optional Square integration.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/286050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=286050"}],"author":[{"embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/yatoon"}],"wp:attachment":[{"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=286050"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=286050"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=286050"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=286050"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=286050"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ko.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=286050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}