WordPress plugin intelligence profile

Bookyzo – Booking & Appointments

Appointments, table reservations, event tickets and generic time-slot bookings — one booking widget, one admin panel, no WooCommerce required.

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version1.0.1
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 6.3 · PHP 7.4
Directory statusactive
Last directory update14 Oct 202619d ago
Active installationsNewAdoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records Bookyzo – Booking & Appointments version 1.0.1 as active, updated 19d ago and tested up to WordPress 7.1.

Overview

About this plugin

Bookyzo turns your WordPress site into a real booking system, whatever you’re booking. Add a staff member for one-on-one appointments, a table for restaurant reservations, an event for ticketed occurrences, or a generic slot for anything else — set its availability, drop a booking form onto any page with a shortcode or block, and start taking bookings. No page builder plugin, no external booking service, no WooCommerce required.

Why Bookyzo?

  • All four booking types — Appointment, Table, Event, Slot — in the free plugin, not locked behind an upsell
  • Runs entirely on your own site — your booking data stays in your own database
  • No WooCommerce dependency — works on any WordPress site
  • A real Vue-powered admin panel, not a wall of settings screens
  • No limits on bookable items, shifts or bookings — add as many staff members, tables, events and slots as you need

Four booking types, one plugin

  • Appointment — one staff member, one customer per time slot (haircuts, consultations, tutoring)
  • Table — a restaurant table or venue space with a party-size capacity
  • Event — a specific date/time occurrence you create yourself (a class, a workshop, a ticketed show), sold by ticket quantity
  • Slot — a generic recurring time slot with room for more than one booking at once (a rental, a group session, anything that doesn’t fit the other three)

g. lunch and dinner), or specific dates you add yourself for Event. Available time slots (or your entered event dates) are kept up to date automatically in the background.

For events, the booking form can optionally ask for each ticket holder’s name when someone books several tickets.

Booking calendar

A day/week/month calendar in the admin panel shows every booking, color-coded by status. Click a booking to see its details or change its status, or add a walk-in/phone booking yourself straight from the calendar.

Booking list & CSV export

Filter every booking by date, bookable item or status, change status inline, and export the filtered list to CSV whenever you need it outside WordPress.

Customer booking widget

Add [bookyzo_booking] anywhere with the shortcode, use the Booking Form block, or drop it in with the Elementor widget if you build pages that way. ics file — no account required.

Customer management

Every customer is saved automatically the first time they book — searchable by name, email or phone under Bookyzo → Customers, with notes and tags you can add yourself. Already have a customer list elsewhere? Import it from a CSV file.

Email notifications

Automatic emails when a booking is received, confirmed or cancelled, plus a reminder email the day before it’s due. Every email carries the booking’s own details — number, quantity, total and location — and a self-service link the customer can use themselves: from it they can move their booking to another open time or cancel it, right up to your cancellation cutoff.

Every email’s subject and body is a plain-text template you can edit yourself, with placeholders for the customer’s name, the bookable item, the booking time, the total and your business name.

Payments

Mark bookings as paid manually for cash or in-person payments, or connect a Stripe account to let customers pay online by card when they book. An optional flat tax rate is added to every paid booking’s total automatically.

Dashboard

See today’s, this week’s and this month’s booking counts at a glance when you log in.

Developer friendly

Actions and filters throughout (REST controllers, pricing, rate limiting, notifications) and a REST API under bookyzo/v1. See Other Notes for the hook list.

Customer accounts

Customers can optionally create an account (turn it on under Bookyzo → Settings ) and manage their own bookings from a [bookyzo_account] page — upcoming and past bookings, rescheduling and cancelling within your cutoff. Off by default: guests can book, and manage that booking from the link in their email, without one.

Growing out of the free plugin (Pro)

Everything in this plugin is complete on its own, with no limits and no locked-out UI. Bookyzo Pro is a separate paid add-on with more features: services with per-staff pricing and “any available staff” booking, deposits and PayPal, SMS/WhatsApp reminders on your own schedule, seasonal and dynamic pricing, add-ons and booking fees, custom form fields, a table floor plan, event ticket tiers with QR e-tickets and a check-in scanner, staff calendar sync, an analytics dashboard, and WooCommerce checkout.

External services

Bookyzo runs on your own site and stores bookings in your own database. It connects to these outside services only in the cases described.

Stripe (online card payments)

Used only if you turn on Stripe under Bookyzo → Payments and enter your own Stripe API keys.

  • When a customer chooses to pay online, the booking widget loads Stripe.js from https://js.stripe.com/v3/ and the card details go straight from the customer’s browser to Stripe. They never pass through your site.
  • Your site sends Stripe the amount, the currency, the booking’s ID and the customer’s email address (for Stripe’s receipt), to create the payment, and later asks Stripe whether that payment succeeded.
  • When you refund a booking paid by card, your site sends Stripe the payment’s reference and the amount to refund.
  • Stripe calls your site’s webhook address to report payments it has completed.

: Services Agreement, Privacy Policy.

Google Calendar (add to calendar link)

The booking confirmation screen and emails include an “Add to Google Calendar” link. Nothing is sent to Google unless the customer clicks it; the link then opens Google Calendar with the bookable item’s name and the booking’s time filled in.

