=== Book with Schedulo ===
Contributors: bookwithschedulo2026
Tags: booking, appointments, appointment-booking, calendar, scheduling
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.2
Stable tag: 1.0.5
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Embed your Book with Schedulo booking pages anywhere with a Gutenberg block or shortcode — inline, popup, or floating button.

== Description ==

Book with Schedulo lets you add your [Book with Schedulo](https://www.bookwithschedulo.com/) scheduling pages to any WordPress post or page.

Choose how visitors book:

* **Inline embed** — the full booking calendar, in the flow of your content.
* **Popup button** — a button that opens the booking page in a modal.
* **Floating button** — a fixed "Book a meeting" button in the corner of every page it appears on.

You can add it two ways:

* The **Book with Schedulo** Gutenberg block, with point-and-click settings.
* The **[schedulo]** shortcode, for classic editor, widgets, or page builders.

= API key (optional) =

Embedding only needs your username. If you add an API key (Pro/Enterprise plans), the block editor can list your event types in a dropdown so you can pick one without typing its slug. The key is stored on your server and never exposed to visitors or the browser.

== Installation ==

**Before you start:** you need a free or paid account at [bookwithschedulo.com](https://www.bookwithschedulo.com/).

1. **Install the plugin.** In WordPress, go to **Plugins → Add New**, search for "Book with Schedulo", click **Install Now**, then **Activate**. (Or upload the plugin zip via **Plugins → Add New → Upload Plugin**.)
2. **Find your username.** Log in to Book with Schedulo. Your booking link is shown on your dashboard and looks like `bookwithschedulo.com/book/alex-664409`. The part after `/book/` — here, `alex-664409` — is your username.
3. **Connect your account.** Go to **Settings → Schedulo**, paste your username into **Step 1 · Your username**, and click **Save Changes**. (You can paste the whole link — the plugin extracts the username for you.) A **Live preview** appears so you can confirm the calendar loads.
4. **Add it to a page.** Edit any page or post, click the **+** button, search **Book with Schedulo**, and add the block. Or paste the shortcode `[schedulo username="your-username"]` anywhere. Publish — you're done.

The API key is optional; see below.

== Shortcode reference ==

Basic inline embed:

`[schedulo username="alex-664409"]`

Popup button:

`[schedulo username="alex-664409" mode="popup" text="Book a call"]`

Floating button:

`[schedulo username="alex-664409" mode="floating" position="bottom-right"]`

Attributes:

* `username` — your booking username (defaults to the one saved in Settings).
* `event` — an event-type slug, to embed one specific event.
* `mode` — `inline` (default), `popup`, or `floating`.
* `height` — inline embed height in pixels (default 700).
* `text` — button label for popup/floating modes.
* `color` — button colour (hex) for popup/floating modes.
* `position` — `bottom-right` (default) or `bottom-left`, floating mode only.
* `icononly` — `true` to show only an icon, floating mode only.

== Frequently Asked Questions ==

= Do I need an account? =

Yes — a free or paid Book with Schedulo account. The plugin embeds the booking pages from that account.

= Do I need the API key? =

No. The API key is optional and only used to list your event types in the block editor. Embedding works with just your username.

= Where do I find my username? =

It's the part after `/book/` in your booking link, e.g. `bookwithschedulo.com/book/alex-664409` → `alex-664409`.

= Does this work with page builders? =

Yes. Use the `[schedulo]` shortcode in any builder that supports shortcodes.

== Privacy & external services ==

This plugin connects your site to **Book with Schedulo** (https://www.bookwithschedulo.com), a third-party scheduling service, so that you can embed your booking pages.

What this means in practice:

* On any page where you add the block or shortcode, the plugin loads the booking widget script from `https://www.bookwithschedulo.com/embed.js` and displays your booking page from `https://www.bookwithschedulo.com` inside an iframe.
* When a visitor interacts with the embedded booking page, their interaction (and any details they enter to book) is handled by Book with Schedulo, not stored by this plugin.
* If you add an optional API key, your site makes server-to-server requests to `https://api.bookwithschedulo.com` to list your event types. The key is stored in your site's options table and is never sent to the browser.

The plugin itself does not collect, store, or transmit visitor personal data. Use of the Book with Schedulo service is governed by its terms and privacy policy:

* Terms: https://www.bookwithschedulo.com/terms
* Privacy: https://www.bookwithschedulo.com/privacy

== Screenshots ==

1. Settings → Schedulo: a 3-step setup with a live preview that confirms your embed works.
2. The Book with Schedulo block in the editor, with point-and-click settings.
3. An inline booking embed displayed on a published page.

== Changelog ==

= 1.0.5 =
* Clearer setup: the Settings screen is now a guided 3-step walkthrough (find username → save → add to page) with a live preview, and the username field explains exactly what to enter. Updated install guide and screenshots.

= 1.0.4 =
* Robustness: the username field now accepts a pasted full booking URL, an @handle, or a ?u= link and extracts just the username automatically — no more accidental "Page not found" from pasting the whole address.

= 1.0.3 =
* The Settings live preview now diagnoses embed failures explicitly (server headers not deployed / sandbox blocking / wrong username) instead of showing a silent blank frame, and confirms with a green check when the embed works.

= 1.0.2 =
* Fixed: booking embeds showed "refused to connect" on some sites — embeds now load reliably, and if a frame is ever blocked visitors see a clean "Book a meeting" button instead of a browser error.
* New: live embed preview on the Settings page so you can confirm the calendar loads before publishing.
* Simplified: removed the Advanced site/API URL fields (a mistyped URL there could silently break the plugin). Self-hosted instances can use the schedulo_booking_site_url / schedulo_booking_api_url filters.

= 1.0.1 =
* Updated plugin metadata: contributors aligned with the plugin owner account; removed unused Plugin URI.

= 1.0.0 =
* Initial release: Gutenberg block and shortcode for inline, popup, and floating booking embeds, with optional API-key-powered event-type dropdown.
* When no username is set, the block and shortcode now guide site owners to create a free account, with a direct link.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
