=== Nemtly Booking – Events, Appointments & Booking Calendar ===
Contributors: sapayth
Tags: booking, appointments, event calendar, appointment scheduling, booking calendar
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 2.3.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Book appointments and events 24/7 with Stripe payments, Google Calendar sync, reminders, and a customer dashboard. Blocks and shortcodes included.

== Description ==

**Nemtly Booking** lets your customers book appointments and events 24/7 — with real-time availability, Stripe payments, Google Calendar sync, and automated email reminders. Whether you run workshops, manage client consultations, or schedule fitness classes, get a fully functional booking system on your WordPress site in minutes.

### Appointment Scheduling

* Real-time availability with automatic conflict prevention
* Set business hours, buffer times, and capacity limits
* Slot-based events with recurring availability patterns
* Global business hours default — set once in Settings, inherited by all new events
* Customer dashboard with booking history and magic link login

### Event Management

* Create one-time, recurring, and slot-based events
* Category and tag organization for filtering
* Set pricing per event — free or paid with Stripe
* Google Calendar two-way sync — set it up once and forget it

### Customer Experience

* Booking forms with real-time calendar and time slot selection
* Automated email confirmations and reminders to reduce no-shows
* Timezone-aware display — visitors see available times in their local timezone automatically
* CAPTCHA spam protection — optional text math challenge or Cloudflare Turnstile
* Magic link login — no passwords for customers
* Mobile-friendly booking interface

### Gutenberg Blocks, Elementor Widget, and Shortcodes

Build your booking pages with native WordPress blocks, an Elementor widget, or classic shortcodes:

* **Nemtly Events** — Query Loop variation for event listings with inner blocks for date, price, location, and booking trigger
* **Event Calendar** — Interactive calendar with month, week, day, and list views
* **Booking Calendar** — Inline booking widget with date picker, time slots, and checkout
* **Shortcodes** — `[nemtly_event_list]`, `[nemtly_calendar]`, `[nemtly_booking_calendar]`, `[nemtly_booking_form]`, and `[nemtly_booking_dashboard]`

**Elementor Widget** — The Event Calendar widget (month/week/day/list views) is available as a native Elementor widget with full style controls. Drag it onto any Elementor-powered page. Requires Elementor (free).

### For Service Providers

Stop managing bookings via email or phone. Nemtly gives consultants, therapists, and personal trainers a fully automated booking system. Clients book and pay themselves. You get a dashboard of confirmed appointments.

### For Event Organizers

Host workshops, meetups, or conferences. Manage capacity, pricing, recurring dates, and registrations in one place. Display a calendar on your website. Automated confirmations and reminders keep everyone on track.

### For Fitness and Education

Schedule classes, training sessions, or courses. Set capacity limits, recurring slots, and pricing. Students and clients see real-time availability and book 24/7.

### Quick Setup

1. Install and activate the plugin
2. Create your first event or service
3. Add an Event Calendar block or shortcode to any page
4. Start accepting bookings

### Built with WordPress Standards

* WordPress security best practices and PCI-compliant Stripe integration
* Works with any properly coded WordPress theme
* WCAG accessible for an inclusive user experience

### Learn More

