=== Creavi Appointment Booking Calendar ===
Contributors: creavi  
Tags: appointment booking, booking calendar, scheduling, google calendar, online booking
Requires at least: 6.0  
Tested up to: 7.0
Requires PHP: 7.4  
Stable tag: 1.4.8
License: GPLv2 or later  
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Free WordPress appointment booking calendar with Google and Outlook sync, reliable reminders, built-in video meetings, and no monthly booking fee.

== Description ==

**Creavi Appointment Booking Calendar** is a free WordPress appointment booking calendar with Google and Outlook availability sync, reliable customer and admin reminders, built-in video meetings, and no monthly booking fee.

Create bookable services, define your availability, collect customer details, send confirmation emails, and let customers book online in a clean calendar flow. You can offer in-person meetings, phone calls, custom meeting links, or secure video meetings generated directly by the plugin.

Build a polished booking page in minutes with drag-and-drop Gutenberg blocks. Add a ready-made Service Hero section, a Booking Profile layout, an inline booking calendar, or a popup booking button without designing everything from scratch.

Creavi is built for consultants, coaches, clinics, salons, agencies, educators, and small service businesses that want a practical booking system without monthly booking software.

**Easy Setup - Ready in 2 Minutes** 
Watch how it works in action:

https://www.youtube.com/watch?v=KdV1pQHp-oI&t=1s