= Filters =

  • byzo_bookable_items_offering_service — ( int[] $bookable_item_ids, int $service_id ) Which bookable items offer a given service, for “any available staff” resolution. Default array().
  • byzo_service_price — ( float|null $price, int $service_id, int $bookable_item_id ) Resolved price for a service booked with a specific staff member. Default null (falls back to the bookable item’s own price).
  • byzo_deposit_amount — ( float|null $amount, float $payment_amount, int $bookable_item_id ) How much of a booking’s total is due online now as a deposit. Default null (pay in full).
  • byzo_default_settings — ( array $defaults ) Default values seeded into the business-settings option on activation.
  • byzo_rest_controllers — ( array $controllers ) REST controller instances registered on rest_api_init.
  • byzo_payment_gateways — ( array $gateways ) Registered payment gateways shown on the Payments settings screen, keyed by gateway id. Default: Stripe only.
  • byzo_payment_gateway_defaults — ( array $defaults ) Default settings shape for each registered gateway, keyed by gateway id. Default: Stripe only.
  • byzo_validate_payment_gateway_settings — ( array|WP_Error $current, string $gateway_id, array $data ) Validates and merges a settings patch for a non-Stripe gateway. Only consulted for a gateway that byzo_payment_gateways actually registered.
  • byzo_rest_public_permission — ( bool $allowed, WP_REST_Request $request ) Permission check for guest-allowed REST routes.
  • byzo_booking_rate_limit_max / byzo_booking_rate_limit_window — ( int ) Per-IP guest booking rate limit (default 20 requests / 600 seconds) and its window in seconds.
  • byzo_client_ip — ( string $ip ) The IP address used for rate limiting.
  • byzo_dev_server_url — ( string $url ) Vite dev server URL used only in local development.
  • byzo_unit_price — ( float $price, int $bookable_item_id, array $slot ) Per-booking unit price adjustment applied right after service-price resolution and before tax. Default: unmodified $price.
  • byzo_pdf_invoice_enabled — ( bool $enabled ) Whether a downloadable PDF invoice is available from the customer dashboard. Default false.
  • byzo_custom_fields_for_bookable_item — ( array $fields, int $bookable_item_id ) Custom form fields to render on the booking widget for a given bookable item, each { id, label, field_type, options, required }. Default array().
  • byzo_addons_for_bookable_item — ( array $addons, int $bookable_item_id ) Add-ons to render on the booking widget for a given bookable item, each { id, name, price }. Default array().
  • byzo_resolve_addons — ( array $resolved, int[] $addon_ids, int $bookable_item_id ) Resolves client-submitted add-on ids into real, currently-active, correctly-scoped { id, name, price } rows at booking-creation time — an id that doesn’t resolve is silently dropped. Default array().
  • byzo_appearance_css_vars — ( string $css, array $settings ) --prop:value; custom-property pairs generated from the Appearance settings. Default: the built-in property set, or '' when nothing was customized.
  • byzo_appearance_css_declarations — ( string $css, array $settings ) prop:value; plain CSS declarations generated from the Appearance settings. Default: the built-in declaration set, or '' when nothing was customized.
  • byzo_ticket_tiers_for_bookable_item — ( array $tiers, int $bookable_item_id ) Ticket tiers to render on the booking widget for a given Event bookable item, each { id, name, price, capacity_remaining }. Default array().
  • byzo_ticket_tier_price — ( float|null $price, int $ticket_tier_id ) Resolved price for a specific ticket tier. Default null (falls back to the bookable item’s own price).
  • byzo_claim_ticket_tier — ( bool|null $claimed, int $ticket_tier_id, int $party_size ) Atomically claims capacity on a ticket tier at booking-creation time; false means sold out (rolls back the slot’s own capacity claim). Default null (no tier system installed, nothing to claim).
  • byzo_qr_ticket_enabled — ( bool $enabled ) Whether a downloadable QR e-ticket is available from the customer dashboard. Default false.

Actions

  • byzo_loaded — Fires once the plugin is fully loaded.
  • byzo_bookable_item_created — ( int $bookable_item_id ) After a new bookable item is created.
  • byzo_bookable_item_activated — ( int $bookable_item_id ) After a bookable item transitions from inactive to active.
  • byzo_booking_created — ( int $booking_id ) After a new booking is created.
  • byzo_widget_rendered — ( array $config ) Each time a booking form is rendered on a page, so an add-on can enqueue its own front-end scripts.
  • byzo_booking_status_changed — ( int $booking_id, string $new_status, string $old_status ) After a booking’s status changes.
  • byzo_booking_payment_status_changed — ( int $booking_id, string $new_status, string $old_status ) After a booking’s payment status changes.
  • byzo_notification_sent — ( string $event, int $booking_id ) After a notification email is sent (or attempted).
  • byzo_notification_channels — ( string $event, array $booking, array $placeholders ) Fires after a notification email is sent, with the same placeholders — lets an add-on send the same event via another channel (e.g. SMS/WhatsApp).
  • byzo_booking_rescheduled — ( int $booking_id, int $new_slot_id, int $old_slot_id ) After a booking is moved to a different slot (status itself is untouched, so this is separate from byzo_booking_status_changed ).
  • byzo_release_ticket_tier — ( int $ticket_tier_id, int $party_size ) Fires when a ticket-tiered booking is cancelled/rejected/marked no-show, so its tier’s claimed capacity can be released back.
WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • appointment booking
  • booking calendar
  • event booking
  • table reservation
  • stripe
Compatibility & maintenance

Compatibility & maintenance

Tested with WP 7.1

Marked as tested with the current WordPress 7.1 release.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.1
Minimum requirementsWordPress 6.3 · PHP 7.4
Update activity14 Oct 202619d ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

Version1.0.01.0.1
WordPress compatibility7.1.27.1.3
Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.