=== GDA Kraft Booking – Vacation Rental Calendar & iCal Sync ===
Contributors: globaldigitalagency
Tags: vacation rental, booking calendar, airbnb, ical, divi
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 0.2.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Free direct booking calendar for vacation rentals, guest houses and B&Bs: Airbnb & Booking.com iCal sync, seasonal rates, tourist tax. Divi 5 ready.

== Description ==

GDA Kraft Booking (public beta) adds a booking calendar and a booking engine to WordPress for holiday homes, vacation rentals, guest houses, B&Bs (chambres d'hôtes), villas and small hotels. Take direct reservations on your own site and keep your availability in sync with Airbnb, Booking.com and Vrbo through iCal. Every feature below works without an account, a subscription or a "Pro" version.

**Interface language:** in this beta, the admin screens and default texts are in French. Any text shown to visitors can be renamed in Texts and labels.

= Features =

* **Accommodations and units**: photos, property types, amenities, adults / children capacity per unit.
* **Rates**: nightly price, seasons and rate rules, weekend prices, minimum stay, length-of-stay discounts, coupons, extra services and cleaning fees.
* **Tourist tax**: per person and per night, with child exemption and a cap on nights.
* **Availability calendar**: closed days, arrival / departure days, buffers between stays.
* **iCal sync**: one export URL per unit, import of external calendars (Airbnb, Booking.com, Vrbo or any iCal channel).
* **Bookings**: manual bookings and booking requests: the guest sends a request, you confirm it and collect the payment offline (bank transfer, on site).
* **Guest side**: search form, results, booking form, price breakdown, guest portal with messages and documents.
* **Emails**: confirmation, request received, reminders before arrival, review requests.
* **Texts and labels** (Textes et libellés): rename any text (for example "Guests" to "Persons") without code.

= Who is it for =

* Owners of one or a few holiday rentals who want a direct booking site.
* Guest houses, B&Bs and small hotels managing several rooms or units.
* Web designers building accommodation sites with Divi 5, Elementor or the block editor.

= Why direct bookings =

Listing sites bring visibility, but each booking made through them is subject to their fees and rules. A booking page on your own site lets returning guests book you directly, under your own conditions. iCal keeps your calendar in sync with the listing sites you keep.

= Divi 5, block editor and Elementor =

The same booking components are available as Divi 5 modules, blocks for the block editor (Gutenberg) and Elementor widgets. Bricks support is coming.

= Your data stays in WordPress =

Bookings, guests and prices are stored in your own database. Nothing is sent anywhere unless you connect a Kraft GDA account.

= Kraft GDA (free account) unlocks =

An optional free Kraft GDA account gives access to the separate **GDA Kraft Booking Connect** add-on (downloaded from your Kraft GDA account, not from WordPress.org): online payments with Kraft Pay (Stripe), deposits and automatic balance collection, a front-end management dashboard, design modules, custom fields, a multilingual switcher and an AI assistant.

These hosted features are services run by Kraft GDA (SaaS): they require a Kraft GDA account and the Connect add-on. The plugin and the account are free. Online payments made through Kraft Pay carry a service fee paid by the traveler: 0.45 % until 30 June 2027, then 0.9 %. The fee applies only to online payments; offline payments and booking requests are never charged.

= Beta =

This is a public beta (0.x versions). Please report any issue in the support forum.

== External services ==

The plugin works without any external service. It only contacts the services below in the situations described.

**Kraft GDA (https://app.global-digital-agency.fr)** — optional account, used only if you click "Connecter mon compte Kraft GDA (gratuit)" (connect my free account) or "J’ai déjà un compte" (I already have an account) on the "Bien démarrer" (Getting started) or Kraft GDA screen.

* When: only when you click one of these buttons to connect the site, and when you click "Déconnecter" (Disconnect). This plugin makes no background request to Kraft GDA and sends no statistics or usage data.
* Data sent: site address and name, administrator email address, plugin, WordPress and PHP versions, admin language, and a one-time connection code.
* Terms of use: https://app.global-digital-agency.fr/cgu
* Privacy policy: https://app.global-digital-agency.fr/confidentialite

**OpenStreetMap / Nominatim (https://nominatim.openstreetmap.org)** — optional place suggestions in the "City" field of the search module. **Disabled by default**: nothing is sent unless an administrator enables place suggestions in Kraft Booking › Réglages › Services externes (Settings › External services).

* When: only once enabled, when a visitor types at least 3 characters in that field (requests go from your server; results are cached for 24 hours).
* Data sent: the text typed, the site language, and your site address in the User-Agent header (required by the Nominatim usage policy). No visitor IP address or other personal data is forwarded.
* Terms of use: https://operations.osmfoundation.org/policies/nominatim/
* Privacy policy: https://osmfoundation.org/wiki/Privacy_Policy

**iCal calendars you add** (Airbnb, Booking.com, Vrbo or any other channel) — calendar synchronisation.

* When: every 15 minutes, only for the calendar URLs you entered in an accommodation.
* Data sent: a standard HTTP request to the URL you provided (no booking or guest data).
* Terms and privacy: those of the channel that provides the calendar URL.

== Installation ==

1. Install and activate GDA Kraft Booking from Plugins › Add New.
2. Create your first accommodation in Kraft Booking › Hébergements (Accommodations), then set its units, rates and availability in Planning & tarifs.
3. Add the booking blocks (or Divi modules / Elementor widgets) to your pages.
4. Optional: to accept online payments, create a free Kraft GDA account from Kraft Booking › Kraft GDA, then install the Connect add-on from that account.

== Frequently Asked Questions ==

= How do I sync my calendar with Airbnb, Booking.com or Vrbo? =

Each unit has an iCal export URL: paste it into the calendar settings of each channel. Then paste each channel's iCal URL into the unit. Imported calendars are refreshed every 15 minutes and their dates are blocked on your site. iCal only carries dates, not prices or guest details.

= Can I get double bookings? =

On your site, a stay is held for a few minutes while the guest completes the form (15 by default) and overlapping dates are refused. Between your site and other channels, iCal is not instant: a booking made elsewhere is seen at the next refresh. For dates in high demand, confirm booking requests manually.

= Can it handle the tourist tax (taxe de séjour)? =

Yes. Add a tourist tax rule per accommodation: amount per person and per night, child exemption, maximum number of nights, included in the price or added to it. You set the amounts that apply to you; the plugin does not provide official rates.

= Does it work with Divi? =

Yes, with Divi 5: the booking components appear as native modules in the Visual Builder. With Divi 4, use the plugin's shortcodes instead.

= Is it free? What are the fees? =

The plugin is free, with no paid version and no locked feature. Booking requests and offline payments carry no fee. Only online payments through Kraft Pay (optional Connect add-on and Kraft GDA account) carry a service fee paid by the traveler: 0.45 % until 30 June 2027, then 0.9 %.

= Do I need an account? =

No. A free Kraft GDA account is needed only for the hosted services of the Connect add-on (online payments, management dashboard, etc.).

= How do guests pay without the add-on? =

Guests send a booking request, or you create the booking yourself. You confirm it and collect the payment offline, for example by bank transfer or on arrival.

= Is the interface available in English? =

Not yet. In this beta, the admin screens and default texts are in French. Visitor-facing texts can be renamed in Texts and labels.

= Can I manage several rentals or rooms? =

Yes. Create as many accommodations as you need, each with its own units, rates, calendar and iCal links.

== Screenshots ==

1. Accommodation page: photo gallery, availability calendar with nightly prices and the booking form.
2. Search form (dates and guests) and the results page with available accommodations.
3. Price breakdown: nights and season, length-of-stay discount, cleaning fee, tourist tax and coupon.
4. Rates and seasons in the admin: nightly price, weekend price and minimum stay.
5. iCal calendars of an accommodation: export URL and import of external channel calendars.
6. Bookings list with a booking request to confirm and an offline payment recorded.
7. Guest portal: stay details, messages and documents.
8. Divi 5 Visual Builder: Kraft Booking modules in the module picker and a module preview.
9. Elementor: the Kraft Booking widget category, with a widget placed on the page.
10. Block editor: Kraft Booking blocks in the inserter and a block with its settings panel.
11. Texts and labels: rename any text shown by the plugin.

== Changelog ==

= 0.2.0 (beta) =
* Translations: English source strings; French, Spanish, Italian and German included; admin follows each user's language.
* Regional variants (for example fr_BE, fr_CA, es_MX, de_AT, de_CH, it_CH) use the bundled French, Spanish, German or Italian translation. Translations from translate.wordpress.org take priority when available.
* Guest e-mails are sent in the language of the booking.

= 0.1.2 (beta) =
* New: "Getting started" screen, opened once after the first activation (never on bulk or network activation).
* New: one dismissible notice, only on the plugin's screens. No request to Kraft GDA before you click Connect.

= 0.1.1 (beta) =
* Fix: an automatic balance charge could be attempted after the balance was settled offline or partly paid.

= 0.1.0 (beta) =
* Initial public beta.

== Upgrade Notice ==

= 0.2.0 =
The plugin is now in English by default, with French, Spanish, Italian and German translations included. The admin follows each user's language.

= 0.1.2 =
Adds a "Getting started" screen. No external request is made unless you click Connect.
