=== DrezSync: Calendar Booking for Gravity Forms ===
Contributors: allydrez
Tags: booking, appointments, scheduling, google calendar, gravity forms
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.7.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Turn any Gravity Form into a booking form that stays in sync with Google Calendar. Hide booked times and save every booking to your calendar.

== Description ==

DrezSync connects a Gravity Form to your Google Calendar, so your form only ever offers times that are actually open, and every booking someone makes is written straight to your calendar.

Add one DrezSync Booking field to a form, set your hours and slot length, and you have a working booking form. No coded time slots to type out, no juggling multiple fields. When a customer picks a date, DrezSync checks your calendar live and hides anything already booked. When they submit, the booking appears on your calendar with their details.

= What you can do =

* Add a booking field to any Gravity Form in seconds
* Add more than one booking field to a form, each with its own calendar
* Offer time slots based on your open days, hours, and slot length
* Automatically hide times that are already booked in Google Calendar
* Write each booking to your calendar with the submitted details
* Set the accent color of the selected time to match your brand
* Follow a guided, step-by-step setup to connect Google

= Built for real businesses =

Whether you run a studio, a clinic, a salon, or a tour, DrezSync keeps your form and your calendar as one. No double bookings, no manual copying.

= DrezSync Pro =

When your business grows, DrezSync Pro adds date-range booking for rentals and stays, slot capacity for group bookings, live overlap protection across fields, choosing the calendar from another field (for example by location), custom event titles, automatic customer calendar invites, and priority support. [Learn more about DrezSync Pro](https://www.allydrez.com/drezsync/)

== Installation ==

1. Install and activate Gravity Forms.
2. Upload and activate DrezSync.
3. Go to DrezSync in your admin menu and follow the guided setup to connect Google Calendar.
4. Add a DrezSync Booking field to any form and set your availability.

== Support ==

The free version is self-service through our documentation, which covers setup and the most common questions. [Read the DrezSync setup documentation](https://www.allydrez.com/drezsync-api-connection/)

== Frequently Asked Questions ==

= Do I need Gravity Forms? =

Yes. DrezSync is an add-on for Gravity Forms and needs it installed and active.

= Does it work with the latest Gravity Forms? =

Yes. DrezSync tracks Gravity Forms closely and is tested against current releases, including Gravity Forms 3.0.

= Where are my Google credentials stored? =

Securely in your site's database, encrypted with your site's own keys, never in a file that can be reached from the web.

= Can I use more than one calendar? =

Yes. Each DrezSync Booking field connects to one Google Calendar, and you can add more than one booking field to a form, each with its own calendar. DrezSync Pro adds dynamic routing, where a single field chooses its calendar from another field's answer, for example by location.

= Does it support date-range booking for rentals? =

Date-range booking (check-in to check-out) is part of DrezSync Pro. The free version handles time-slot appointments.

= Will my bookings survive if I upgrade to Pro? =

Yes. Your Google Calendar connection, your form settings, and every booking field stay exactly as they are. Pro installs alongside the free version, takes over, and the free version can then be removed safely.

== Screenshots ==

1. Customers pick a date and an open time, right on your Gravity Form.
2. Add booking to any form with one field. Set your open days, hours, slot length, and calendar.
3. Connect your own Google Calendar in a couple of clicks.
4. Every booking lands on your Google Calendar, and booked times are blocked automatically.
5. Book a date range for rentals and stays. DrezSync Pro can even pick the calendar from another field, such as a Location choice.
6. The calendar greys out dates with no availability, so customers only ever choose a day that is open.

== External services ==

DrezSync connects to Google Calendar using the Google account you authorize during setup. This connection is required for the plugin to work, and it is set up by you, on purpose, from the plugin settings screen.

What is sent, and when:

* When a visitor picks a date on a booking form, DrezSync asks the Google Calendar API for the events on the chosen calendar for that day, so it can show only the open times. No visitor data is sent for this availability check.
* When a booking is submitted, DrezSync creates an event on your Google Calendar with the details entered on the form, such as the name and the chosen time, so the booking appears on your calendar. If you turn on the Pro option to invite the customer, their email address is added to that event as a guest.

DrezSync does not send any data to Ally Drez or to any service other than your own Google account. It does not track visitors.

This service is provided by Google. By connecting it you agree to Google's terms and policies:

* Terms of Service: https://policies.google.com/terms
* Privacy Policy: https://policies.google.com/privacy
* Google API Services User Data Policy: https://developers.google.com/terms/api-services-user-data-policy

== Changelog ==

= 1.7.2 =
* Fixed: when a booking field takes its calendar from another field on the form, changing that answer now clears the dates you had already picked, instead of carrying them over to the new calendar.
* Fixed: booking fields set to different calendars no longer block one another. Overlap protection now applies only within a single calendar, so a stay booked in one location cannot clash with a stay in another.
* Fixed: the overlap warning now clears itself as soon as the clash is resolved, without needing to pick the dates again.
* Fixed: a month that fails to load now retries on the next visit, instead of showing as fully booked for the rest of the session.
* Tested with WordPress 7.1.

= 1.7.1 =
* Booking field editor: the Open days, hours, and slot length options now hide when a field is set to Date Range, since those apply only to time-slot booking. The check-in and check-out settings show in their place.
* Confirmed compatible with Gravity Forms 3.0.

= 1.7.0 =
* Added a visual calendar to the booking field that greys out dates with no availability, so customers can see at a glance when they can book instead of clicking dates to find out.

= 1.6.9 =
* Updated the bundled Guzzle HTTP library to 7.15.1, resolving three security advisories in that dependency.

= 1.6.8 =
* Fixed the admin styling on the Gravity Forms settings tab.
* The booking field settings now keep working when Gravity Forms no-conflict mode is enabled.

= 1.6.7 =
* Initial public release.
