=== Sweeplo Cleaning Booking ===
Contributors: wpsaki
Tags: booking, form, cleaning, appointment, service
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 3.2.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Multi-step cleaning service booking form with dynamic per-service options, admin settings, email notifications, and dashboard management.

== Description ==

Sweeplo Cleaning Booking provides a polished, multi-step booking experience for cleaning businesses. Customers select services, configure options, enter contact details, and review a summary before submitting.

**Features:**

* Multi-step booking form via shortcode `[sweeplo_booking_form]`
* Per-service options and optional multi-select add-ons
* Vehicle and formula sections with conditional display logic
* Fully configurable services, vehicles, formulas, labels, and translations from the admin
* Booking records stored as a custom post type in the WordPress dashboard
* Optional email notifications on new bookings
* Configurable contact phone number on the success screen

== Installation ==

1. Upload the `sweeplo-cleaning-booking` folder to the `/wp-content/plugins/` directory, or install through the WordPress Plugins screen.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Go to **Bookings → Settings** to configure services, labels, and email options.
4. Add the shortcode `[sweeplo_booking_form]` to any page or post.

== Frequently Asked Questions ==

= What shortcode do I use? =

Place `[sweeplo_booking_form]` on any page where you want the booking form to appear.

= Does this plugin store personal data? =

Yes. When a customer submits a booking, the plugin stores their name, phone number, email address, physical address, and optional message as booking records (`sweeplo_booking` post type) in your WordPress database.

= Does the plugin send data to third parties? =

No. All data stays on your WordPress site. Email notifications are sent only to the recipient email you configure in the plugin settings.

= Can I customize the form text? =

Yes. Use **Bookings → Settings** to edit form labels, button text, and translations without touching code.

= How do privacy export and erasure work? =

WordPress privacy tools can find bookings by the requester's email address. Bookings can also be matched by phone number when the identifier is a phone number.

== Screenshots ==

1. Booking settings — configure services, vehicles, formulas, labels, and email options
2. Add the `[sweeplo_booking_form]` shortcode to any page
3. Frontend booking form — step 1 service selection

Plugin icons and banners are included in `assets/images/` for upload to the WordPress.org SVN `assets/` folder after approval.

== Changelog ==

= 3.2.2 =
* Sanitize POST input at read time instead of returning raw values
* Validate JSON payloads before decode and whitelist booking data before storing in post meta
* Harden admin settings sanitization with isset checks and icon allowlists
* Require at least one valid service on booking submission

= 3.2.1 =
* Plugin Check compliance fixes (escaping, input validation, wp_date)
* Updated tested up to WordPress 7.0

= 3.2.0 =
* WordPress.org release preparation
* English-only default labels, services, and form text
* Bundled CSS and fonts locally (no external CDN dependencies)
* Added internationalization support and privacy tools integration
* Added configurable contact phone setting
* Added uninstall cleanup routine

= 3.1.1 =
* Previous release with per-service add-ons and dynamic options

== Upgrade Notice ==

= 3.2.2 =
Security hardening for booking form POST and JSON handling.

= 3.2.1 =
Plugin Check compliance and WordPress 7.0 compatibility update.