**Check out the live demo**: [https://wordpress.creavi.dk/booking/](https://wordpress.creavi.dk/booking/)
**We’re open to any suggestions!** Feel free to reach out via the support forum — we’re happy to hear your ideas and may implement them in future updates.


**Free Features Included**

Creavi gives small service businesses a complete booking setup for free, including calendar sync, automated reminders, custom booking forms, video meeting options, and ready-made Gutenberg booking page layouts.

* Add booking button anywhere via shortcode: `[creavibc_booking_button id="123"]` (opens booking popup)
* Embed full booking interface directly on page via shortcode: `[creavibc_booking_inline id="123"]`
* Support multiple booking widgets on the same page (different services)

* Smooth booking experience:
  - Popup or inline layout
  - Step-by-step flow: Date → Time → Details
  - Fully responsive and mobile-friendly

* Flexible availability settings:
  - Admin-defined **available days** via date picker
  - Rolling availability range (e.g. next 30–365 days)
  - Exclude specific dates (days off, holidays)
  - Minimum time before booking (buffer)

* Flexible **weekday-based time slots**:
  - Visual grid selector (e.g. Mon 9:00, Tue 10:30)
  - Different time slots per weekday
  - Optional slot duration: 20 / 30 / 60 minutes
  - Dynamic time slots based on selected date

* Smart timezone handling:
  - Admin timezone detection
  - **Timezone modes**:
    - Localized (auto-adjust to user timezone)
    - Locked (fixed business timezone)
  - Clear timezone indication on frontend

* Customizable **booking form fields**:
  - Toggle default Name & Email fields
  - Add unlimited custom fields (text or textarea)
  - Set any field as required

* Automated **email notifications & reminders**:
  - Sent to both admin and customer
  - Dynamic tags: `{name}`, `{email}`, `{date}`, `{time}`, `{service}` 
  - Optional reminder emails before the appointment (reduce no-shows)

* Google Calendar integration:
  - Automatically push bookings to Google Calendar
  - Block already booked time slots from Google Calendar
  - Google Calendar link generation for attendees
  - Custom Google event title and description templates

* Outlook Calendar integration:
  - Automatically push bookings to Outlook Calendar
  - Per-service Outlook connection and sync
  - Block busy Outlook time slots on the frontend
  - Custom Outlook event title and description templates

* Calendar & scheduling:
  - Downloadable `.ics` (iCalendar) file

* Meeting & location options:
  - In-person meetings
  - Online meetings (video or custom link)
  - Phone call option

* Built-in video conferencing:
  - Automatic meeting link generation  

* Personalization options:
  - Custom brand color
  - Personalized thank-you message

* Easy booking management
* Clean and minimal admin UI
* Works with Gutenberg, Elementor, and other page builders

* Multilingual & Translation Ready

== Installation ==

1. Upload the plugin to `/wp-content/plugins/` or install it via the WordPress admin dashboard.
2. Activate it through the "Plugins" menu.
3. Create a new **Service** post and configure your booking options.
4. Place the generated shortcode anywhere on your site.

== Frequently Asked Questions ==

= Can I display multiple booking buttons on one page? =  
Yes! Each service has its own shortcode and popup — ideal for showcasing different services.

= Does it support timezone differences? =  
Yes. Choose to display time slots in the visitor’s local timezone or lock them to the admin’s.

= Can I customize the emails sent after booking? =  
Absolutely. You can fully customize both admin and user email templates using tags like `{name}`, `{service}`, `{date}`, and more.

= Is Google Calendar synchronization included for free? =
Yes. You can automatically add bookings to Google Calendar and block time slots that are already busy in the connected calendar.

= Does Creavi support Outlook Calendar? =
Yes. Each service can connect to Outlook Calendar, automatically create booking events, and block busy Outlook time slots.

= Are appointment reminder emails included for free? =
Yes. Customer and admin reminders are included. You can choose how far in advance they are sent and set a specific delivery time for day-before reminders.

= Can customer and admin reminders use different schedules? =
Yes. Customer and admin reminders can be enabled independently and can use different reminder timings and email templates.

= What happens if WordPress Cron runs late? =
Creavi checks for overdue reminders and sends them on the next available cron run before the appointment. For delivery close to an exact time on a quiet website, configure your server to call `wp-cron.php` regularly.

= Can reminders include the video meeting link? =
Yes. Reminder templates support video link tags. Customers receive their personalized customer link, while admin reminders use the host-specific link.

= What meeting types can I offer? =
You can offer in-person appointments, phone calls, custom online meeting links, or secure video meetings generated by Creavi.

= Can Google or Outlook events block unavailable booking times? =
Yes. When calendar availability synchronization is enabled, busy events from the connected Google or Outlook calendar are removed from the available frontend time slots.

= Does it work with Elementor and Gutenberg? =
Yes. Use the shortcodes with Elementor or other page builders, or use the included Gutenberg booking blocks and layouts.

== Screenshots ==

1. Frontend: Service Hero block — business consulting theme with dark orange accents
2. Frontend: Service Hero block — business consulting theme with dark blue accents
3. Frontend: Service Hero block — dental clinic theme with dark background
4. Frontend: Service Hero block — nutrition coaching theme with food background
5. Frontend: Service Hero block — spa and massage theme with warm dark background
6. Frontend: Booking Profile block — light blue/purple color scheme with live calendar and available time slots
7. Frontend: Booking Profile block — light pink color scheme with live calendar and available time slots
8. Admin: Edit Service page — service title and description configuration
9. Admin: Gutenberg block editor showing Creavi Appointment Calendar blocks — Service Hero, Booking Profile, and Creavi Service
10. Admin: Gutenberg block editor with Service Hero block — live preview of a Nutrition Coaching page with booking card

== Languages ==

This plugin is fully translation-ready and supports localization via translate.wordpress.org.

Available languages include:
* English (default)
* French
* Danish

You can help translate this plugin into your language at:
https://translate.wordpress.org/projects/wp-plugins/creavi-booking-service/


== Changelog ==

= 1.4.8 =
* Fixed popup scroll locking so closing a booking popup no longer jumps the page position.
* Improved time slot loading feedback with a minimal service-color loading line for popup and inline booking layouts.
* Improved time slot loading speed by removing a frontend delay, aborting stale slot requests, fetching only the selected day from Google Calendar busy checks, and briefly caching remote busy-calendar responses.
* Improved Google and Outlook busy-slot checks so slow remote calendar responses cannot block frontend availability loading for as long.
* Fixed a double-click issue where rapidly clicking Next could accidentally trigger the final booking action.
* Removed the "Book another appointment" button from the thank-you screen in popup and inline booking layouts.
* Fixed repeat bookings without a page refresh by resetting stale success-button state and reloading the selected date's available slots when the popup is opened again.

= 1.4.7 =
* Added an optional GDPR/cookies consent checkbox for booking forms, including customizable label text, privacy policy URL, and required/optional behavior.
* Added frontend and backend validation for required consent so bookings cannot bypass the checkbox when it is marked required.
* Improved consent handling so optional consent can still record whether the customer accepted or did not accept the policy.
* Improved secure video reminder links so customer reminders use the customer link and admin reminders use the host-specific link.
* Improved recovery for older secure video bookings by rebuilding and storing the admin meeting link from saved participant tokens when needed.
* Added a black theme option that applies the full inline calendar or booking popup.

= 1.4.6 =
* Added a specific send-time setting for day-before customer and admin reminders.
* Improved reminder reliability so delayed WP-Cron runs can recover and send overdue reminders before the appointment.
* Added conditional reminder settings that only show the day-before send time when "1 day before" is selected.
* Fixed personalized secure video links so customers receive the customer link and hosts receive the host link in reminders.
* Fixed automatic Google and Outlook Calendar events to use the host-specific secure video link.
* Improved secure video link consistency across emails, calendar links, and calendar attachments.

= 1.4.5 =
* Security: Fixed stored XSS in custom booking field labels.
* Hardened custom booking field validation to safely handle malformed input and previously stored field data.

= 1.4.4 =
* Improved the Edit Service admin UI with clearer metabox spacing, aligned labels, more readable descriptions, consistent focus states, and refined select dropdown arrows.

= 1.4.3 =
* Added Booking Profile Gutenberg block — display a service provider profile with a live booking calendar directly in the block editor.
* Added admin reminder notifications — admins now receive reminder emails before upcoming appointments, matching the existing customer reminder system.
* Added host name field for secure video meetings.

= 1.4.2 =
* Improved admin UI with a cleaner, more consistent look and feel across the Edit Service page.
* Added Service Hero Gutenberg block — a ready-to-use booking hero section you can drag and drop straight into any page. New layouts coming soon.

= 1.4.1 =
* Added Outlook Calendar availability sync – the plugin now fetches existing events from connected Outlook Calendars and automatically blocks those time slots in the service booking calendar on the frontend.

= 1.4.0 =
* Added Outlook Calendar integration for automatic booking event sync.
* Added per-service Outlook connect, reconnect, and disconnect options.
* Added optional automatic push toggle for Outlook events.
* Added customizable Outlook event title and description templates.
* Tested up to WordPress 7.0.

= 1.3.1 =
* Added Gutenberg block to easily insert booking widgets directly in the editor.

= 1.3.0 =
* Added secure video integration for online appointments.
* Added flexible meeting types: Secure video, Phone call, and Custom link.
* Improved booking notifications and calendar event details with meeting information.

= 1.2.1 =
* Added a dedicated “Location & Meeting” section with extended meeting options.
* Improved frontend booking UI to better display meeting location details.
* Improved admin UI with a smoother and clearer service setup tour.

= 1.2.0 =
* Added `{name_url}` template tag for Booking emails, Reminder emails.
* Added Service setup onboarding navigation bar for a clearer configuration flow.
* Improved Service editor layout with structured top navigation

= 1.1.9 =
* Added per-service Google Calendar connections – each service can now connect to its own Google account.
* Improved Google Calendar connection logic with service-level override and site-level fallback.
* Added support for `{custom}` tag in Google Calendar events and invitations.
* Improved tag visibility in admin UI (clarified `{custom}` usage).

= 1.1.8 =
* Extended Google Calendar event details
* Improved Google Calendar & .ics event data consistency
* Improved Admin metabox reorganization for clearer service setup
* Improved Modernized admin styling and layout

= 1.1.7 =
* Added multilingual support for frontend and admin.
* Included French (fr_FR) and Danish (da_DK) translations.

= 1.1.6 =
* Added Minimum Time Before Booking option - per service lead-time setting.

= 1.1.5 =
* Added a default service placeholder image when no service image is uploaded.
* Improved calendar styling for a cleaner and more consistent booking experience.

= 1.1.4 =
* Booking calendar now respects the WordPress “Week Starts On” setting.

= 1.1.3 =
* Added automated reminder emails for bookings (per service).
* New service option to enable/disable reminder emails.
* New reminder timing settings (minutes, hours, or 1 day before the appointment).
* Added customizable reminder email subject and message templates.

= 1.1.2 =
* Fixed an issue allowing bookings in the past on the current day.
* Fixed service thank-you text option.

= 1.1.1 =
* Added Google Calendar availability sync – the plugin now fetches existing events from connected Google Calendars and automatically blocks those time slots in the service booking calendar on the frontend.
* This prevents double bookings by ensuring already occupied Google Calendar times cannot be selected by users.

= 1.1.0 =
* Added dynamic availability mode with rolling booking windows and support for excluded dates.
* Improved Available Booking Days UI with a tab-based switch between dynamic and static modes, fully backward compatible.

= 1.0.17 =
* Added Google Calendar integration - connect your services with Google Calendar to automatically create events for new bookings and keep your schedule in sync.

= 1.0.16 =
* Fixed admin timezone selector to correctly keep the saved value selected on post edit.
* Improved timezone dropdown population to show the full list while preserving the stored timezone.

= 1.0.15 =
* Removed "Close" button for the inline layout (embedded on-page booking).
* Prepared Google Calendar integration (service-level connect/disconnect UI and backend scaffolding).

= 1.0.14 =
* Added auto-selection of the first available date and time slot on open (with visual highlight)

= 1.0.13 =
* Added smooth animations when rendering or clearing time slots
* Improved booking slots container with height transition to prevent layout jumps

= 1.0.12 =
*Improved inline calendar styles for better visual consistency

= 1.0.11 =
* Added option and shortcode for inline booking form display directly on the page

= 1.0.10 =
* Improved mobile layout handling using `max-height: 90vh` with fallback height
* Aligned summary

= 1.0.9 =
* Aligned time zone summary with extended format in footer
* Fixed popup height on large screens

= 1.0.8 =
* Added time zone info next to selected time in booking summary footer

= 1.0.7 =
* Enhanced time slot selection UX with dynamic tooltip on weekday/time headers

= 1.0.6 =
* Standardized time slot button sizes for better visual alignment
* Improved layout consistency across different screen sizes
* Enhanced mobile responsiveness of time slot grid

= 1.0.5 =
* Optimized and aligned Flatpickr calendar header for better compatibility with different themes
* Removed unwanted arrowTop styling from Flatpickr popup
* Minor CSS cleanup for calendar appearance

= 1.0.4 =
* Improved mobile layout and spacing behavior
* Aligned and styled time zone notice with animated globe icon and tooltip

= 1.0.3 =
* Added quick-fill range selector for Available Booking Days (1–12 months ahead)
* Improved field descriptions for better admin UX when selecting booking dates

= 1.0.2 =
* Added vertical and horizontal padding options for the booking button
* Improved styling compatibility with default WordPress themes
* Minor UI enhancements for smoother content transitions

= 1.0.1 =
* Minor CSS improvements for better compatibility with Elementor

= 1.0 =
* Initial public release with full booking flow: calendar, time slots, form fields, notifications, and timezone support
