

The booking calendar — day/week/month view, color-coded by booking status.
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.
All of these are in the free plugin, with no license needed.
Booking types
Bookable items & availability
Customer booking form
[bookyzo_booking] shortcode, the Booking Form block and the Elementor widget[bookyzo_booking type="table"]) or a single item ([bookyzo_booking bookable_item_id="5"])Booking management
Dashboard
Customers
Emails
Customer self-service
[bookyzo_account] page for upcoming and past bookings, rescheduling and cancellingPayments
Privacy, translation & developer tools
bookyzo/v1These come only with Bookyzo Pro, a separate paid plugin that needs the free plugin installed. None of them are in the free plugin.
Booking tools
Locations & staff
Pricing & payments
[bookyzo_packages], block and Elementor widget)Messages
Tables
Events
Reports
Customization & integrations
License & updates
Bookyzo runs on your own site and stores bookings in your own database. It connects to these outside services only in the cases described.
Used only if you turn on Stripe under Bookyzo Payments and enter your own Stripe API keys.
https://js.stripe.com/v3/ and the card details go straight from the customer’s browser to Stripe. They never pass through your site.Stripe is provided by Stripe, Inc.: Services Agreement, Privacy Policy.
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.
Google Calendar is provided by Google LLC: Terms of Service, Privacy Policy.= 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.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.