BACK TO DIRECTORY

Appointment Booking Calendar & Scheduling – Zoe Booking

by Inflow Surge

5.0
(1 ratings)

Zoe Booking turns your WordPress site into a complete booking system in about five minutes. Add services and staff, drop the form on any page, and start taking appointments — free reservations, hosted online payments or the WooCommerce checkout.

Three ways to take bookings

  • Standalone — instant reservations (confirmed automatically or pending your approval). No other plugin needed.
  • Standalone — pay online — customers pay on a hosted checkout (Square built in; Stripe and PayPal come with the PRO add-on). The booking is created only after the payment is verified server-side; if the slot was taken while paying, the charge is refunded automatically.
  • WooCommerce (PRO add-on) — bookings ride through the cart and checkout as products, with prefilled customer details.

A booking form people enjoy using

  • Four friendly steps: service date & time details confirm, with a live price summary.
  • Five layouts (sidebar with photo, numbered process timeline, top stepper, slim progress bar, icon rail) and five design skins (Classic, Minimal outline, Soft, Dark, Glass).
  • Every colour, corner radius, spacing and font control is free and fully editable — nothing about styling the form is locked.
  • Design presets (PRO add-on) — nine finished looks (Zoe Classic, Nordic, Midnight, Blush, Atelier, Clinic, Terracotta, Mono, Botanical) applied in one click, plus saving your own and carrying it to another site. What PRO sells here is not the ability to style the form — it is not having to.
  • Popup mode — show just a button, the form opens in an elegant modal.
  • Calendar days fill up visually as they get booked; time slots show remaining group spots.
  • An “Earliest available” button jumps to the first free slot — on a calendar where the next three weeks are full, that is the difference between a booking and a closed tab.
  • A decoy field and a per-visitor hourly cap keep automated submissions out of the calendar without a CAPTCHA or a third-party service.
  • Phone field with a country dial-code picker, validated email, optional customer notes.
  • Dedicated Elementor widget — layout, design skin, colours, typography, spacing and the sidebar photo are all editable straight in the Elementor panel. A Gutenberg block and the [ms_booking] shortcode render the same form everywhere else.
  • A service catalogue with [ms_services] or its own Elementor widget: your services as cards (photo, description, duration, price) in list, grid or large-card layouts, with optional category filters, search and sorting — and a Book button that opens the form on that service.
  • 12 or 24-hour time, any currency symbol and position, renameable terminology (Service Class, Person Coach…), single-person mode.

Run the business, not the admin

  • A visual month calendar with colour-coded bookings, day panel and one-click manual bookings.
  • Move an appointment straight from the day panel — pick a new date, pick from the free times. The booking keeps everything (id, customer, price, payment) and the customer gets a calendar invite for the new time. Moving is not bound by the minimum-notice rule: “the customer just called to say they’re running late” has to be answerable.
  • A bookings list tinted by status, with print-ready details sheets, one-click deletes and a CSV export of whatever your filters select.
  • Private notes on any booking — what you need to remember about a customer, never shown to them.
  • CSV import to bring an existing calendar (and its customers) over from a spreadsheet or another plugin, with a dry run before anything is written and no emails sent to anyone.
  • Optional conversion tracking: a completed booking is announced to your own analytics — GA4, Google Tag Manager or Meta Pixel — without Zoe loading a single third-party script.
  • A dashboard with 30-day revenue, bookings, average value and cancellation-rate charts.
  • Emails with .ics calendar invites, automatic reminders, and a QR code customers scan to drop the appointment into their phone’s calendar.
  • Built-in SMTP delivery — enter your mail provider’s server details under Settings Notifications and every email the plugin sends goes through it. No separate SMTP plugin needed.
  • An optional GDPR consent checkbox on the booking form — your own text and privacy-page link, required server-side in every booking mode, with the moment of consent stored on the booking as proof.

Schedules that fit real people

  • A weekly schedule per person, the services they offer, and time off as single days or whole date ranges.
  • Special days — different hours on one particular date. A coach who is free on Tuesday this week and Saturday the next does not need a weekly grid that fits nobody: pick the date, set the hours. A special day also opens a day that is normally closed, and a day off always wins over it, so a holiday can never be reopened by accident.
  • Buffers before and after a service — the room needs resetting, you need to drive there. The gap is held clear on both sides, so the next slot never starts on top of it.
  • Booking rules you set once: a minimum notice (nothing inside the next N hours — no more “someone booked for ten minutes from now”), and a booking window (how far ahead the calendar opens, so nobody reserves a haircut for next April). Slots outside the rules are never shown, and a tampered request is refused server-side.
  • Free slots are worked out from the schedule, the service length (plus the gaps around it) and the bookings you already have — two customers can never grab the same slot, even if they pay at the very same moment.

