=== Appointment Booking with Zoom, PayPal & Unlimited Staff – BookWellNow ===
Contributors: bookwellnow
Tags: appointment booking, booking plugin, booking system, scheduling, calendar booking
Requires at least: 5.3
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 3.0.6
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Free WordPress appointment booking plugin with unlimited staff, booking calendar, shifts, customer panel, Zoom Meeting and PayPal Checkout.

== Description ==

BookWellNow is a free WordPress appointment booking plugin with a booking calendar, unlimited staff, staff shifts and holidays, a customer panel, and PayPal Checkout — so your clients can schedule and pay online without phone calls or email back-and-forth.

**BookWellNow is a complete appointment booking plugin and scheduling system for WordPress** — with **unlimited staff**, flexible service management, and **PayPal payment gateway** support built in.

== Free Features ==

*  Free Zoom Meeting
*  Free Unlimited Staff Members
*  Free Unlimited Services
*  Free PayPal Payment Gateway
*  Free Staff Shift Management
*  Free Staff Holiday Management
*  Free Customer Panel
*  Free Customer Appointment Cancellation
*  Lightweight & Very Fast Loading
*  Online Appointment Scheduling
*  Booking Calendar Management
*  Mobile-Friendly Booking Experience

---

It helps businesses automate their booking process, manage staff schedules, and accept online appointments with a powerful calendar-based booking system. Add as many staff members as you need, assign services and shifts, and let customers pay online with **PayPal Checkout** (sandbox and live) or offline/manual payment.

Whether you need a **booking plugin, reservation system, scheduling software, or appointment management system**, BookWellNow gives you everything in one place — from staff scheduling and availability control to secure online payments and automated notifications.

---

= Easy to use =

See how quickly you can set up BookWellNow and start accepting online appointments:

[youtube https://www.youtube.com/watch?v=0BYcMaXaDe4]

---

= Shortcodes =

Generate shortcodes from **Book Well Now → Shortcode Generator**, or paste them into any page or post.

**Booking Form Popup Button**

`[bookwell_booking_button]`

Place a book button on service pages, staff pages, landing pages, or sidebars. Clicking it opens the booking popup. You do not need `[bookwell_booking]` on the same page.

* **Service detail page** — pass `service_id` so that service is pre-selected.
* **Staff detail page** — pass `staff_id` to show only that staff member’s services.
* **Date & time faster** — pass both `service_id` and `staff_id` to pre-select service and staff.
* **Button text / style** — use `label` and optional `class`.

Examples:

`[bookwell_booking_button label="Book Now"]`

`[bookwell_booking_button service_id="2" label="Book this service"]`

`[bookwell_booking_button staff_id="1" label="Book with this staff"]`

`[bookwell_booking_button service_id="2" staff_id="1" label="Book appointment"]`

**Booking Form**

`[bookwell_booking]`

Displays the main booking form. Choose **Small Booking Wizard** or **Service List with Popup** in Settings → Appearance (or Shortcode Generator).

Optional attributes: `staff_id`, `service_id`

Examples:

`[bookwell_booking]`

`[bookwell_booking staff_id="1" service_id="2"]`

**Customer Panel**

`[bookwellnow_customer_panel]`

Shows the logged-in customer dashboard (appointments, profile, and cancellation).

---

## 🚀 Accept Online Bookings 24/7

Let your customers book appointments anytime with a modern and easy-to-use booking system.

- Accept bookings online 24/7  
- Eliminate manual scheduling and phone calls  
- Avoid back-and-forth emails  
- Reduce no-shows with automated notifications  

---

## 📅 Complete Booking & Scheduling System

BookWellNow is more than just a booking plugin — it's a full **appointment management system** designed for real businesses.

- Appointment booking system  
- Service booking system  
- Staff scheduling system  
- Calendar booking system  
- Time-slot booking system  
- Availability calendar  

---

## 🔥 Key Features

### 📅 Booking Calendar & Availability
- Interactive calendar booking system
- Real-time availability calendar
- Date & time slot selection
- Prevent double bookings

### 👥 Staff & Service Management
- Unlimited services and bookings
- Staff scheduling and assignment
- Auto-select staff and services
- Multi-service booking system

### ⏰ Advanced Scheduling System
- Custom working hours
- Shift management system
- Break time configuration
- Holiday & special day management
- Flexible scheduling rules

### 🧾 Booking Experience
- Step-by-step booking wizard
- Service list with popup booking form
- Popup book button shortcode for any page
- Smooth frontend booking form
- Clean and modern UI
- Booking form appearance themes

### 👤 Customer Panel (Free)
- Dedicated customer account panel in the free version
- Customers can view their appointments
- Customers can cancel appointments from the panel
- Account login, profile, and booking history management

### 💳 Payments
- Offline / manual payment option
- PayPal Checkout integration (sandbox and live)

### 📩 Notifications & Automation
- Custom email notifications
- Booking confirmations & updates
- Automated scheduling workflow

### 📄 PDF Booking Receipt
- Generate downloadable booking receipts

### 🔒 Security & Reliability
- Built-in spam protection
- Secure booking system

### 🌍 Translation Ready
- Fully multilingual support

---

## 💡 Solve Real Booking Problems

BookWellNow helps you:

- Automate appointment scheduling  
- Avoid double booking  
- Manage staff schedules easily  
- Handle bookings without manual work  
- Save time and increase productivity  
- Provide a better customer booking experience  

---

## 🏢 Who Can Use BookWellNow?

BookWellNow is built for any business that depends on appointments, reservations, or scheduling.

### 🏥 Healthcare & Medical
Doctors, clinics, dentists, therapists, physiotherapists, wellness centers

### 💇 Beauty & Salon Booking
Hair salons, spas, barbershops, makeup artists, skincare clinics

### 🧘 Fitness & Coaching
Gyms, yoga studios, personal trainers, life coaches, fitness centers

### 🎓 Education & Classes
Tutors, coaching institutes, online classes, training centers

### 🏢 Professional Services
Consultants, lawyers, accountants, agencies, freelancers

### 🏠 Local Services
Cleaning services, repair services, electricians, plumbers

### 📸 Creative Professionals
Photographers, videographers, designers

### 🚗 Automotive Services
Car service centers, repair shops, detailing services

### 🏨 Events & Booking
Event planners, wedding planners, workshops, studios

### 🐾 Pet Services
Pet grooming, veterinary clinics, pet trainers

---

## 🔍 Popular Use Cases

- Booking plugin for salon  
- Booking system for clinic  
- Appointment scheduler for consultants  
- Scheduling plugin for coaches  
- Booking system for gyms  
- Booking plugin for photographers  

---

## ⚡ Why Choose BookWellNow?

- Lightweight and fast booking plugin  
- Easy setup and user-friendly interface  
- Powerful scheduling system  
- Works for any industry  
- Ideal free alternative to premium booking plugins  
- Built for real business workflows  

---

= Future Enhancements =

* Google Calendar sync
* SMS notifications
* Advanced reporting
* Multi-location support

= Security and Permissions =

BookWellNow uses capability checks and nonce validation for admin-side settings and actions.

Notification settings are restricted to users with plugin settings permissions and are not intended to be editable by lower-privileged roles.


== Installation ==

1. Upload plugin to `/wp-content/plugins/`
2. Activate plugin
3. Go to BookWellNow in dashboard
4. Add shortcode `[bookwell_booking]` to any page (or use Shortcode Generator for Booking Form / Popup Button shortcodes)

---

== Frequently Asked Questions ==

= How do I accept bookings on my website? =
Use the Booking Form shortcode `[bookwell_booking]` on any page. Generate it from Book Well Now → Shortcode Generator with optional staff/service filters.

= How do I open booking in a popup from a service page? =
Use the Booking Form Popup Button shortcode `[bookwell_booking_button]`. Example: `[bookwell_booking_button service_id="2" label="Book Appointment"]`. Clicking the button opens the same booking popup form.

= Can I manage staff schedules? =
Yes, including shifts, holidays, and working hours

= Can customers book online? =
Yes, 24/7 booking system

= Does the free version include a customer panel? =
Yes. BookWellNow includes a free customer panel where customers can log in, view their appointments, and manage their booking account.

= Can customers cancel appointments themselves? =
Yes. Using the free customer panel, customers can cancel their appointments without needing admin help.

= Does it prevent double booking? =
Yes, built-in availability control

= Can I create multiple services? =
Yes, unlimited services supported

= Does this plugin offer free unlimited staff for appointment booking? =
Yes. BookWellNow includes free unlimited staff members, so you can add your whole team without per-seat limits.

= Can I accept PayPal payments with this appointment booking plugin? =
Yes. PayPal Checkout is built in with sandbox and live mode support, alongside offline and manual payment options.

= Is this a lightweight appointment booking calendar plugin? =
Yes. BookWellNow is optimized for fast loading and includes a booking calendar, time slots, staff shifts, holidays, and a mobile-friendly booking form.

== Third-Party Libraries ==

This plugin bundles the following third-party libraries (see `THIRD-PARTY-LICENSES.txt` for versions and licenses):

* Vue.js (MIT) - https://vuejs.org/
* Element Plus / Element Plus Icons (MIT) - https://element-plus.org/
* Axios (MIT) - https://axios-http.com/
* Qs (BSD-3-Clause) - https://github.com/ljharb/qs
* SortableJS (MIT) - https://sortablejs.github.io/Sortable/
* Chart.js (MIT) - https://www.chartjs.org/
* intl-tel-input (MIT) - https://github.com/jackocnr/intl-tel-input

Bundled minified vendor files (for example `*.min.js`) are third-party libraries, not obfuscated plugin code. Upstream sources are listed in `THIRD-PARTY-LICENSES.txt`.

== External Services ==

= Google Fonts =

When a Google font is selected in appearance settings, the booking form may load fonts from `https://fonts.googleapis.com/` (Google LLC). Browser request data (IP, user agent, requested font) is sent only on pages where the booking form is shown. Privacy: https://policies.google.com/privacy

= PayPal Checkout =

When PayPal is enabled, payments use the PayPal Checkout SDK and Orders API (`https://www.paypal.com/sdk/js`, `https://api-m.paypal.com/`, sandbox API). Booking amount, currency, appointment reference, and standard request headers are sent during checkout. Credentials are stored in WordPress; only the Client ID is exposed on the frontend. Privacy: https://www.paypal.com/us/legalhub/privacy-full

= Zoom Meetings =

When Zoom is enabled (Settings → Integrations), BookWellNow uses Zoom Server-to-Server OAuth (`https://zoom.us/oauth/token`, `https://api.zoom.us/v2/`) to list users and create/delete meetings. Account ID, Client ID, and Client Secret are stored in WordPress. Meeting join/host URLs are saved on appointments. Privacy: https://explore.zoom.us/en/privacy/

== Changelog ==

= 3.0.6 =
* Added Full Width / Half Width setting for Form Fields (admin toolbar + frontend booking layout).
* Adds `bw_field_width` column on form fields table for fresh installs and upgrades.
* Added Week Starts On setting in Settings → General (default: Monday) for booking and admin calendars.
* Styled settings helper/instruction text consistently 
* Locked booking sidebar tabs after a successful booking confirmation.
* Updated translation template and language files.

= 3.0.3 =
* Improved Settings sidebar card navigation and Payment Gateways boxed layout.
* Debug log modal: scrollable log data, fixed header, and pagination footer.
* Zoom field notes moved to info-icon tooltips on service and staff drawers.
* Ensures Zoom database columns and Zoom settings, payment debug log table, and Email Notification Debug Log settings on fresh install and plugin update.
* Added free Zoom Meetings integration (Server-to-Server OAuth) under Settings → Integrations.
* Enable Zoom per staff (assign Zoom user) and per service; meetings are created when appointments are booked.
* Start Zoom from admin appointments / calendar drawer; customers can Join Zoom from the customer panel.
* Email notification placeholders: `%zoom_join_url%`, `%zoom_host_url%`.
* Added Email Notification Debug Logs under Settings → Debug Log (enable, view, download, clear).

= 3.0.1 =
* Added Service List with Popup booking form type (service grid + booking wizard popup).
* Added Booking Form Popup Button shortcode `[bookwell_booking_button]` to open the same booking popup from any page (optional `service_id`, `staff_id`, and `label`).
* Added Customized Form Options: hide service description and show staff designation.
* Form Type can be chosen in Settings → Appearance and in Shortcode Generator (shared setting).
* Shortcode Generator: hide service filter when Service List with Popup is selected.
* Improved single-service catalog card width on desktop and mobile popup close button.
* Seeds appearance form options (`form_type`, `hide_description`, `show_staff_designation`) on fresh install and plugin update.

= 3.0.0 =
* Added free customer panel with login, appointment history, account management, and customer appointment cancellation.
* Added Settings → Customer Panel tab with configurable labels and optional WordPress user creation on booking.
* Improved frontend service list layout on tablet and mobile.
* Service images now generate and store a custom 250×250 medium size URL on upload/save.
* Updated translation template and language files for new strings.

= 2.0.9 =
* Service images now generate and store a custom 250×250 medium size URL on upload/save.
* Customer panel database migration: adds `bw_wp_user_id` column and index on the customers table, seeds default Customer Panel settings, and registers the `bookwellnow-customer` role on fresh install and plugin update.
* Customer panel uses the same dynamic booking form appearance colors, fonts, and button styling.
* Added Settings → Customer Panel tab with “Create WordPress user upon appointment booking”.
* When enabled, bookings create a WordPress role user and link it to the customer record.

= 2.0.6 =
* Added Form Fields admin page to customize booking form customer details (phone, first name, last name, email, note, and terms & conditions) with required, label, placeholder, error message, hide/show, and drag-and-drop order.
* Added dedicated `wp_bookwellab_form_fields` database table with automatic migration from earlier settings storage and legacy Booking Form Labels.
* Frontend Your Details step now uses saved form field settings for visibility, labels, placeholders, and validation.
* Removed duplicate customer field labels from Settings → Booking Form Labels; use Form Fields for those settings instead.
* Fresh installs seed default form fields on activation; upgrades preserve customized labels from older versions.

= 2.0.5 =
* Fixed frontend booking notification emails to match the default appointment status (Approved or Pending), including after PayPal payment confirmation.
* Added public cancel appointment link placeholder (%cancel_appointment_link%) for customer notification emails with a guest-safe cancellation page.

= 2.0.4 =
* Added terms & conditions acceptance checkbox on the frontend booking Your Details step with customizable label text and link URL in Booking Form Labels.
* Fixed frontend phone field country flag and dropdown arrow display.
* Updated translation template and language files for new strings.

= 2.0.3 =
* Fixed design issues in the admin Add/Edit Appointment drawer (required field markers, label spacing, service dropdown width, customer search display, status and payment layout, and price summary placement).
* Added custom admin menu icon.

= 2.0.2 =
* Fixed Designing Issue
* Updated translation template and language files for new strings.

= 2.0.1 =
* Fixed default country and dial code storage so United States and Canada (+1) can be selected correctly.
* Added PayPal unsupported currency admin warning and frontend gateway hiding.
* Fixed setup wizard flash of uncompiled Vue templates on first load.
* Updated translation template and language files for new strings.

= 2.0.0 =
* Major release with PayPal Checkout, payment debug log, and manually payment method.
* Added 10 booking form appearance themes with live apply and frontend cache refresh.
* Improved PayPal currency validation, stale pending cleanup, and payment security hardening.
* Fixed default country vs dial code selection (US and Canada both use +1).
* Improved frontend staff data privacy and setup wizard load experience.

= 1.0.2 =
* Fixed slow Customers admin list loading with large customer counts by paginating customers first and fetching appointment stats only for the current page.
* Improved Appointments admin list pagination.
* Fixed design issues in the front-end booking form.
* Added Day Calendar option.

= 1.0.1 =
* Fixed Dashboard Day Preview segment positioning so appointment bars render at the correct timeline slot.
* Fixed Day Preview timeline range calculation to respect staff working hours (for example 9 AM to 5 PM no longer starts at 8 AM unless data requires it).
* Improved admin day preview time parsing to correctly handle 12-hour and 24-hour formats without reversing AM/PM placement.
* Spam-token storage moved to custom table with reusable DB helpers and safe upgrade cleanup.

= 1.0.0 =
* Initial public release.