{"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-01T04:00:09","modified_gmt":"2026-08-01T04:00:09","slug":"yatoon-booking-system","status":"publish","type":"plugin","link":"https:\/\/lug.wordpress.org\/plugins\/yatoon-booking-system\/","author":23459728,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"4.4.1","stable_tag":"4.4.1","tested":"7.0.2","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Yatoon Salon Booking - Square & Vagaro Sync","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-01 04:00:09","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":4017,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"yatoon","date":"2026-04-21 22:56:02"},"2.0.0":{"tag":"2.0.0","author":"yatoon","date":"2026-05-04 14:12:12"},"2.0.2":{"tag":"2.0.2","author":"yatoon","date":"2026-05-04 19:55:59"},"2.0.3":{"tag":"2.0.3","author":"yatoon","date":"2026-05-04 23:42:52"},"2.0.5":{"tag":"2.0.5","author":"yatoon","date":"2026-05-06 16:42:28"},"2.1.0":{"tag":"2.1.0","author":"yatoon","date":"2026-05-07 16:52:43"},"2.3.5":{"tag":"2.3.5","author":"yatoon","date":"2026-05-09 16:35:41"},"2.4.1":{"tag":"2.4.1","author":"yatoon","date":"2026-05-10 19:30:29"},"2.4.2":{"tag":"2.4.2","author":"yatoon","date":"2026-05-10 21:08:33"},"2.6.2":{"tag":"2.6.2","author":"yatoon","date":"2026-05-11 16:09:08"},"2.7.0":{"tag":"2.7.0","author":"yatoon","date":"2026-05-11 16:35:22"},"2.7.1":{"tag":"2.7.1","author":"yatoon","date":"2026-05-11 16:45:26"},"2.7.2":{"tag":"2.7.2","author":"yatoon","date":"2026-05-12 19:43:20"},"2.7.3":{"tag":"2.7.3","author":"yatoon","date":"2026-05-14 18:31:17"},"2.7.5":{"tag":"2.7.5","author":"yatoon","date":"2026-05-14 19:04:52"},"2.7.6":{"tag":"2.7.6","author":"yatoon","date":"2026-05-15 17:26:23"},"2.7.7":{"tag":"2.7.7","author":"yatoon","date":"2026-05-15 20:22:47"},"2.8.0":{"tag":"2.8.0","author":"yatoon","date":"2026-05-16 21:17:07"},"2.8.3":{"tag":"2.8.3","author":"yatoon","date":"2026-05-17 00:19:31"},"2.8.4":{"tag":"2.8.4","author":"yatoon","date":"2026-05-17 04:07:21"},"2.8.5":{"tag":"2.8.5","author":"yatoon","date":"2026-05-18 01:19:18"},"2.9.0":{"tag":"2.9.0","author":"yatoon","date":"2026-05-20 03:51:45"},"3.0.0":{"tag":"3.0.0","author":"yatoon","date":"2026-05-22 20:50:06"},"3.0.6":{"tag":"3.0.6","author":"yatoon","date":"2026-05-24 01:43:16"},"3.0.7":{"tag":"3.0.7","author":"yatoon","date":"2026-05-25 02:42:59"},"3.1.5":{"tag":"3.1.5","author":"yatoon","date":"2026-05-28 22:42:24"},"3.2.0":{"tag":"3.2.0","author":"yatoon","date":"2026-06-01 03:39:39"},"3.3.10":{"tag":"3.3.10","author":"yatoon","date":"2026-06-05 02:36:55"},"3.3.12":{"tag":"3.3.12","author":"yatoon","date":"2026-06-06 04:10:47"},"3.3.13":{"tag":"3.3.13","author":"yatoon","date":"2026-06-06 15:42:44"},"3.3.14":{"tag":"3.3.14","author":"yatoon","date":"2026-06-13 04:04:12"},"3.3.15":{"tag":"3.3.15","author":"yatoon","date":"2026-06-13 23:24:06"},"3.3.16":{"tag":"3.3.16","author":"yatoon","date":"2026-06-18 04:04:25"},"3.3.17":{"tag":"3.3.17","author":"yatoon","date":"2026-06-18 14:53:20"},"3.3.18":{"tag":"3.3.18","author":"yatoon","date":"2026-06-20 02:49:08"},"3.3.19":{"tag":"3.3.19","author":"yatoon","date":"2026-06-21 02:40:05"},"3.3.9":{"tag":"3.3.9","author":"yatoon","date":"2026-06-03 18:26:04"},"3.4.0":{"tag":"3.4.0","author":"yatoon","date":"2026-06-22 03:19:37"},"4.0.0":{"tag":"4.0.0","author":"yatoon","date":"2026-07-02 02:33:35"},"4.0.1":{"tag":"4.0.1","author":"yatoon","date":"2026-07-02 23:04:28"},"4.0.2":{"tag":"4.0.2","author":"yatoon","date":"2026-07-03 02:52:43"},"4.0.3":{"tag":"4.0.3","author":"yatoon","date":"2026-07-08 14:35:14"},"4.1.1":{"tag":"4.1.1","author":"yatoon","date":"2026-07-11 14:07:02"},"4.1.5":{"tag":"4.1.5","author":"yatoon","date":"2026-07-12 15:25:23"},"4.2.0":{"tag":"4.2.0","author":"yatoon","date":"2026-07-13 18:37:46"},"4.2.1":{"tag":"4.2.1","author":"yatoon","date":"2026-07-14 15:45:48"},"4.2.2":{"tag":"4.2.2","author":"yatoon","date":"2026-07-17 15:54:58"},"4.2.3":{"tag":"4.2.3","author":"yatoon","date":"2026-07-18 17:08:19"},"4.3.0":{"tag":"4.3.0","author":"yatoon","date":"2026-07-21 02:44:45"},"4.3.3":{"tag":"4.3.3","author":"yatoon","date":"2026-07-24 15:52:39"},"4.3.4":{"tag":"4.3.4","author":"yatoon","date":"2026-07-26 02:14:11"},"4.3.5":{"tag":"4.3.5","author":"yatoon","date":"2026-07-26 16:22:22"},"4.3.6":{"tag":"4.3.6","author":"yatoon","date":"2026-07-27 01:30:52"},"4.3.8":{"tag":"4.3.8","author":"yatoon","date":"2026-07-30 13:20:47"},"4.4.0":{"tag":"4.4.0","author":"yatoon","date":"2026-07-31 03:33:56"},"4.4.1":{"tag":"4.4.1","author":"yatoon","date":"2026-08-01 04:00:09"}},"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":["1.2.0","2.0.0","2.0.2","2.0.3","2.0.5","2.1.0","2.3.5","2.4.1","2.4.2","2.6.2","2.7.0","2.7.1","2.7.2","2.7.3","2.7.5","2.7.6","2.7.7","2.8.0","2.8.3","2.8.4","2.8.5","2.9.0","3.0.0","3.0.6","3.0.7","3.1.5","3.2.0","3.3.10","3.3.12","3.3.13","3.3.14","3.3.15","3.3.16","3.3.17","3.3.18","3.3.19","3.3.9","3.4.0","4.0.0","4.0.1","4.0.2","4.0.3","4.1.1","4.1.5","4.2.0","4.2.1","4.2.2","4.2.3","4.3.0","4.3.3","4.3.4","4.3.5","4.3.6","4.3.8","4.4.0","4.4.1"],"block_files":[],"assets_screenshots":{"screenshot-0.jpg":{"filename":"screenshot-0.jpg","revision":3594678,"resolution":"0","location":"assets","locale":"","width":1302,"height":2278},"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3594678,"resolution":"1","location":"assets","locale":"","width":1254,"height":2341},"screenshot-10.png":{"filename":"screenshot-10.png","revision":3594678,"resolution":"10","location":"assets","locale":"","width":1320,"height":2868},"screenshot-11.png":{"filename":"screenshot-11.png","revision":3594678,"resolution":"11","location":"assets","locale":"","width":1320,"height":2868},"screenshot-12.png":{"filename":"screenshot-12.png","revision":3594678,"resolution":"12","location":"assets","locale":"","width":1320,"height":2868},"screenshot-13.png":{"filename":"screenshot-13.png","revision":3594678,"resolution":"13","location":"assets","locale":"","width":1320,"height":2868},"screenshot-14.png":{"filename":"screenshot-14.png","revision":3594678,"resolution":"14","location":"assets","locale":"","width":1320,"height":2868},"screenshot-15.png":{"filename":"screenshot-15.png","revision":3594678,"resolution":"15","location":"assets","locale":"","width":1320,"height":2868},"screenshot-16.png":{"filename":"screenshot-16.png","revision":3594694,"resolution":"16","location":"assets","locale":"","width":2560,"height":1271},"screenshot-17.png":{"filename":"screenshot-17.png","revision":3594694,"resolution":"17","location":"assets","locale":"","width":2560,"height":1271},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3594678,"resolution":"2","location":"assets","locale":"","width":1312,"height":2336},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3594678,"resolution":"3","location":"assets","locale":"","width":1320,"height":2868},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3594678,"resolution":"4","location":"assets","locale":"","width":1320,"height":2868},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3594678,"resolution":"5","location":"assets","locale":"","width":1320,"height":2868},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3594678,"resolution":"6","location":"assets","locale":"","width":1320,"height":2868},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3594678,"resolution":"7","location":"assets","locale":"","width":2560,"height":1271},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3594678,"resolution":"8","location":"assets","locale":"","width":2560,"height":1271},"screenshot-9.png":{"filename":"screenshot-9.png","revision":3594678,"resolution":"9","location":"assets","locale":"","width":2560,"height":1271}},"screenshots":{"1":"Mobile booking flow.","2":"Services, categories, staff, and business-hour settings.","3":"Brand and booking-form customization.","4":"Pro integrations and growth tools."}},"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-0.jpg?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-1.jpg?rev=3594678","caption":"Mobile booking flow."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-2.jpg?rev=3594678","caption":"Services, categories, staff, and business-hour settings."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-3.png?rev=3594678","caption":"Brand and booking-form customization."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-4.png?rev=3594678","caption":"Pro integrations and growth tools."},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-5.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-6.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-7.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-8.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-9.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-10.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-11.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-12.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-13.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-14.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-15.png?rev=3594678","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-16.png?rev=3594694","caption":""},{"src":"https:\/\/ps.w.org\/yatoon-booking-system\/assets\/screenshot-17.png?rev=3594694","caption":""}],"raw_content":"<!--section=description-->\n<p><strong><a href=\"https:\/\/yatoon.com\/bookingdemo\/\">Try the live demo &#8594;<\/a><\/strong> &mdash; see the full client booking experience before you install anything.<\/p>\n\n<p>Yatoon Salon Booking is a mobile-first appointment calendar for salons, spas, nail studios, and other appointment-based beauty businesses.<\/p>\n\n<p>The Free edition includes local appointment scheduling, services and categories, staff availability, business hours and closed dates, a responsive booking form, customer email notifications, custom form fields, basic customer and booking management, brand colors, Gutenberg blocks, Elementor widgets, and privacy export\/erasure tools.<\/p>\n\n<p>The optional Pro upgrade adds Square and Vagaro workflows, online payments and deposits, Google Calendar, SMS, staff and customer portals, waitlist automation, packages, memberships, loyalty, broadcasts, advanced automations, and additional business-growth tools.<\/p>\n\n<p>Common shortcodes:<\/p>\n\n<ul>\n<li><code>[yatoon_booking]<\/code> - full booking form<\/li>\n<li><code>[yatoon_service_menu]<\/code> - visual service menu with Book buttons<\/li>\n<li><code>[yatoon_customer_portal]<\/code> - client self-service portal (Pro)<\/li>\n<li><code>[yatoon_staff_portal]<\/code> - staff schedule portal (Pro)<\/li>\n<li><code>[yatoon_growth_storefront]<\/code> - package and membership storefront (Pro)<\/li>\n<\/ul>\n\n<p>Official downloads, updates, licensing, and support are provided through https:\/\/yatoon.com.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20square%3F\"><h3>Does this work with Square?<\/h3><\/dt>\n<dd><p>The Free edition provides local scheduling. Square sync and Square payment workflows require Pro.<\/p><\/dd>\n<dt id=\"does%20this%20include%20staff%20and%20customer%20portals%3F\"><h3>Does this include staff and customer portals?<\/h3><\/dt>\n<dd><p>Staff and customer self-service portals require Pro.<\/p><\/dd>\n<dt id=\"what%20shortcodes%20are%20included%3F\"><h3>What shortcodes are included?<\/h3><\/dt>\n<dd><p>Free includes <code>[yatoon_booking]<\/code> and <code>[yatoon_service_menu]<\/code>. Portal and growth-storefront shortcodes require Pro.<\/p><\/dd>\n<dt id=\"is%20there%20a%20demo%20i%20can%20try%20before%20installing%3F\"><h3>Is there a demo I can try before installing?<\/h3><\/dt>\n<dd><p>Yes. Try the full client booking flow at https:\/\/yatoon.com\/bookingdemo\/ &mdash; no account or installation required.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20the%20block%20editor%20%28gutenberg%29%20and%20elementor%3F\"><h3>Does this work with the block editor (Gutenberg) and Elementor?<\/h3><\/dt>\n<dd><p>Yes. Every shortcode (booking form, service menu, gallery, catalog, reviews, and both portals) is also available as a native Gutenberg block and a native Elementor widget, with the same options available either way.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>4.4.1<\/h4>\n\n<ul>\n<li>Added a guided Square recovery center with sync, health review, failed-job retry, and privacy-safe diagnostics.<\/li>\n<li>Improved Square health reporting with stale-sync detection and latest webhook status.<\/li>\n<li>Added clearer, actionable Change Services messages for closing hours, breaks, staff conflicts, and temporary Square verification failures.<\/li>\n<li>Improved failed background-job recovery and kept administrators on the Operations page after retrying a job.<\/li>\n<li>Added immediate reference-photo upload feedback with Uploading, Uploaded, and retry guidance before booking confirmation.<\/li>\n<li>Bound each uploaded reference photo to its individual guest and service so multi-guest custom designs remain separate.<\/li>\n<li>Updated Staff Portal appointment details to show and preview every service's own reference photo.<\/li>\n<li>Prevented iPhone Safari from leaving the booking form zoomed after entering customer details.<\/li>\n<li>Kept Square custom-design segments under their original manicure\/service name and repaired legacy Staff Portal labels.<\/li>\n<li>Added a complete confirmation-page receipt with per-service time, staff, duration, price, and clear Google\/Apple calendar actions.<\/li>\n<li>Expanded the setup, caching, recovery, upgrade, and multi-store validation documentation.<\/li>\n<li>Added a 4.4.1 release checklist covering Plugin Check, Square, service changes, mobile browsers, and rollback safety.<\/li>\n<\/ul>\n\n<h4>4.4.0<\/h4>\n\n<ul>\n<li>Resolved Plugin Check findings for Block API v3, translation placeholder documentation, ICS feed escaping, plugin\/readme naming, and documented real-time custom-table queries.<\/li>\n<li>Fixed Change Services to show the complete service and main-variation catalog.<\/li>\n<li>Removed category-only Whole service choices and blocked forged parent-service submissions.<\/li>\n<li>Enforced closing hours and breaks for service changes in both Square and Local modes.<\/li>\n<li>Added live eligible-staff choices for each changed service with a final conflict recheck before saving.<\/li>\n<li>Fixed duplicate local service rows after successful Square appointment updates and repairs legacy duplicates during reconciliation.<\/li>\n<li>Added stable Square update idempotency, seven-day health trends, and a privacy-safe copyable technical summary.<\/li>\n<li>Improved public management security, dialog keyboard\/focus behavior, reduced-motion support, and admin visual consistency.<\/li>\n<li><p>Split service-catalog and health-history responsibilities into dedicated modules and expanded release\/security\/integration gates.<\/p><\/li>\n<li><p>Added a final Change Services safety lock with business-hours, break, Closed Date, staff, shared-resource, and immediate pre-save validation.<\/p><\/li>\n<li>Added Square sync and webhook health, failed-job recovery, upgrade snapshots, migration state, rollback controls, and privacy-safe diagnostics to Operations.<\/li>\n<li>Split change-safety and release-safety responsibilities into dedicated modules and expanded responsive Operations UI components.<\/li>\n<li><p>Added a repeatable multi-store staging validation kit for Square Calendar\/POS workflows.<\/p><\/li>\n<li><p>Fixed false pending-confirmation messages after Square had already applied a service\/staff change, and corrected multi-service appointment time ranges on Manage Booking.<\/p><\/li>\n<li>Bundled the booking frontend into one production CSS request and one production JavaScript request while preserving readable component sources in debug mode.<\/li>\n<li>Added full service-to-checkout browser regression coverage for Chromium desktop, Chromium mobile, and WebKit mobile.<\/li>\n<li>Centralized public request identity, phone normalization, and throttling across booking, contact, waitlist, and OTP endpoints.<\/li>\n<li>Added composite booking indexes for staff calendars, locations, status reports, and reminder processing on large datasets.<\/li>\n<li>Improved keyboard operation, dialog semantics, focus states, long translated labels, and dynamic button safety.<\/li>\n<li>Updated Spanish, Vietnamese, and Simplified Chinese catalogs and rebuilt their MO files.<\/li>\n<li>Expanded release checks for DST boundaries, webhook signatures, package tiers, production bundles, and accessibility basics.<\/li>\n<\/ul>\n\n<h4>4.3.9<\/h4>\n\n<ul>\n<li>Corrected Free\/Pro package identity and WordPress.org metadata.<\/li>\n<li>Consolidated the restored category navigation into the production asset build and added cross-browser regression checks.<\/li>\n<li>Improved visual consistency, responsive behavior, accessibility markup, localization, and reduced-motion output.<\/li>\n<li>Reduced production asset weight and added release validation for both package tiers.<\/li>\n<\/ul>\n\n<h4>4.3.8<\/h4>\n\n<ul>\n<li>Fixed the primary button color\/radius\/font-size CSS variables not being picked up by the base booking-widget styles (they were being silently overridden by a stale default further down the stylesheet cascade).<\/li>\n<li>Fixed the Button Radius, Card Radius, and Font Family fields in Settings saving to option names the front end never read.<\/li>\n<li>Fixed a duplicate, hardcoded 999px button radius in yatoon-ui-polish.css that was overriding the Brand &amp; Colors radius setting regardless of its value.<\/li>\n<li>Consolidated four duplicate <code>:root<\/code> blocks in frontend.css into one, removing a class of hard-to-trace styling conflicts (no visual change).<\/li>\n<li>Added a real \"Install app\" prompt to the Staff Portal (Android\/Chrome auto-prompt, iOS manual instructions), replacing a captured-but-unused browser event; polished the install banner and menu copy to lead with the benefit.<\/li>\n<li>Added subtle motion polish: service\/option cards now fade in on render and selected cards\/options\/time-slots get a brief selection pop, both fully disabled under prefers-reduced-motion.<\/li>\n<li>Added a note in Brand &amp; Colors pointing out that unsaved-looking visual changes are usually a caching plugin\/CDN, not a lost setting.<\/li>\n<\/ul>\n\n<h4>4.3.7<\/h4>\n\n<ul>\n<li>Fixed the global database schema version so fresh installs and upgrades from 4.2.x, 4.3.3, 4.3.4, and 4.3.5 reliably run all current schema repairs.<\/li>\n<li>Added automated release regression coverage for fresh installs, supported upgrades, local booking lifecycle, timezone\/DST boundaries, admin checkbox repaint behavior, and large-data performance.<\/li>\n<li>Verified compatibility with WordPress 7.0.2, 6.9.5, and 6.8.6, including 5,000-client and 50,000-booking performance fixtures.<\/li>\n<\/ul>\n\n<h4>4.3.6<\/h4>\n\n<ul>\n<li>Added booking funnel analytics, an audit log, an email-delivery log, and secure ICS calendar subscription feeds for staff and business calendars.<\/li>\n<li>Added client timezone capture and DST-aware scheduling data.<\/li>\n<li>Added configurable staff commissions, tip allocation, and inventory tracking with low-stock alerts.<\/li>\n<li>Added multi-location bookings with shared or location-specific resource capacity checks (e.g. a limited number of chairs or stations).<\/li>\n<li>Added an \"Any Staff\" assignment strategy that ranks eligible staff instead of assigning arbitrarily.<\/li>\n<li>Added metadata-driven (block.json) Gutenberg blocks, an accessible booking popup dialog, and ready-made page patterns (booking landing page, manage-booking page, popup call-to-action).<\/li>\n<li>Added optional service\/staff\/category and landing-mode parameters to the booking shortcode and block (not yet wired up to the booking flow itself in this release).<\/li>\n<li>Fixed the ratings widget's star icon rendering as a literal question mark instead of a star.<\/li>\n<li>Fixed the base bookings table definition missing two columns (reminder_sent, review_requested) that a later repair step already expected to exist.<\/li>\n<li>Fixed the appointment summary sidebar showing only 4 steps while the progress bar above it showed 5, by splitting its combined \"Service &amp; Options\" row to match.<\/li>\n<\/ul>\n\n<h4>4.3.5<\/h4>\n\n<ul>\n<li>Added native Gutenberg blocks and Elementor widgets for the booking form, service menu, gallery, catalog, reviews, staff portal, and customer portal, with live editor previews for both.<\/li>\n<li>Fixed \"Change Services\" and recurring appointments silently assigning a service to a staff member who has that day off, because the availability check only looked for a conflicting booking and never checked the staff member's own time off (the main booking form already checked this correctly; only these two paths were missing it).<\/li>\n<li>Fixed the mobile step indicator showing \"Step X of 4\" while a separate 5-dot progress indicator on the same screen showed 5 steps.<\/li>\n<li>Fixed an unintended drop shadow behind the plain \"Step X of Y\" text label on the mobile booking flow.<\/li>\n<li>Tightened the left\/right edge margins on the mobile booking flow by about 30%.<\/li>\n<li>Made the live demo link (https:\/\/yatoon.com\/bookingdemo\/) actually visible on the plugin page -- it was only present as a non-standard readme header field that WordPress.org does not render anywhere.<\/li>\n<\/ul>\n\n<h4>4.3.4<\/h4>\n\n<ul>\n<li>Fixed checkboxes in Bookings, Staff, Messages, Loyalty, Services, and Clients not showing their checkmark until clicking elsewhere, even though the selection itself worked correctly (a rare browser repaint issue on the native checkbox element after other row changes in the same click).<\/li>\n<li>Fixed a JavaScript syntax error on the Bookings page (an unescaped apostrophe in a Square-sync status message) that silently broke that script block on any site where it triggered.<\/li>\n<li>Removed leftover CSS\/JS workarounds from earlier debugging attempts that were based on an incorrect diagnosis and were not fixing anything (compositing hints, absolute-positioned checkbox column on Services).<\/li>\n<\/ul>\n\n<h4>4.3.3<\/h4>\n\n<ul>\n<li>Internal: Pro and Free now share a single codebase, using the plugin's existing license check to gate the one feature that used to only exist in a separately maintained Pro file (customer self-service Change Services). No behavior change for existing installs.<\/li>\n<li>Polish: fixed the top bar Refresh\/Sign out buttons using bare letters as icons instead of real icons.<\/li>\n<li>Polish: reduced excess whitespace on the mobile booking page (bottom clearance and side margins were wider than needed).<\/li>\n<li>Reviewed the staff portal checkout flow and other admin pages for the same dead-button issue found in Services - none found.<\/li>\n<li>Fixed the actual root cause of the \"Reuse existing item\" picker only showing one line per service: sites running since before a database column (square_version) was added never got that column added to their database, so any query touching it failed silently. Added an automatic repair that runs on every page load.<\/li>\n<li>Fixed a few mobile display issues: a truncated \"Customers\" nav label, inconsistent button capitalization on the confirmation page, \"Booking(s)\"\/\"email(s)\" not pluralizing correctly, and a barely-visible \"Change Services\" button on the customer's manage-booking page.<\/li>\n<\/ul>\n\n<h4>4.3.2<\/h4>\n\n<ul>\n<li>Fixed the \"Reuse existing item\" picker so each service's own options actually render grouped directly under it (a group-label bug was silently merging every service back into one flat list).<\/li>\n<li>Fixed a dead \"Delete\" button in the admin Services list that had no click handler.<\/li>\n<li>Added clearer \"Saving...\" \/ \"Deleting...\" feedback on a few admin actions that lacked it.<\/li>\n<li>Minor empty-state copy polish.<\/li>\n<li>Fixed the customer \"Manage My Booking\" page showing stale service\/staff\/time after a change; it now re-checks the live Square booking on every page view.<\/li>\n<li>Change Services no longer lets customers pick a staff member who can't perform the chosen service; the original staff member is kept when possible, otherwise the server assigns someone qualified.<\/li>\n<li>Staff portal session security hardening for save\/cancel\/status-update actions and loyalty lookups, with matching client-side fixes so staff aren't locked out.<\/li>\n<li>Fixed a pre-existing client-search bug in the staff portal booking editor.<\/li>\n<li>Rate limiting extended to more customer- and payment-facing endpoints.<\/li>\n<li>Added a desktop step-summary accordion and general visual refresh to the booking form.<\/li>\n<li>Fixed add-on option pricing being added on top of the base service price.<\/li>\n<li>Setup wizard first screen simplified; integration credentials moved to Settings.<\/li>\n<li>WordPress admin\/security notices no longer hidden inside Yatoon admin pages.<\/li>\n<\/ul>\n\n<h4>4.3.0<\/h4>\n\n<ul>\n<li>Introduced a unified responsive design system across customer, staff, service-menu, and admin experiences while preserving the proven 4.2.3 booking-page presentation.<\/li>\n<li>Simplified the admin navigation into Today, Customers, Business, Growth, Tools, and Settings groups.<\/li>\n<li>Restored the 4.2.3 booking layout: the full service list remains visible and category shortcuts jump to sections without hiding other services.<\/li>\n<li>Preserved the original service cards, spacing, summary panel, and green Read more link while making descriptions reliably expand and collapse in place.<\/li>\n<li>Improved dialog, keyboard, screen-reader, search-label, and menu-state behavior without replacing the established booking-page styling.<\/li>\n<li>Added staff self-service profile editing for name, bio, and calendar color.<\/li>\n<li>Added save progress, profile retry states, and a collapsible persistent admin navigation that always reveals the current section.<\/li>\n<li>Hardened customer OTP login with hashed codes, per-session\/IP attempt limits, session rotation, and complete logout cleanup.<\/li>\n<li>Added WordPress personal-data export and erasure support for customer and booking records.<\/li>\n<li>Scoped booking and staff service workers to their own portal paths and cleans up legacy root registrations.<\/li>\n<li>Rebuilt production CSS and JavaScript assets with real minification.<\/li>\n<\/ul>\n\n<h4>4.2.3<\/h4>\n\n<ul>\n<li>Service menu prices now display \"From\" for clearer variant pricing.<\/li>\n<li>Service menu cards now link directly into the booking flow with the selected service.<\/li>\n<li>Admin shell scoping fixed so other Yatoon plugins keep their own WordPress sidebar.<\/li>\n<\/ul>\n\n<h4>4.2.2<\/h4>\n\n<ul>\n<li>Plugin Check cleanup, Pro package hardening, and packaging fixes.<\/li>\n<\/ul>\n\n<h4>4.2.1<\/h4>\n\n<ul>\n<li>Credential encryption, security notes, translation updates, and compatibility fixes.<\/li>\n<\/ul>\n\n<h4>4.2.0<\/h4>\n\n<ul>\n<li>Square payment suite, staff portal updates, booking flow refinements, and AI-ready helpers.<\/li>\n<\/ul>","raw_excerpt":"Mobile-first appointment booking for salons and spas, with local scheduling, staff availability, notifications, and an optional Pro upgrade.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/286050","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=286050"}],"author":[{"embeddable":true,"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/yatoon"}],"wp:attachment":[{"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=286050"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=286050"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=286050"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=286050"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=286050"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lug.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=286050"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}