Description
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 single FAB opens a clean two-column picker (cover + categories) before launching the booking flow
- Category Picker Modal — Visitors choose a service category first, then the booking widget loads pre-filtered
- 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 — Direct customers to a specific service or staff member from a booking button
- Service Grid — Display your Planevia services as clickable booking cards
- 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 staff="jane-doe"]— Widget pre-filtered for a specific staff member[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 > Integrations
- 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
- When the booking FAB or a
.planevia-booktrigger is clicked without filters: two requests are made tohttps://api.planevia.ca/api/public/organizations/{slug}andhttps://api.planevia.ca/api/public/services?org={slug}to populate the category picker - When the
[planevia_services]shortcode is used: a request is made tohttps://api.planevia.ca/api/public/servicesto load your service list - When a visitor picks a category or opens the booking widget: an iframe to
https://planevia.ca/embed/{org}is loaded
Important links
Blocks
This plugin provides 1 block.
- Planevia – Bouton Reservation
Installation
- Download the plugin and unzip it into
/wp-content/plugins/ - 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 > Integrations > API Key and click “Generate a key”.
-
Will the plugin slow down my site?
-
No. The category picker and booking iframe are only loaded when a visitor opens them.
-
Can I customize the colors?
-
Yes. You can choose the primary color, booking button text, position, and size from the plugin settings page. The category picker also picks up the primary color of your Planevia organization for highlights and hover states.
-
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).
-
Can I skip the category picker?
-
Yes. Buttons that specify a service, staff member or category (via shortcode attributes or
data-planevia-*attributes) open the booking iframe directly with the filter applied — the picker is skipped. The picker only appears for generic “Book now” triggers. -
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.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“PlaneviaApp Booking for Planevia” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “PlaneviaApp Booking for Planevia” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
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