* [Nemtly Booking Plugin Page](https://nemtly.com/nemtly-booking/) — features and updates
* [Documentation](https://nemtly.com/nemtly-booking/docs/) — setup guides, API reference, and tutorials

== Installation ==

### Automatic Installation (Recommended)

1. Go to **Plugins > Add New** in your WordPress admin
2. Search for "Nemtly Booking"
3. Click **Install Now** and then **Activate**

### Manual Installation

1. Download the plugin ZIP file
2. Go to **Plugins > Add New > Upload Plugin**
3. Choose the ZIP file and click **Install Now**
4. Activate the plugin

### Getting Started

1. Navigate to **Nemtly Booking** in your admin menu and create your first event — set the date, availability, and pricing
2. Go to **Settings > Payments** to connect Stripe (optional)
3. Add an **Event Calendar** or **Nemtly Events** block to any page — or use the `[nemtly_calendar]` shortcode
4. Customers can now browse events, book, and pay on your site

For detailed configuration — including Stripe setup, email reminders, customer dashboard, block options, and shortcode parameters — visit the plugin settings page after activation.

== Frequently Asked Questions ==

= What are the minimum requirements? =

WordPress 5.8 or higher and PHP 7.4 or higher. No special PHP extensions are required. The plugin works with any properly coded WordPress theme.

= Can I use this for both appointments and events? =

Yes. Nemtly handles one-time appointments, recurring service bookings, and ticketed events all from the same plugin. You do not need separate plugins for events and appointments.

= What payment methods are supported? =

Stripe via Payment Element for online payments — this includes credit cards, Apple Pay, Google Pay, and other methods enabled in your Stripe account. You can also record manual payments for cash, checks, or bank transfers.

= Can I set up recurring availability for appointment slots? =

Yes. Create a recurring pattern like "Every Tuesday and Thursday, 9 AM to 5 PM, 30-minute slots" and the plugin generates available slots automatically.

= Does it sync with Google Calendar? =

Yes. Two-way sync — your WordPress events push to Google Calendar and vice versa. Set it up once in Settings and it stays in sync automatically via OAuth2.

= Can I use it for free events? =

Yes. Pricing is optional per event. You can run free events, paid events, or a mix of both.

= Does it work with my theme? =

Yes. Nemtly Booking follows WordPress coding standards and works with any properly coded theme, including block themes and classic themes.

= Can I display events without the Block Editor? =

Yes. Every block has a shortcode equivalent: `[nemtly_event_list]`, `[nemtly_calendar]`, `[nemtly_booking_calendar]`, `[nemtly_booking_form]`, and `[nemtly_booking_dashboard]`.

= Is there a customer dashboard? =

Yes. Add the `[nemtly_booking_dashboard]` shortcode to any page. Customers log in with a magic link — no passwords needed — and can view their booking history.

= Does it send email reminders? =

Yes. Automated email confirmations go out when a booking is placed, and you can configure reminder emails to send before the event to reduce no-shows.

= Can I charge different prices for different events? =

Yes. Each event has its own pricing settings. Set custom prices per event, or leave pricing blank for free events.

= How many events or bookings can I create? =

There are no limits. Create as many events and accept as many bookings as you need.

= Can customers reschedule or cancel bookings? =

Customers can view their bookings through the customer dashboard. Admins can manage booking statuses — confirm, cancel, or reject — from the admin panel.

= Does it work with page builders like Elementor? =

Yes. The Event Calendar is available as a native Elementor widget with live editor preview, multi-view calendar (month/week/day/list), and full style controls — no shortcode needed. Gutenberg blocks and shortcodes also work inside any page builder that supports them, including Elementor, Beaver Builder, and Divi.

= Is the plugin translation-ready? =

Yes. All strings use the `nemtly-booking` text domain and are translation-ready. You can translate it using any standard WordPress translation method.

== Screenshots ==

1. Create and manage events with an intuitive admin interface — one-time, recurring, and slot-based scheduling
2. Admin booking management — filter by status, date, or payment with bulk actions
3. Interactive event calendar with month, week, day, and list views
4. Customers select available dates and time slots in real time from the booking calendar

== Changelog ==

= 2.3.0 05-07-2026 =
* New - Elementor Event Calendar widget with multi-view (month/week/day/list), categories, tags, and full styling controls
* New - Global business hours setting as default for new slot-based events
* New - Timezone-aware slot picker — visitors see available times in their local timezone
* New - CAPTCHA support (Text math challenge or Cloudflare Turnstile) with admin toggle

= 2.2.0 20-06-2026 =
* New - Per-event styling system with template presets (Mono, Bold, Warm, Ocean, Forest, Festive)
* New - Setup wizard with business-type personas, work hours, notifications, payments, and branding steps
* New - Classic theme support via template loader for archive and single event views
* New - Single event shortcode and extended shortcode library
* Improved - Booking form wizard with new AvailabilityEditor, StylingStep, ReviewStep, and booking sub-components
* Fix - Replace deprecated get_page_by_title() with WP_Query

= 2.1.1 31-03-2026 =
* New - Categories & Tags admin page for organizing events
* Improved - Availability editor with clearer active/inactive day styling
* Fix - Pin dependencies to maintain PHP 7.4 compatibility

= 2.1.0 31-03-2026 =
* New - Categories & Tags admin page for organizing events
* Improved - Availability editor with clearer active/inactive day styling
* Fix - Pin dependencies to maintain PHP 7.4 compatibility

= 2.0.1 23-03-2026 =
* New: Interactive event calendar with month, week, day, and list views — multi-day event spanning and month navigation
* New: Booking Calendar block and `[nemtly_booking_calendar]` shortcode for inline booking on any page
* New: Nemtly Events block — a Query Loop variation for displaying events anywhere in the Block Editor
* New: Availability recurrence patterns for slot-based events — recurring availability windows that generate automatically
* New: Google Calendar two-way sync via OAuth2
* New: Stripe Payment Element with webhook verification
* New: Manual payment recording for offline payments
* New: Price field for events
* New: Timezone dropdown sourced from WordPress site settings
* Improved: Frontend event filtering — faster and more accurate
* Improved: Stripe webhook handling and payment status tracking
* Fixed: Slot-based availability calculations returning incorrect results
* Fixed: Booking time slots not persisting through checkout
* Fixed: Frontend showing events that should not be visible
* Fixed: Multi-day events rendering incorrectly across calendar cell boundaries

= 2.0.0 – 2026-03-22 =
* New: Interactive event calendar with month, week, day, and list views — multi-day event spanning and month navigation
* New: Booking Calendar block and `[nemtly_booking_calendar]` shortcode for inline booking on any page
* New: Nemtly Events block — a Query Loop variation for displaying events anywhere in the Block Editor
* New: Availability recurrence patterns for slot-based events — recurring availability windows that generate automatically
* New: Google Calendar two-way sync via OAuth2
* New: Stripe Payment Element with webhook verification
* New: Manual payment recording for offline payments
* New: Price field for events
* New: Timezone dropdown sourced from WordPress site settings
* Improved: Frontend event filtering — faster and more accurate
* Improved: Stripe webhook handling and payment status tracking
* Fixed: Slot-based availability calculations returning incorrect results
* Fixed: Booking time slots not persisting through checkout
* Fixed: Frontend showing events that should not be visible
* Fixed: Multi-day events rendering incorrectly across calendar cell boundaries

= 1.2.0 =
* New: Stripe payment gateway
* New: Gutenberg block for Events List
* New: Dedicated payment management page in admin

= 1.1.0 =
* New: Magic link login for customers
* New: Automated email reminders
* New: Customer dashboard and shortcodes
* Improved: Event creation flow

= 1.0.0 =
* Initial release — event creation, booking system, and admin interface
