Indyzen Wellness Sync for Zenoti

説明

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

  1. Install and activate the plugin
  2. Enter your Zenoti API credentials in the settings
  3. Add the [indyzen_wellness_sync_dashboard] shortcode to any page or post
  4. 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

  1. Log in to your WordPress admin panel
  2. Navigate to Plugins > Add New
  3. Search for “Indyzen Wellness Sync for Zenoti”
  4. Click “Install Now” and then “Activate”

Manual Installation

  1. Download the plugin zip file
  2. Log in to your WordPress admin panel
  3. Navigate to Plugins > Add New > Upload Plugin
  4. Choose the downloaded zip file and click “Install Now”
  5. Activate the plugin

Configuration

  1. Navigate to Indyzen Wellness Sync for Zenoti in your WordPress admin menu
  2. Enter your Zenoti API Key
  3. Enter your Zenoti Center ID
  4. Enter your Zenoti Service ID (the service you want to display availability for)
  5. Choose an Availability Strategy (Queue API, Standard Booking, or Manual)
  6. If using Standard Booking, enter a Guest ID (anonymous/walk-in guest from Zenoti)
  7. 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
  8. 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 はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。

貢献者

“Indyzen Wellness Sync for Zenoti” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログRSS で購読してみてください。

変更履歴

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_html is passed through wp_kses_post() before display (WordPress.org escaping guidance for filtered HTML)
  • Hardening: Zenoti API requests use wp_safe_remote_get / wp_safe_remote_post instead of wp_remote_*
  • languages/index.php now includes the standard ABSPATH guard

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 file indyzen-wellness-sync.php, release zip folder indyzen-wellness-sync
  • Shortcode: availability dashboard uses [indyzen_wellness_sync_dashboard] (WordPress.org unique-prefix requirement; replaces unprefixed spa_dashboard)
  • Breaking change for developers: all extension hooks and internal identifiers now use the indyzen_wellness_sync_* prefix (replacing zenoti_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_id shortcode 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 .distignore packaging 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