=== Yatoon Salon Booking & Appointments ===
Contributors: yatoon, freemius
Tags: booking, appointments, salon, spa, beauty
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 4.7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Salon booking for WordPress with local scheduling, reminders, and customer self-service.

== Description ==

**Run your salon's bookings, schedules, payments, and customer relationships from WordPress.**

Yatoon gives salons a polished booking experience for clients and a practical local booking toolkit for the team. Clients choose services, add-ons, professionals, dates, and times on mobile; staff manage the day from WordPress.

**[Try the live booking demo](https://yatoon.com/bookingdemo/)** - no account or installation required.

**Watch the complete mobile booking demo:**

https://www.youtube.com/watch?v=QFeTBgVERaE

Built for nail salons, hair salons, barbershops, spas, beauty studios, and other appointment-based businesses. Yatoon has also been used for daily bookings at a real nail salon for more than a year.

**Local-first workflow:** Free keeps scheduling, availability, customer records, and bookings inside WordPress. External payment, calendar, messaging, and platform connections are Pro features.

= What Free includes =

* Local WordPress scheduling, availability checks, customer records, notifications, and booking management
* Mobile booking for services, options, professionals, dates, times, customer details, and confirmation
* Customer self-service for reviewing, rescheduling, cancelling, and rebooking appointments
* Staff calendar workflows with mobile rescheduling, temporary breaks, shared-resource checks, and capability-based Yatoon roles
* Services, categories, images, variations, add-ons, pricing, staff qualifications, schedules, breaks, and closed dates
* Waitlist, service menu, customer portal, staff portal, booking blocks, Elementor, and shortcode integrations
* Customer-facing AI Chat when WordPress AI Client and a provider are connected and Chat is enabled by an administrator

Third-party integrations are optional and require their own accounts, credentials, supported regions, and provider terms. Local mode continues to work inside WordPress when an external provider is unavailable.

= What customers experience =

* A mobile booking flow for services, variations, add-ons, professionals, date, time, customer details, and confirmation
* Several services or guests in one booking journey, with separate staff choices and reference photos where enabled
* Clear service durations, prices, appointment summaries, directions, and calendar actions
* Secure self-service for viewing, rescheduling, cancelling, rebooking, and eligible service changes
* A branded service menu, discovery storefront, portfolio, favorites, quick rebooking, and lightweight installable customer app

= What your team manages =

* Services, categories, images, variations, add-ons, pricing, staff qualifications, and schedules
* Business hours, staff schedules, breaks, time off, closed dates, and availability rules
* Appointment calendar, client records, notes, reports, notifications, and waitlist
* Mobile-friendly rescheduling, temporary break controls, shared-resource checks, and role-specific staff workspaces

Before a booking or sensitive change is saved, Yatoon rechecks staff qualification, schedules, breaks, closed dates, existing appointments, shared resources, and relevant external availability. If a time is taken during checkout, the customer keeps their details and gets a clear recovery path.

= Add it to any WordPress page =

Use the native block, Elementor widget, or one of these shortcodes:

* `[yatoon_booking]` - complete booking form
* `[yatoon_service_menu]` - visual service menu with Book buttons
* `[yatoon_customer_portal]` - customer self-service portal
* `[yatoon_staff_portal]` - mobile staff schedule portal
* `[yatoon_discovery]` - discovery storefront and booking entry points

== Installation ==

1. Install and activate **Yatoon Salon Booking & Appointments**.
2. Complete **Yatoon Booking > Setup Wizard**.
3. Add your services, prices, durations, staff, schedules, business hours, breaks, and closed dates.
4. Connect only the payment, calendar, messaging, or platform integrations your workflow needs.
5. Add the booking block, Elementor widget, builder element, or `[yatoon_booking]` shortcode to a public page.
6. Run a test booking, customer self-service, and staff workflow before launch.
7. Exclude booking and portal pages from full-page caching and delayed JavaScript optimization.

== Screenshots ==

1. Mobile booking flow: services, add-ons, staff, date, time, and a clear appointment summary.
2. Service menu with categories, images, durations, prices, and Book buttons.
3. Staff selection with Any Staff, preferred professional, and real available openings.
4. Multi-service and group booking for several services or guests in one visit.
5. Confirmation receipt with services, times, prices, directions, and calendar actions.
6. Customer self-service for reviewing, rescheduling, cancelling, and rebooking.
7. Mobile Staff Portal with a practical day schedule.
8. Admin calendar, service catalog, customer records, and appointment management.
9. Booking confirmation with services, times, prices, directions, and calendar actions.
10. Customer self-service and mobile staff booking screens.

== Frequently Asked Questions ==

= What does Pro add? =

Pro adds unlimited staff, two-way Square Appointments synchronization, one-way Vagaro import with booking creation, online payments and deposits, no-show tracking, SMS and calendar integrations, advanced customer self-service, growth tools, multi-location operations, and priority support.

= Does Yatoon require Square? =

No. Yatoon Free runs in Local mode inside WordPress. Square, Vagaro, Stripe, PayPal, Twilio, Google Calendar, and Outlook Calendar are optional integrations.

= How does AI Chat connect, and how fast is it? =

AI Chat uses the WordPress AI Client and the provider connections configured by the site owner. It does not use a separate AI Relay or expose provider credentials in the browser. The chat keeps the complete provider response and shows a clear sending state; it does not use fake character-by-character playback. The current public WordPress AI Client returns a complete text result rather than exposing a stable token-stream API to plugins, so this release does not claim token-by-token streaming.

= Are AI features enabled automatically? =

No. New installations keep Chat Concierge, the booking-form Style Assistant, natural-language rescheduling, and reply drafts off until an administrator enables each feature. Connecting a provider or entering an API key does not publish an AI widget by itself. Existing sites keep their saved settings when updating.

= What does the Square integration cover? =

Yatoon Pro supports two-way Square Appointments synchronization - creating, updating, and cancelling Square bookings and receiving Square webhooks - plus Square online payment, deposit, and refund options. Point of sale is limited to recording that an appointment was paid in Square POS or Tap to Pay so it settles correctly in Yatoon's own reports and invoices; Yatoon does not replace the Square point-of-sale application.

= What exactly does the Vagaro integration do? =

It reads services, staff, and availability from Vagaro and creates new appointments in Vagaro when a customer books. It is an import plus booking creation, not two-way synchronization: Yatoon does not push Vagaro reschedules or cancellations, receive Vagaro webhooks, or run a scheduled re-pull.

= Can customers book more than one service or guest? =

Yes. Each guest can have separate services, staff assignments, timing, and reference photos while remaining part of one booking journey.

= Does Pro support deposits and online payments? =

Yes. Configure the provider and deposit rules required by your business, then test the complete payment and refund workflow in the provider's test environment before going live.

= Does the no-show rule charge the customer automatically? =

It requires a deposit; it does not take money on its own. Once a customer reaches your threshold, their next booking is treated as a deposit booking and checkout asks for the deposit amount configured under Payments, through the gateway configured there. If no deposit gateway is set up, the rule can only flag the customer.

= How does Yatoon protect against schedule conflicts? =

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.

= Can customers and staff manage appointments from a phone? =

Yes. Customers can use the lightweight booking app and Customer Portal, while the Staff Portal is designed for mobile daily operations.

= Does Yatoon work with page builders? =

Yes. Major booking surfaces are available through Gutenberg blocks, Elementor widgets, shortcodes, and adapters for Bricks, Beaver Builder, Divi, and Brizy.

= Is Yatoon multilingual? =

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, and site owners can edit their own service names, descriptions, policies, and labels.

= Where can I get help? =

Downloads, licensing, updates, and priority support are available through [Yatoon.com](https://yatoon.com/). Copy the privacy-safe technical summary from Operations when reporting an integration problem.

== External Services and Privacy ==

**Google Maps - `www.google.com/maps`.** The confirmation page displays a lazy-loaded map when a business address is configured. The preview sends the public business address and normal browser connection information to Google; it does not include customer names, email, appointment details, or manage tokens. Clicking the map opens Google Maps directions to that address. See [Google Privacy](https://policies.google.com/privacy) and [Google Terms](https://policies.google.com/terms).

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.

Every external service Yatoon can contact is listed below with what is sent, when it is sent, and the provider's own policies. Nothing in this list is contacted unless the corresponding feature is switched on by an administrator.

**Fonts.** Yatoon does not download fonts from any remote host, and does not bundle font files either. Choosing a font family under Brand & Colors only adds that family name to the CSS font stack; otherwise the system font is used.

**Yatoon push relay (Cloudflare Worker) - `https://yatoon-api.yatoon.workers.dev`.** Optional and disabled by default. When explicitly enabled, Yatoon sends a signed, pseudonymous browser push subscription endpoint and a generic event type to this Cloudflare Worker. Customer names, contact details, services, appointment times, and notes are never sent. See [Yatoon](https://yatoon.com/) and the [Cloudflare Privacy Policy](https://www.cloudflare.com/privacypolicy/).

**Freemius - `https://api.freemius.com`.** Used for optional account connection, licensing, plugin updates, and upgrade screens. It is contacted only when an administrator opts in or uses one of those features. See [Freemius Privacy Policy](https://freemius.com/privacy/) and [Freemius Terms](https://freemius.com/terms/).

**Provider integrations.** Each service below is contacted only when an administrator has configured its credentials and switched the corresponding feature on, and only while performing the action that needs it. Provider credentials are stored encrypted in WordPress; Yatoon diagnostics must not include them.

**Free package providers.** Free can use the following optional services when the site owner enables them:

* Google Maps - `www.google.com/maps` (confirmation-page directions map)
* OpenAI - `api.openai.com` (optional AI assistant)
* Anthropic - `api.anthropic.com` (optional AI assistant)
* Google Gemini - `generativelanguage.googleapis.com` (optional AI assistant)
* Cloudflare Turnstile - `challenges.cloudflare.com` (optional booking-form bot check)

Before any customer text can reach an AI provider, an administrator must enable the relevant AI feature, and Yatoon requires explicit one-time customer consent and screens the message for sensitive data. Customer-facing AI is off by default on new installations, and connecting a provider alone does not publish it.

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.

== Changelog ==

= 4.7.4 =
* Added a Daily Staff Time Grid with one shared local-time axis across employee columns, precise appointment placement and duration, overlap lanes, break and unavailable backgrounds, shared-resource visibility, and a current-time line. Desktop moves continue through existing availability and server-side reschedule validation; mobile keeps a single-employee grid with Move / Reschedule fallback.
* Made appointment cards quicker to inspect: hover-capable desktop pointers show the existing quick preview with a short handoff delay, while desktop clicks, touch taps, and keyboard activation open the existing full appointment details modal. Move / Reschedule remains in the card action menu, and calendar source, minified, RTL, and manifest assets were rebuilt.
= 4.7.3 =
* Restored the customer-facing AI Chat as a shared Free and Pro feature. Both packages now load one canonical Concierge class and six shared traits; customer chat remains available in Free when an administrator connects a provider and enables it.
* Kept customers inside AI Concierge when final contact validation rejects a phone number, email address, or customer name. The editable contact form now reopens with the entered details preserved.
* Fixed typed chat messages being accepted before the AI consent box was checked. The consent gate now covers every typed message before it is added to the conversation.
* Improved multi-person chat booking so shared services, guest names, selected options, prices, durations, and professionals remain correct through review and confirmation.
* Improved the mobile chat control, service and option selection, running visit summary, and recovery when a customer changes a service, professional, date, or time.
* Added clearer local booking workflows for mobile staff rescheduling, temporary breaks, shared-resource checks, and capability-based Yatoon roles.
* Completed the 4.7.3 release metadata and asset-manifest updates, and removed obsolete Concierge build artifacts from both release packages.

= 4.7.2 =
* Added the customer-facing AI Chat to Free and Pro as an opt-in feature. Customers can describe what they want, review real services and availability, and continue through the existing booking flow.
* Hardened AI chat input, consent handling, sensitive-data screening, bounded requests, multilingual responses, and provider rate limits.
* Improved customer self-service, responsive booking layouts, availability checks, notifications, and local booking reliability.