Staff panel (PRO add-on)

Each team member gets their own small corner of the WordPress admin: a “today” strip (how many appointments, how many are done, what is next), their own appointments with quick status changes and rescheduling, their own month calendar, their own schedule — weekly hours, days off and special days — and a My Profile page for the name and photo customers see. No settings, no payments, no revenue, nobody else’s bookings. You create a WordPress account with the “Zoe Staff” role, link it on the Staff screen, and that is the whole setup.

You decide how much of that they get. Settings What staff can do has a switch for each: statuses, rescheduling, managing their own hours, seeing the customer’s phone number, editing their own profile. All on by default; every one is enforced on the server, so a switch you turn off is genuinely closed rather than merely hidden.

Or put the panel on your own site. Paste [ms_staff_panel] on a page and the whole thing appears on the front end instead — same appointments, same rules, same accounts, with the sections as tabs and a sign-in form for anyone who is not logged in. The WordPress admin is a fussy place to send staff: WooCommerce keeps non-shop roles out of it, and so do security plugins, two-factor gates and “hide wp-admin” tools. A normal page sidesteps all of it. The admin screens stay where they are — this is a second door to the same room.

Earnings & commissions (PRO add-on)

What each person brought in over a period, and what you owe them: appointments, revenue, commission and what you keep, per person, for any date range — with a CSV export. Give each person a percentage or a fixed rate; a service with a different margin can override it for everyone who performs it. Revenue comes from the price stored with each booking, so changing a price later never rewrites past months, and cancelled or refunded bookings are excluded.

Zoe reports what is owed and stops there — it never moves money. Automatic payment splitting would mean running your own Stripe Connect platform, putting every team member through identity checks and carrying the liability for their payouts and chargebacks. For a three-chair salon that is an absurd amount of paperwork for something a bank transfer already solves.

Deposits, pay links & no-shows (PRO add-on)

Take part of the price online when the booking is made — a percentage or a fixed amount, global or per service — and collect the rest at the appointment. The price never changes: reports, invoices and commissions keep counting the appointment at its full value, and the summary, email and details sheet all show “deposit due now / balance due at the appointment” lines. The balance can be collected without anyone re-booking: Email payment link on the booking sheet sends the customer a secure link that opens a checkout for exactly what is still owed (it also settles bookings you typed in by hand), and the same “Pay” button appears on their customer panel. When someone simply never turns up, mark the booking No-show: the sheet shows how many of their past appointments that customer has missed, the new-booking email warns you when a repeat offender books again, and no-shows never count as revenue or staff commission.

Already using Amelia or Bookly? Move in with one click

Zoe finds them on your site and copies your services, staff and appointments across — free, because the thing standing between you and trying a booking plugin should not be retyping three years of appointments. Preview first: “Show me what would happen” changes nothing and reports exactly what it would create and skip. Your old plugin is only ever read from — never written to, altered or deleted — so you can compare the two and go back if you want. Imported appointments arrive silently, because nobody should be emailed a confirmation for a haircut they had last spring. Running it twice is safe: anything already moved in is recognised and left alone, so a large calendar comes over in several passes. Working hours are deliberately not copied — every plugin shapes them differently and a wrong guess would quietly change who is bookable when.

SMS & WhatsApp messages (PRO add-on)

Automatic confirmations, reminders and cancellation notices by SMS or WhatsApp — the cheapest thing you can do about no-shows, and it annoys nobody. Messages go through your own Twilio account, from your number: you pay Twilio’s list price directly and we add nothing on top. Most plugins in this market resell message credits; this is the same feature without the middleman. Write your own wording with {name}, {service}, {staff}, {date}, {time} and {site}, or use ours. Reminders ride the schedule you already set for reminder emails, and a customer who left only a phone number now gets one too. Numbers are tidied into international format before sending, whatever way the customer typed them, and a message that fails never affects the booking — the reason lands in its private note.

Zoom meetings per booking (PRO add-on)

A fixed meeting link works until two appointments overlap or run back to back — then everybody has the same URL and your 10:00 client can walk into the 09:00 session. Connect your own Zoom account once (Server-to-Server OAuth: three values, no app review, no redirect) and every booking gets its own meeting, in the confirmation email and the calendar invite. Moving an appointment moves its meeting; cancelling gives it back; each occurrence of a series gets its own. The meetings are created in your Zoom account and stay there. If Zoom is unreachable the booking still goes through — a customer is worth more than a link — and the failure is recorded on the booking for you to sort out.

