説明
Indyzen Wellness Sync for Zenoti is a WordPress plugin that seamlessly integrates with the Zenoti API to display real-time spa service availability on your website. Perfect for spas, salons, and wellness centers using Zenoti as their management system.
Features
- Real-time Availability: Display live availability from your Zenoti account
- Mobile-Friendly Dashboard: Beautiful, responsive design that works on all devices
- Easy Integration: Simple shortcode implementation – just add
[indyzen_wellness_sync_dashboard]to any page - Smart Caching: Optimized performance with intelligent data caching
- Customizable: Clean, modern design that fits any website theme
- Free + Pro Ready: Free plugin is fully functional; Indyzen Wellness Sync Pro for Zenoti unlocks advanced capabilities
How It Works
- Install and activate the plugin
- Enter your Zenoti API credentials in the settings
- Add the
[indyzen_wellness_sync_dashboard]shortcode to any page or post - Your customers can now view available appointment slots in real-time
Requirements
- Active Zenoti account with API access
- Zenoti API key, Center ID, and Service ID
- API key permissions depending on strategy:
POST /v1/queue/available_times(Queue API strategy)POST /v1/bookings(Standard Booking — create draft)GET /v1/bookings/{booking_id}/slots(Standard Booking — fetch slots)GET /v1/centers/{center_id}/therapists(Manual fallback)GET /v1/appointments(Manual fallback)
- WordPress 5.8 or higher
- PHP 7.4 or higher
Support
For support, feature requests, or bug reports, please contact:
* Website: https://indyzen.pro
* Email: support@indyzen.pro
Credits
Developed by indyzen – https://indyzen.pro
External Services
Zenoti API
This plugin sends requests to the Zenoti API to retrieve availability data and calculate time slots for your configured service and center.
Data sent/used:
* Your Zenoti API key (sent in request headers).
* center_id and service_id (configured in wp-admin; used to determine which availability to fetch).
* For Standard Booking: guest_id (configured/entered; used to create a draft booking).
* For Queue API: a JSON request body containing center_id, consider_online_hours, and the selected service_id.
* For draft booking: date, center_id, and a guests payload containing your selected service_id.
Endpoint(s) used:
* POST /v1/queue/available_times
* POST /v1/bookings
* GET /v1/bookings/{booking_id}/slots
* GET /v1/centers/{center_id}/therapists
* GET /v1/appointments
Terms of service: https://www.zenoti.com/legal
Privacy policy: https://www.zenoti.com/privacy.html
Privacy Policy
Indyzen Wellness Sync for Zenoti does not collect, store, or transmit any personal data from your website visitors. The plugin only communicates with the Zenoti API to retrieve availability information based on your configured API credentials.
インストール
Automatic Installation
- Log in to your WordPress admin panel
- Navigate to Plugins > Add New
- Search for “Indyzen Wellness Sync for Zenoti”
- Click “Install Now” and then “Activate”
Manual Installation
- Download the plugin zip file
- Log in to your WordPress admin panel
- Navigate to Plugins > Add New > Upload Plugin
- Choose the downloaded zip file and click “Install Now”
- Activate the plugin
Configuration
- Navigate to Indyzen Wellness Sync for Zenoti in your WordPress admin menu
- Enter your Zenoti API Key
- Enter your Zenoti Center ID
- Enter your Zenoti Service ID (the service you want to display availability for)
- Choose an Availability Strategy (Queue API, Standard Booking, or Manual)
- If using Standard Booking, enter a Guest ID (anonymous/walk-in guest from Zenoti)
- To unlock advanced features, install and activate the external Indyzen Wellness Sync Pro for Zenoti add-on (sold via LemonSqueezy) and enter your Pro LemonSqueezy license key in wp-admin
- Save settings
Usage
Add the shortcode [indyzen_wellness_sync_dashboard] to any page or post where you want to display the availability dashboard. The shortcode uses the Queue API by default.
Example:
[indyzen_wellness_sync_dashboard]
You can override the Service ID per shortcode:
[indyzen_wellness_sync_dashboard service_id="your-service-id-here"]
If Indyzen Wellness Sync Pro for Zenoti is active, additional shortcode variants are available:
[indyzen_wellness_sync_dashboard template="compact"]
FAQ
-
Where do I get a Zenoti API key?
-
You can obtain your Zenoti API key from your Zenoti account settings. Contact Zenoti support if you need assistance accessing your API credentials.
-
How do I find my Center ID?
-
Your Center ID can be found in your Zenoti admin panel under your location settings. It’s typically a unique identifier for your spa location.
-
How often does the availability data update?
-
The plugin caches availability data for 15 minutes to optimize performance. This means the data refreshes automatically every 15 minutes.
-
Can I customize the appearance?
-
Yes! The plugin uses standard CSS classes that you can override in your theme’s custom CSS. The main wrapper uses the ID
#spa-dashboard-wrapper. -
How do I upgrade to Pro?
-
Free is fully functional without any paid license or key.
To unlock advanced slot rules and rendering controls, install and activate the external Indyzen Wellness Sync Pro for Zenoti add-on (sold via LemonSqueezy), enter your Pro LemonSqueezy license key in wp-admin, and configure it. -
What is included in Free vs Pro?
-
Free includes all three availability strategies (Queue API, Standard Booking, and Manual) plus the shortcode dashboard.
Indyzen Wellness Sync Pro for Zenoti adds advanced slot rules (minimum providers, business hours, blackout windows), enhanced rendering options, compact template, and additional premium features. -
What are the availability strategies?
-
Strategy 1 (Standard Booking): Zenoti calculates availability using center hours, therapist schedules, room capacity, and equipment. Requires a Guest ID.
Strategy 2 (Queue API): Fast same-day availability via POST /v1/queue/available_times. Great for walk-in displays. Default strategy.
Strategy 3 (Manual): Fetches therapists and appointments, then calculates gaps. Legacy fallback. -
Is this plugin GDPR compliant?
-
The plugin only displays availability data and does not collect or store any personal information from your website visitors.
評価
このプラグインにはレビューがありません。
貢献者と開発者
“Indyzen Wellness Sync for Zenoti” をあなたの言語に翻訳しましょう。
開発に興味がありますか ?
変更履歴
1.2.3
- Readme: 1.2.0 Upgrade Notice shortened to meet Plugin Check 300-character limit
1.2.2
- Hardening: shortcode output from
indyzen_wellness_sync_shortcode_htmlis passed throughwp_kses_post()before display (WordPress.org escaping guidance for filtered HTML) - Hardening: Zenoti API requests use
wp_safe_remote_get/wp_safe_remote_postinstead ofwp_remote_* languages/index.phpnow includes the standardABSPATHguard
1.2.1
- Version bump: readme stable tag and front-end asset version aligned with WordPress.org packaging after shortcode prefix review
1.2.0
- Align distribution identity: plugin name Indyzen Wellness Sync for Zenoti, text domain and admin slug
indyzen-wellness-sync, main fileindyzen-wellness-sync.php, release zip folderindyzen-wellness-sync - Shortcode: availability dashboard uses
[indyzen_wellness_sync_dashboard](WordPress.org unique-prefix requirement; replaces unprefixedspa_dashboard) - Breaking change for developers: all extension hooks and internal identifiers now use the
indyzen_wellness_sync_*prefix (replacingzenoti_pulse_*). Update any add-on (including Pro) accordingly - One-time migration copies saved settings and active caches from legacy option/transient keys where present; legacy draft-booking transients are cleared
- Consolidated public changelog to three releases for clarity
1.1.0
- Queue API as default availability strategy; Service ID throughout (replaces legacy booking-ID flow); optional
service_idshortcode attribute - Availability Strategy selector: Queue API, Standard Booking (draft booking + slots), or Manual therapist/appointment gap calculation
- Guest ID field and 30-minute draft booking transient cache for Standard Booking
- Extension hooks for strategies, API normalization, slot pipeline, and shortcode rendering
- Queue API request body and error handling aligned with Zenoti (including soft handling of some 400 responses)
- WordPress 6.9 tested; GPLv2 or later license alignment;
languages/directory and.distignorepackaging hygiene - External Pro add-on documented (LemonSqueezy); External Services section in readme; in-plugin license field and related cron removed from free plugin
- Uninstall removes plugin options and main availability cache
1.0.0
- Initial release: real-time Zenoti availability dashboard,
[indyzen_wellness_sync_dashboard]shortcode, 15-minute caching, mobile-responsive UI - Configurable service duration, cleanup time (manual strategy), custom no-availability message, optional booking URL
- PHPCS/WPCS tooling and standards pass for WordPress.org quality
- Documentation for required Zenoti API permissions, Free vs Pro positioning, and support at indyzen.pro