Beschreibung
PlaneviaApp Booking for Planevia integrates the Planevia booking system into your WordPress website with just a few clicks.
Planevia is an all-in-one management platform for spas, hair salons, beauty institutes, clinics, and wellness centers. This plugin is developed by the Planevia team and requires an active Planevia account.
Features
- Booking Floating Button — A floating button opens the booking window over your page; visitors never leave your site
- Always up to date — The booking flow is served by Planevia, so improvements reach your site without updating the plugin
- Follows your site language — French pages open the booking flow in French, English pages in English
- Booking Shortcodes — Embed the booking form, a booking button, or a service grid anywhere on your site
- Gutenberg Block — Drag and drop a booking button in the block editor
- Fully Customizable — Booking button color, text, size, and position
- Responsive — Works perfectly on mobile and tablet
- Pre-filtering — Open the booking flow directly on a specific service, optionally with a staff member preselected
- Service Grid — Display your Planevia services as clickable booking cards, rendered in your page HTML (good for search engines)
- Manual Booking Trigger — Add
class="planevia-book"to any of your own buttons to open the booking modal
Available Shortcodes
[planevia]— Full booking widget (inline iframe)[planevia_button]— Booking button in page content[planevia_button text="Book Now" color="#10b981"]— Customized booking button[planevia service="massage-60min"]— Widget pre-filtered for a specific service[planevia service="massage-60min" staff="PROFESSIONAL-ID"]— Widget opened on a service, with a staff member preselected[planevia_services]— Service grid — loads your services from Planevia as clickable cards[planevia_services columns="2" category="massage"]— 2-column grid filtered by category
Manual Integration
Add class="planevia-book" to any button or link on your site to open the Planevia booking overlay:
<button class="planevia-book">Book Now</button>
<a href="#" class="planevia-book" data-planevia-service="massage-60min">Book this service</a>
How It Works
- Create your account at planevia.ca
- Configure your services and your team
- Generate an API key in Settings > WordPress
- Install this plugin and enter your API key
- Your clients can book directly from your website!
Third-Party Service
This plugin connects to the Planevia platform (planevia.ca) to provide online booking functionality.
This plugin is developed and maintained by the Planevia team.
Data transmitted
- Your API key (to authenticate requests)
- Your organization slug (to identify your account)
- Your visitors‘ interactions with the booking widget (via iframe from planevia.ca)
When data is transmitted
- On every page where the plugin is active: the script
https://planevia.ca/embed.jsis loaded in the visitor’s browser - When the
[planevia_services]shortcode is used: your WordPress server (not the visitor’s browser) requestshttps://api.planevia.ca/api/public/servicesto load your service list, at most once every ten minutes - When a visitor opens the booking window: an iframe to
https://planevia.ca/embed/{org}is loaded
Important links
Blöcke
Dieses Plugin bietet 1 Block.
- Planevia – Bouton Reservation
Installation
- In your WordPress dashboard, go to Plugins > Add New and search for „Planevia“ (or upload the ZIP)
- Activate the plugin in the WordPress ‚Plugins‘ menu
- Go to the ‚PlaneviaApp‘ menu item in your dashboard
- Enter your API key and your organization slug
- Customize the booking button appearance and visibility
- The booking button will appear automatically on your site!
FAQ
-
Do I need a Planevia account?
-
Yes, you must have an active account at planevia.ca with the online booking module enabled.
-
How do I get my API key?
-
In your Planevia dashboard, go to Settings > WordPress and click „Generate a key“.
-
Will the plugin slow down my site?
-
No. The booking window is only loaded when a visitor opens it, and the service grid is rendered by your server and cached for ten minutes.
-
Can I customize the colors?
-
Yes. You can choose the primary color, booking button text, position, and size from the plugin settings page.
-
Is it compatible with popular themes?
-
Yes, the plugin works with all WordPress themes (Divi, Elementor, Astra, OceanWP, Kadence, GeneratePress, etc.).
-
Yes. You can configure the booking FAB to display on all pages, on the homepage only, or hide it entirely (the booking shortcodes still work in that case).
-
Yes. Add
data-planevia-service="your-service"to a button that hasclass="planevia-book", or use[planevia_button service="your-service"]. Each card of the[planevia_services]grid already does it. The value is the service slug shown in Planevia. -
In which language does the booking flow open?
-
In the language of the page being viewed: French or English. This follows multilingual plugins such as WPML, Polylang and TranslatePress. Any other language falls back to the visitor’s browser language.
-
No. Auto-capture only takes over buttons that stay on your own website. A button that leads to another booking site keeps working as it is. To send one specific button to Planevia, add
class="planevia-book"to it, point its link to#reserver, or use[planevia_button]. -
Planevia replaces my previous booking tool, and its old links are still on my site
-
Check „Also take over buttons that lead to another website“ in the plugin settings: those links will open Planevia instead.
-
Make sure „Auto-capture booking buttons“ is enabled in the plugin settings (it is by default). Any button or link containing „Réserver / Book / Rendez-vous / Appointment“ in its text or href will then trigger the booking modal automatically. If auto-capture is disabled, add
class="planevia-book"to the button manually.
Rezensionen
Zu diesem Plugin liegen noch keine Rezensionen vor.
Mitwirkende und Entwickler
„PlaneviaApp Booking for Planevia“ ist Open-Source-Software. Folgende Menschen haben an diesem Plugin mitgewirkt:
MitwirkendeÜbersetze „PlaneviaApp Booking for Planevia“ in deine Sprache.
Interessiert an der Entwicklung?
Durchstöbere den Code, sieh dir das SVN-Repository an oder abonniere das Entwicklungsprotokoll per RSS.
Änderungsprotokoll
1.3.2
- Change: auto-capture no longer takes over buttons that lead to another website. If you keep another booking system (for example for hotel rooms), its buttons keep working as they are. A new setting, „Links to another booking site“, restores the previous behaviour for sites where Planevia replaces a former booking tool.
- Fix: auto-capture never takes over an email or phone link.
1.3.1
- Fix: the
[planevia_services]grid was empty. It is now loaded by your WordPress server and rendered in the page, with the same price rules as the booking flow (free, on request, „from“, promotions, several durations). - Fix: „Button Size“ and „Show on Mobile“ had no effect since 1.3.0. They work again.
- Fix: a staff member set on a button or on
[planevia]is now passed to the booking flow. - New: the booking flow opens in the language of the page (French or English), including on multilingual sites.
- Tested with WordPress 7.1.
1.3.0
- Le mode bouton delegue lui aussi a embed.js. Le plugin affichait sa propre liste de
soins, construite depuis l’API : elle divergeait du tunnel a chaque version et ignorait
les regles metier — un visiteur pouvait y choisir un soin qui exige une consultation
prealable, et ne se faire refuser qu’apres avoir choisi sa date. - La capture automatique ne reprend plus les liens qui menent a la page ou le tunnel est
deja integre : le lien « Reservation » du menu conduit a la page au lieu d’ouvrir une
fenetre par-dessus. - Le shortcode [planevia] delegue desormais l’affichage a embed.js, servi par Planevia.
Le tunnel integre recoit ainsi les ameliorations faites cote Planevia sans mise a jour
du plugin : hauteur suivant le contenu (fini le cadre fige de 700 px et son defilement
interne), typographie heritee du site, fond transparent, en-tete et mention retires. - L’attribut staff est enfin pris en compte. Il etait transmis depuis la version 1.0 mais
ignore : [planevia staff=“…“] n’avait aucun effet. - Couleur par defaut alignee sur la charte Planevia (#4F7CC9) au lieu de l’ancien indigo.
1.2.4
- Fix (mobile): the booking modal now uses
100dvh(dynamic viewport height) instead of100vhso the iframe content is no longer cut off by the iOS Safari URL bar at the top or by the iPhone home indicator at the bottom. The close button is also offset usingenv(safe-area-inset-top)so it stays reachable on devices with a notch / Dynamic Island. - Fix (mobile): full-width modal on phones —
100vwwith safe-area-inset paddings on all four sides, no border radius, no drop shadow. The visible viewport is now fully reserved for the booking widget on every phone size.
1.2.3
- Fix: the booking modal no longer closes prematurely after a reservation is submitted. The Planevia booking widget sends a
Planevia-booking-confirmedpostMessage as soon as the reservation is persisted (between step 4 and step 5), which the plugin previously treated as a „close the modal“ signal. Visitors never saw the payment step (Stripe form when the business has online payment enabled) nor the final confirmation screen with the booking summary. The plugin now only closes the modal when the visitor explicitly clicks the close button inside the booking widget (which sendsPlanevia-booking-close). - Flow that now works end-to-end inside the iframe:
- Category Service Staff/Date/Time Contact form Reservation created in Planevia
- Payment (Stripe, if
allowOnlinePaymentis enabled on the organization) - Confirmation screen with booking summary and a close button
- No backend / spa-management change required — pure plugin-side fix.
1.2.2
- Fix: the booking modal now opens the Planevia booking widget directly inside the iframe (https://planevia.ca/embed/{org}) instead of fetching organization data and rendering a custom intermediate card. The custom card introduced in 1.2.0 was blocked by cross-origin (CORS) restrictions on api.planevia.ca, which caused „Impossible de charger les données“ errors on every modal open. Visitors now see the full booking widget (cover, categories, services and calendar) immediately when clicking the floating button, an auto-captured booking link, or any
.planevia-booktrigger. - Note: auto-capture (introduced in 1.2.1) still works the same way — any button or link containing „Réserver / Book / Rendez-vous / Appointment“ opens the modal automatically.
1.2.1
- New: auto-capture is back. Any button or link on your site containing „Réserver“, „Reserv“, „Book“, „Prendre rendez-vous“, „Rendez-vous“ or „Appointment“ is automatically converted into a Planevia trigger — no HTML change required. Can be disabled in the settings page if you prefer manual integration.
- Improvement: auto-captured triggers open the new category picker introduced in 1.2.0 (same flow as the floating button and as
.planevia-booktriggers without filters).
1.2.0
- New: category picker modal — the floating button (and any generic
.planevia-booktrigger) now opens a clean two-column card first. Left column shows the organization cover, name, address and phone. Right column lists categories with thumbnails, service counts and an info popover. Clicking a category loads the booking iframe pre-filtered for that category. - New: rendered natively in the plugin (no extra iframe load, no remote
/embed.jsscript). Two public endpoints power the card:/api/public/organizations/{slug}and/api/public/services?org={slug}. - New: navigation arrows in the modal footer match the Booxi-style flow (prev disabled on first step, next opens the booking iframe with no filter for visitors who want to browse all services).
- New: hover and focus states pick up your organization’s
primaryColorautomatically. - Change: the floating button is again a booking trigger (the brief 1.1.0 chat-FAB experiment is deferred — chat will return in a future release once the chat embed page is in production).
- Fix: the modal close listener now accepts both the legacy string
postMessageand the object form ({type:'Planevia-booking-close'}) sent by the embed page. The booking modal now closes automatically after a confirmed reservation. - JS API:
window.PlaneviaBooking.open()(smart picker/iframe),.openIframe({service,staff,category}),.openCategories(),.close().
1.1.0
- Brief chat-FAB experiment (now superseded by 1.2.0). The floating button targeted
/embed/{org}/chat. Removed because the chat embed page was not yet deployed in production.
1.0.6
- Fix: booking modal is now fully responsive across mobile, tablet and desktop. The previous max-width of 520px forced the embed page into mobile single-column mode on every screen, hiding the company banner and info panel. New breakpoints: full-screen on mobile (<= 640px), 92% width on tablet (641-1024px), capped at 1100px on desktop (>= 1025px). The two-column layout with the company cover image and details now displays correctly on desktop and tablet.
1.0.5
- Improvement: auto-capture is now enabled by default. Any button or link containing „Réserver“, „Reserv“, „Book“, „Prendre rendez-vous“, „Rendez-vous“, or „Appointment“ automatically opens the Planevia booking modal — no code change required on the client’s site. The setting can still be disabled in the plugin settings.
1.0.4
- Improvement: Planevia URL and Planevia API URL are now hardcoded constants (PLANEVIA_SERVER_URL, PLANEVIA_API_URL) instead of admin-editable settings. These point to the Planevia platform and are not meant to be customized by clients. Removes two unnecessary configuration fields from the plugin settings page.
1.0.3
- Fix: corrected default server URL from app.planevia.ca (non-existent subdomain) to planevia.ca. Existing installations are auto-migrated on plugin load. This was preventing the floating button and booking modal from appearing on client websites.
- New: separate API URL setting (default https://api.planevia.ca) used by the [planevia_services] shortcode. The booking iframe and floating button stay on planevia.ca; the public API is now correctly called on api.planevia.ca.
1.0.2
- Fix: floating button now loads correctly (corrected widget script path from /widget/planevia-widget.js to /embed.js)
1.0.1
- Updated plugin name to „PlaneviaApp Booking for Planevia“ and requested slug „planeviaapp-booking“
- Translated all descriptions and settings to English
- Removed arbitrary custom CSS insertion; use the WordPress Customizer for custom CSS
- Replaced direct script/style tags with wp_enqueue_script() and wp_add_inline_script()
- Replaced json_encode() with wp_json_encode() throughout
- Added full type and sanitize_callback declarations to all register_setting() calls
- Removed load_plugin_textdomain() (not required for WordPress.org hosted plugins since WP 4.6)
1.0.0
- Initial release
- Floating button (FAB) with customization
- Inline widget via shortcode
- Gutenberg block
- Service/staff pre-filtering support
- Color, text, position, and size customization
- Mobile-responsive
- Secure API key communication