Team appointments (PRO add-on)

Some jobs take two people: a four-hands massage, a cleaning crew, a workshop with an assistant. Set People required on the service and Zoe only offers the times when enough colleagues who perform that service are also free — then books the whole team. Customers pick one person and a time exactly as before, so nothing about the form changes; what changes is that they can never book an appointment you cannot staff. Everyone on it is properly busy — the appointment blocks each member’s calendar, feed and staff panel — while only the lead can move or re-status it, and moving it keeps the same crew. In the commission report the price is split equally between them, each at their own rate, so the total still equals what the appointment was worth.

Feature switchboard

Every capability has an on/off switch under Zoe Booking Features, so the plugin stays exactly as light as you need: design presets, duration variants, taxes, online meeting links, service extras, group appointments, recurring series, per-staff calendar feeds, online payments, QR add-to-calendar, WhatsApp links and the customer panel.

Events & tickets (PRO add-on)

Events (workshops, openings, concerts) with a ticket pool, image and description — sold through any booking mode and displayed with the Events widget or [ms_events] shortcode in list, grid or standard layouts. An event can run on one date or on many: a workshop series stays a single event, customers choose their date at checkout, and every date sells its own seats. Events are not tied to anyone’s working hours, so a date in a quiet month needs no schedule juggling.

Customer panel

A front-end account area with passwordless magic-link sign-in: customers see their appointments and tickets, cancel online, download invoices, edit their details — and exercise their GDPR rights (export or permanently delete their data) themselves. [ms_customer_panel] or the Elementor widget.

Free vs Premium

The free plugin is complete on its own: unlimited services and staff, CSV import, private notes, conversion tracking, the full booking form (all layouts, skins and popup mode), the service catalogue, the visual month calendar, the bookings list with CSV export and the dashboard, weekly schedules with days off and special days, booking rules (minimum notice, booking window, buffers before and after), the “earliest available” shortcut, spam protection, Square online payments, email notifications and reminders, .ics calendar invites, QR add-to-calendar, per-staff calendar feeds, taxes, duration variants, service extras, group appointments, recurring series, WhatsApp links, online-meeting links, the customer panel and full translations.

Zoe Booking PRO (a separate add-on, not included in this plugin) adds: the design-preset gallery and saving your own, the staff panel, the earnings & commissions report, deposits, pay-by-link balance collection, no-show tracking, Stripe & PayPal payments, WooCommerce checkout, discount coupons, waiting lists, multiple locations, invoices, refunds and events & tickets.

External services

Zoe Booking runs entirely on your own site and stores all data in your WordPress database. It connects to external services only when you enable the corresponding feature and add your own API keys:

  • Stripe (api.stripe.com) — when Stripe is your payment gateway: creating checkout sessions, verifying payments and issuing refunds. Data sent: booking amount, currency, item name and the customer’s email. Terms, Privacy.
  • PayPal (api-m.paypal.com) — when PayPal is your gateway: creating and capturing orders and issuing refunds. Data sent: amount, currency, item name. Terms, Privacy.
  • Square (connect.squareup.com) — when Square is your gateway: creating payment links, …

Screenshots

The customer-facing booking form — pick a service, staff, date and time in a clean, mobile-friendly flow.

The customer-facing booking form — pick a service, staff, date and time in a clean, mobile-friendly flow.

At-a-glance dashboard — today's bookings, revenue, cancellation rate and your most-booked services.

At-a-glance dashboard — today's bookings, revenue, cancellation rate and your most-booked services.

Month calendar with every booking colour-coded by status — click any day for the full agenda.

Month calendar with every booking colour-coded by status — click any day for the full agenda.

Powerful bookings list — search, filter, change status and export to CSV in one place.

Powerful bookings list — search, filter, change status and export to CSV in one place.

Define services — a duration, price and category for everything customers can book.

Define services — a duration, price and category for everything customers can book.

Give each team member a weekly schedule, assigned services and time off.

Give each team member a weekly schedule, assigned services and time off.

Turn plugin capabilities on and off to match how you work.

Turn plugin capabilities on and off to match how you work.

Configure booking mode, payments, notifications, terminology and brand colours.

Configure booking mode, payments, notifications, terminology and brand colours.

Plugin Details

Active Installs
100
Total Downloads
927
Version
1.8.1
Requires WP
6.0
Requires PHP
7.4
Tested Up To
7.0.4
Added
2026-07-25
Last Updated
2026-08-24 12:31am GMT

Ratings

5
1
4
0
3
0
2
0
1
0