Title: Appointment Booking Calendar &amp; Scheduling – Zoe Booking
Author: Inflow Surge
Published: <strong>25. juli, 2026</strong>
Last modified: 24. august, 2026

---

Søk i utvidelser

![](https://ps.w.org/zoebooking/assets/banner-772x250.png?rev=3622050)

![](https://ps.w.org/zoebooking/assets/icon-256x256.png?rev=3622050)

# Appointment Booking Calendar & Scheduling – Zoe Booking

 Av [Inflow Surge](https://profiles.wordpress.org/inflowsurge/)

[Last ned](https://downloads.wordpress.org/plugin/zoebooking.1.8.1.zip)

 * [Detaljer](https://nb.wordpress.org/plugins/zoebooking/#description)
 * [Omtaler](https://nb.wordpress.org/plugins/zoebooking/#reviews)
 *  [Installering](https://nb.wordpress.org/plugins/zoebooking/#installation)
 * [Utvikling](https://nb.wordpress.org/plugins/zoebooking/#developers)

 [Brukerstøtte](https://wordpress.org/support/plugin/zoebooking/)

## Beskrivelse

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](https://stripe.com/legal),
   [Privacy](https://stripe.com/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](https://www.paypal.com/legalhub/home),
   [Privacy](https://www.paypal.com/privacy).
 * **Square** (connect.squareup.com) — when Square is your gateway: creating payment
   links, …

## Skjermbilder

[⌊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.⌉[

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.⌉[

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.⌉[

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.⌉[

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.⌉[

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.⌉[

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.⌉[

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.⌉[

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

## Blokker

Denne utvidelsen gir 1 blokk.

 *   Zoe Booking Form

## Installasjon

 1. Upload the `zoebooking` folder to `/wp-content/plugins/`, or install it from the
    Plugins screen.
 2. Activate the plugin — a Zoe Booking menu with a welcome dashboard appears.
 3. Add a Service and a Staff member (with a weekly schedule).
 4. Put the form on a page: the Zoe Booking Elementor widget, the Gutenberg block or`[
    ms_booking]`.
 5. Pick your booking mode under Zoe Booking  Settings and flip on any features you
    need.

## Ofte stilte spørsmål

### Do I need WooCommerce?

No. Standalone mode works on its own, and online payments (Stripe / PayPal / Square)
work without WooCommerce too. Selling bookings through the WooCommerce cart and 
checkout is an optional mode available in Zoe Booking PRO.

### Does it work with Elementor?

Yes — Zoe Booking ships a dedicated Elementor widget with full Style controls: layouts,
design skins, colours, typography and spacing are all configurable per widget, live
in the editor. No Elementor? The Gutenberg block and the `[ms_booking]` shortcode
render the exact same form.

### How do online payments stay safe?

The reservation is only written after the gateway confirms the payment server-side.
Availability is re-checked at that moment — if the slot was taken while the customer
was paying, the charge is refunded automatically.

### Can customers manage their own bookings?

Yes — enable the Customer Panel feature. Customers sign in with a magic email link(
no passwords, no WordPress accounts), see their appointments and tickets, cancel,
download invoices and edit or delete their personal data.

### Can my team see their own bookings without seeing everything else?

Yes — that is the Staff panel (PRO). Give the person a WordPress account with the«
Zoe Staff» role and link it on the Staff screen. They then see only their own appointments
and calendar, and manage their own hours, days off and special days. Settings, payments,
revenue and everyone else’s bookings stay out of reach.

### What if someone works different hours on one particular date?

Add a **special day** on the Staff screen: a date with its own start and end time.
It replaces the weekly hours for that date and can also open a day that is normally
closed. Days off always win, so a holiday cannot be reopened by mistake.

### Can several people share one time slot?

Yes — set a group capacity on the service. Slots show the remaining spots and prices
are per person.

### Are reminders sent automatically?

Yes, when enabled in Settings. They run on WordPress cron, so they fire on site 
traffic; for precise timing use a real system cron.

### My emails don’t arrive — do I need an SMTP plugin?

No. Zoe has SMTP delivery built in: under Settings  Notifications, switch it on 
and enter the host, port, username and password from your email provider. Every 
email the plugin sends then goes through that account. (On a localhost test site,
a mail catcher like MailHog is the easiest way to see outgoing mail.)

### Is it translation-ready?

Fully — gettext throughout (text domain `zoebooking`), and it ships with complete
Dutch, French, German, Italian, Polish and Spanish translations out of the box. 
The Terminology settings additionally allow quick renames (Service  Class…) without
touching translation files.

### Does uninstalling remove my data?

Options are cleaned up. Bookings, services, staff and events are only deleted if
you tick “Delete all data on uninstall” in Settings first.

## Vurderinger

![](https://secure.gravatar.com/avatar/0f6c4687bd0ff8f5c693bbad033a92847a43f39e31b610d41de219d75b09bb3d?
s=60&d=retro&r=g)

### 󠀁[Finally, a booking plugin that thinks of everything](https://wordpress.org/support/topic/finally-a-booking-plugin-that-thinks-of-everything/)󠁿

 [peter121212](https://profiles.wordpress.org/peter121212/) 22. august, 2026

I have tested what feels like every booking plugin in the repository over the years,
and this one is on a completely different level. I had my entire system set up—services,
staff schedules, and a fully styled booking form—in about the time it takes to drink
a cup of coffee. What really stands out is the attention to detail on the business
side of things. The ability to just drag an appointment to a new time on the calendar
without losing the payment info or customer history is a lifesaver. The feature 
switchboard is genius; I was able to turn off the stuff I don’t need (like WooCommerce)
and keep the backend completely clutter-free. The spam protection is also fantastic.
I hate CAPTCHAs, so having a silent decoy field that keeps bots out is a huge plus.
The «Earliest available» button is such a simple idea, but it has genuinely stopped
customers from leaving the page when the calendar looks busy. Honestly, this feels
like a premium plugin that happens to be free. Highly recommended for anyone who
actually runs a service business, not just someone who wants a basic calendar. 10/
10.

 [ Les 1 vurdering ](https://wordpress.org/support/plugin/zoebooking/reviews/)

## Bidragsytere og utviklere

«Appointment Booking Calendar & Scheduling – Zoe Booking» er programvare med åpen
kildekode. Følgende personer har bidratt til denne utvidelsen:

Bidragsytere

 *   [ Inflow Surge ](https://profiles.wordpress.org/inflowsurge/)

«Appointment Booking Calendar & Scheduling – Zoe Booking» har blitt oversatt til
1 språk. Takk til [oversetterne](https://translate.wordpress.org/projects/wp-plugins/zoebooking/contributors)
for deres bidrag.

[Oversett «Appointment Booking Calendar & Scheduling – Zoe Booking» til ditt språk.](https://translate.wordpress.org/projects/wp-plugins/zoebooking)

### Interessert i utvikling?

[Bla gjennom koden](https://plugins.trac.wordpress.org/browser/zoebooking/), sjekk
ut [SVN-repositoriet](https://plugins.svn.wordpress.org/zoebooking/), eller abonner
på [utviklingsloggen](https://plugins.trac.wordpress.org/log/zoebooking/) med [RSS](https://plugins.trac.wordpress.org/log/zoebooking/?limit=100&mode=stop_on_copy&format=rss).

## Endringslogg

#### 1.8.1

 * Fixed: **moving in from Amelia or Bookly turned waiting lists into real appointments.**
   Both plugins keep waiting-list requests in the same table as bookings, marked
   with their own status — «waiting» in Amelia, «waitlisted» in Bookly — and neither
   holds a time slot for them. Zoe did not recognise either, so it imported them
   as confirmed appointments, which DO hold a slot: a calendar could arrive from
   the migration with times blocked that nobody had ever booked. Those entries are
   now left where they belong and reported in the summary, so you can see what was
   passed over.
 * Fixed: an unrecognised status from the other plugin no longer becomes a confirmed
   appointment. If either plugin adds a status we have not seen, the booking is 
   imported as **Pending** and listed in the summary for you to check, rather than
   quietly taking a slot as though it were confirmed.
 * The column and table names the move-in wizard looks for have been checked against
   both plugins’ own installers — all 5 tables and 28 fields for Amelia, all 6 tables
   and 35 fields for Bookly.

#### 1.8.0

 * New (PRO): **Deposits** — take part of the price online when the booking is made
   and collect the rest at the appointment. A percentage or a fixed amount, set 
   globally with a per-service override. The appointment never changes its price:
   the dashboard, the commission report and invoices keep counting it at full value,
   while the booking summary, the confirmation email and the printed sheet all show«
   Deposit due now» and «Balance due at the appointment» lines. A deposit of 100%
   simply means paying in full, and a fixed deposit larger than the price falls 
   back to charging the whole thing — turning the dial to either end never breaks
   a checkout.
 * New (PRO): **Pay by link** — one click on a booking’s Details page emails the
   customer a secure link that opens a checkout for exactly what their booking still
   owes: the balance a deposit left behind, or the whole price of a booking you 
   typed in by hand. The link carries no personal data, survives until it is paid,
   and after payment turns into a small receipt page. Customers with something outstanding
   also get a «Pay» button in their customer panel, so a balance can settle itself
   without you lifting a finger. Refunding a booking that was paid in two charges(
   deposit + balance) refunds both.
 * New (PRO): **No-show tracking** — a «No-show» status for the appointments nobody
   turned up to, one click on the status pill (staff can mark their own unpaid ones
   from the staff panel). The booking sheet then shows that customer’s record — «
   missed 2 of 9 past appointments» — and the new-booking email warns you when a
   repeat offender books again, at the exact moment you could still ask for a deposit.
   No-shows never count as revenue on the dashboard and never earn staff commission;
   marking one sends the customer nothing.
 * New: **Move in from Amelia or Bookly** — a new screen that finds either plugin
   on your site and copies your services, staff and appointments into Zoe in one
   click. Free on purpose: retyping years of appointments is the thing that stops
   people trying a different booking plugin at all. Preview before committing; your
   old plugin is read-only throughout and left exactly as it was, so you can compare
   the two and change your mind. Imported appointments are silent — nobody is emailed
   about a booking they made months ago — and re-running is safe, because anything
   already moved in is recognised and skipped, letting a large calendar arrive over
   several passes. The importer reads the other plugin’s real column names rather
   than assuming them, so a version that differs slightly degrades to a missing 
   field instead of a broken import.
 * New (PRO): **SMS & WhatsApp messages** — automatic confirmations, reminders and
   cancellation notices sent as text messages, by SMS or WhatsApp. They go through
   your own Twilio account, from your own number, so you pay Twilio’s list price
   with nothing added on top — no credits to buy from us. Three editable messages
   with placeholders for the customer, service, staff member, date, time and site
   name. Reminders use the timing you already set for reminder emails, and a customer
   who left only a phone number now gets a reminder as well — previously reminders
   needed an email address. Numbers are normalised into international format however
   the customer typed them, and a message that cannot be sent never affects the 
   booking: the reason is recorded on it.
 * New (PRO): **Zoom meetings per booking** — connect your own Zoom account once
   and every booking gets a real meeting of its own, sent in the confirmation email
   and the calendar invite, instead of one link shared by every customer. Set it
   per service: no meeting, one fixed link, or a new meeting each time. Moving an
   appointment moves its meeting, cancelling gives it back, and each occurrence 
   of a recurring series gets its own. Connecting uses a Server-to-Server OAuth 
   app you create inside your own Zoom account — three values to copy, no app review,
   no redirect URL — and a «Test connection» button that names the account you reached.
   If Zoom is unreachable the booking still goes through and the reason is recorded
   on it: a customer is worth more than a meeting link.
 * New (PRO): **Team appointments** — several people on one appointment, for the
   jobs that genuinely take two: a four-hands massage, a cleaning crew, a workshop
   with an assistant. Set «People required» on the service; customers still pick
   one person and a time exactly as before, but a slot is only offered when enough
   colleagues who perform that service are also free, and Zoe books the whole team.
   Everyone on it is properly busy — it 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. The commission report splits the price equally between them, each
   at their own rate, so the total still equals what the appointment was worth.
 * New (PRO): **the staff panel on the front end** — put `[ms_staff_panel]` on a
   page and your team reaches their appointments, calendar, availability and profile
   without ever opening the WordPress admin. The same data, the same permissions
   and the same accounts; the four screens become tabs, and anyone not signed in
   gets a sign-in form that returns them to the panel rather than the dashboard.
   Worth having because the WordPress admin is where WooCommerce, security plugins,
   two-factor gates and «hide wp-admin» tools all get in your team’s way. The admin
   screens are untouched for the sites they already suit.
 * New: the bookings table now records **how much money actually arrived** for each
   booking separately from its price — the details sheet shows «Paid online» and«
   Balance due» whenever they differ.
 * Fixed: **the dashboard charts under-drew your busy days.** The line was smoothed
   in a way that treated each day as a hint rather than a value, so it never quite
   reached its own peaks — a spike of 19 bookings was drawn about a fifth of the
   chart below where it belonged, and the dot you get on hover floated above the
   line it was supposed to mark. The line now passes exactly through every day, 
   and can no longer bulge above the busiest one or dip below zero.
 * Fixed: **the popup ignored your Layout & skin.** Opening the booking form in 
   a popup moved it to the end of the page so a sticky header could not trap it —
   but the layout, skin and button styling live on the element around the form, 
   and that element stayed behind. The popup therefore always opened in the default
   sidebar layout, whatever you had chosen, and no amount of clearing caches helped
   because nothing was cached wrong. The styling now travels with the popup. This
   affected every popup: the shortcode, the block, the Elementor widget and the 
   one opened from a Parallax Slider button.
 * Fixed: a service’s **buffer before** is now recorded on each booking, so the 
   gap in FRONT of an appointment is protected the way the gap after it already 
   was. Until now nothing stopped the next customer from booking into somebody’s
   setup or travel time — the same class of bug as the buffer-after fix in 1.7.0,
   at the other end of the appointment. If you use buffers before a service, expect
   slightly fewer slots offered: that is the setting finally doing what it says.
   Bookings made before this update keep behaving exactly as they did.
 * Fixed: refunding one appointment of a recurring series paid with a single charge
   could hand back every charge while cancelling only that one appointment, if its
   balance had been settled separately. The whole series is now cancelled together,
   and each row keeps a record of what was actually charged to it.
 * Fixed: the schema upgrade now also runs on the front end. A background auto-update
   could otherwise land a new version without anyone opening wp-admin, and a booking
   taken before the new columns existed failed to save — after the customer had 
   paid.
 * Fixed: the PRO pricing screen showed a hard-coded «from $4.08/mo» with no indication
   it was the annual price per month. It is now derived from the annual price and
   labelled «billed annually», so the headline can never contradict the plans listed
   under it.
 * Docs: the FAQ no longer tells you to install an SMTP plugin (Zoe has SMTP built
   in), the Services table documents both buffers plus the commission and deposit
   overrides, the GDPR section covers the consent checkbox, and the previously unwritten
   limits are stated — minimum notice up to 2160 hours, booking window up to 3650
   days, 30 saved design presets, 2000-character private notes, and the 180-day 
   horizon of the «earliest available» search.
 * Improved: booking status labels are now translatable everywhere (they were shown
   as raw capitalised English in a few places).

#### 1.7.0

 * New: **Import bookings from a CSV** — move your calendar over from a spreadsheet
   or another booking plugin, customers included. Zoe recognises the usual column
   names, reads several date and time formats, and always offers a **dry run first**:
   it reads the whole file, tells you exactly what would happen and writes nothing.
   Services and people are matched by name and never created for you. Imports are
   silent — nobody is emailed about an appointment they made months ago somewhere
   else.
 * New: **Private notes on a booking** — «always 15 minutes late», «prefers the 
   quiet room». Yours alone: the customer never sees it, and neither does the staff
   panel.
 * New: **Conversion tracking** — announce completed bookings to the analytics your
   site already runs (a `zoe_booking` dataLayer event, a GA4 `purchase`, a Meta 
   Pixel `Schedule`). Zoe loads no tracking script and contacts nobody; it only 
   speaks to a tag that is already on the page. Off by default.
 * New (PRO): **You decide what staff can do** — five switches under Settings  What
   staff can do: change statuses, move appointments, manage their own hours, see
   the customer’s phone number, edit their own name and photo. Everything starts
   switched on, so nothing changes when you update; untick what you would rather
   keep. Each one is enforced on the server, not just hidden from the screen.
 * New (PRO): a **«today» strip** at the top of the staff panel — how many appointments,
   how many are behind them, and what is next — and a **My Profile** page where 
   they can change the name and photo customers see. Uploading a photo does not 
   give them the media library.
 * New: **Move an appointment** — reschedule from the calendar day panel instead
   of deleting and re-booking. Pick a date, pick from the free times, done. The 
   booking keeps its id, its customer, its price and its payment, and the customer
   is emailed a fresh calendar invite for the new time. Staff can move their own
   appointments from their panel (PRO), except ones that have been paid for — those
   stay with the owner.
 * New (PRO): **Earnings & commissions** — a per-person report of appointments, 
   revenue, the commission you owe and what you keep, for any date range, with a
   CSV export. Set a percentage or a fixed rate per person; a service can override
   it when its margin is different. Figures come from the price saved with each 
   booking, so raising a price next month never rewrites last month. Cancelled bookings
   and refunded charges are left out. It reports what is owed — Zoe never moves 
   money.
 * New (PRO): **Design presets** — a complete look in one click: colours, layout,
   skin, shape and spacing together. Nine to choose from — Zoe Classic, Nordic, 
   Midnight, Blush, Atelier, Clinic, Terracotta, Mono and Botanical. Applying one
   only fills the Appearance fields, so nothing changes on your site until you press
   Save. You can also save your own design as a preset and carry it to another site.
   Every one of those settings stays free and fully editable by hand; «Neutral»,
   which clears them all back to the defaults, is free too.
 * New: **Minimum notice** — refuse bookings made too close to the appointment. 
   Set it to two hours and nobody can take a slot that starts in ten minutes. Works
   across midnight, so a two-day notice correctly rules out tomorrow as well.
 * New: **Booking window** — how far into the future the calendar opens. Thirty 
   days keeps customers inside the next month; leave it at 0 for no limit.
 * New: **Buffer before a service** — the gap you need in front of an appointment
   for setup, travel or preparing the room. Sits alongside the existing buffer after.
 * New: **«Earliest available»** — one tap on the booking form jumps straight to
   the first free slot instead of making customers page through a calendar.
 * New: **Spam protection** for the booking form — a decoy field no human ever sees,
   plus a cap on how many bookings one visitor can make per hour. The public form
   writes a row and sends mail on every submission, so this keeps a script out of
   your calendar and off your mail server. Logged-in users are never counted.
 * Fixed: **«Buffer after» did not actually keep the gap free.** The buffer was 
   saved with the booking but ignored when the next customer’s slots were worked
   out, so a 15-minute clean-up break could be booked straight over. Buffers now
   hold in the customer calendar, in the manual «+ Add booking» screen and in every
   payment mode.
 * Fixed: in WooCommerce mode the booking request was only checked for collisions,
   never against the schedule itself — a tampered request could place an appointment
   outside working hours or on a day off. It now goes through the same validation
   as the other two modes.

#### 1.6.1

 * Fixed: if a PRO licence lapses, pages holding the `[ms_events]` shortcode showed
   the raw text «[ms_events]» to visitors, because WordPress prints shortcodes it
   does not recognise. Those pages now simply leave the section out until the licence
   is active again.

#### 1.6.0

 * New: **Special days** — different hours on one particular date, for the weeks
   that refuse to repeat. A coach free on Tuesday this week and Saturday the next
   no longer needs a weekly grid that fits nobody: pick the date, set the hours,
   done. 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.
 * New (PRO): **My Calendar** in the Staff panel — the same month grid the owner
   uses, showing only that person’s own appointments, with the day panel and quick
   status changes.
 * Staff members set their own special days from their panel, without touching anything
   else on the site.

#### 1.5.1

 * Fixed (PRO): on sites running WooCommerce, a staff member logging in was redirected
   to the WooCommerce «My account» page and could never reach the Staff Panel — 
   WooCommerce locks anyone without shop permissions out of the WordPress admin.
   Staff accounts are now allowed into their own panel (and nowhere else).
 * Staff now land straight on their own bookings after signing in, instead of on
   the WordPress profile screen.
 * The Staff Panel got a proper Zoe header that greets the team member by name, 
   so it is always obvious whose bookings are on screen — and the view links (Upcoming/
   Past / All) no longer collide with the page title.
 * Linking a WordPress account that already belonged to another staff profile now
   says so: one account runs one profile, and the previous link is reported as moved
   instead of disappearing quietly.

#### 1.5.0

 * New (PRO): Staff Panel — each team member gets their own limited wp-admin area.
   Create a WordPress account with the new «Zoe Staff» role, link it on the Staff
   edit screen, and that person sees only their own bookings (with quick status 
   updates) plus their own weekly schedule and time off. No settings, no payments,
   nobody else’s data.
 * New: a «Regenerate link» button next to the private calendar-feed URL (on the
   Staff edit screen and in the Staff Panel) — one click invalidates the old .ics
   link when someone leaves the team.
 * Hardening: staff save/delete now verify the record really is a staff member before
   writing.

#### 1.4.1

 * New (PRO): a fourth Events layout — «Banner» feature rows with a large date badge(
   rounded square, circle or minimal tile), the date · time · price line, a tickets-
   left pill and a pill-shaped Get tickets button with an arrow.
 * New (PRO): an optional corner decoration image on Banner cards, fading in from
   the right edge — set one image for all cards, or let each event’s photo take 
   that role.
 * The badge colours, size, decoration width and opacity are all adjustable in the
   Elementor widget’s new Banner layout section; the `[ms_events]` shortcode accepts`
   layout="banner"`, `badge="circle"` and `ornament="<image url>"`.

#### 1.4.0

 * New: a service catalogue — `[ms_services]` (and a matching Elementor widget) 
   shows your services as cards with photo, description, duration and price, in 
   list, grid or large-card layouts, with optional category filters, search and 
   sorting.
 * New: each card’s Book button opens the booking form with that service already
   selected — and when only one team member offers it, they are picked automatically,
   so the customer lands straight on the calendar.
 * New: services now have a Short description field, shown on those cards.
 * Services with duration variants advertise «from » instead of a base price the
   checkout would never charge.

#### 1.3.0

 * New (PRO): an event can now run on SEVERAL dates. A workshop series is one event
   with one description, image and price — add a date per session, and customers
   pick the date they want when they buy. Ticket capacity counts per date, so each
   session sells its own seats.
 * New (PRO): «Duplicate» on the Events screen — copy an event with all its settings
   and just set the new dates.
 * Existing single-date events keep working exactly as before; nothing to migrate.

#### 1.2.3

 * New: export the bookings list to CSV — one click exports exactly what your filters
   select (staff, service, date range, status, search), with prices, customer details
   and payment references, ready for Excel, Numbers, Google Sheets or your accountant.

#### 1.2.2

 * New: one-click «Install PRO now» — after activating a PRO license key, the PRO
   package downloads and installs itself (no more manual ZIP upload). A manual-upload
   fallback remains for sites where dashboard installs are disabled.
 * New: buying PRO from the panel now brings you straight back to WordPress after
   checkout, with the license key activated automatically.
 * Fixed: with an active license key but the PRO package not yet installed, the 
   panel now shows the License page with clear next steps instead of the pricing
   page.

#### 1.2.1

 * The «Get support» button now opens your email client (hello@zoebooking.com) —
   quicker help, no separate ticket portal.

#### 1.2.0

 * The plugin no longer bundles any third-party SDK — a fully self-contained install.
   Licensing & checkout for the separate PRO version now run on Lemon Squeezy (nothing
   loads or phones home unless you open the Get PRO page or enter a license key).
 * New License page (PRO): activate or deactivate your key, re-check its status 
   and jump to the Lemon Squeezy customer portal to manage billing.

#### 1.1.4

 * New (PRO): show a single event (or a hand-picked set) — `[ms_events ids="123"]`,
   an event picker in the Elementor Events widget, and a copy-ready shortcode column
   on the Events screen.
 * New (PRO): events are now clearly separated from appointments — All/Appointments/
   Events tabs and a per-event filter on the Bookings list, an «Event» badge on 
   ticket rows, and the calendar collapses each event into a single chip with a 
   sold/capacity counter plus grouped attendee lists in the day panel.

#### 1.1.3

 * New: full Dutch (Nederlands) translation — the plugin now ships in English, Dutch,
   French, German, Italian, Polish and Spanish.
 * Pricing page starts on the Monthly cycle; small admin polish (no tier badge in
   the free version).

#### 1.1.2

 * Free version got bigger: service extras, group appointments, recurring series,
   per-staff calendar feeds (.ics), WhatsApp links and the customer panel are now
   fully included — and the staff limit is gone (unlimited team).
 * Security: customer-panel, calendar and invoice access tokens are now signed with
   a plugin-generated secret instead of WordPress auth salts.
 * Under the hood: every admin and front-end script/style now loads through the 
   WordPress enqueue APIs.

#### 1.1.1

 * Fixed: bundled translations (de/fr/es/it/pl) were not loading — the form and 
   admin stayed in English on non-English sites.
 * Fixed: dropdown panels could render permanently open on block themes (e.g. Twenty
   Twenty-Five) that ship no `[hidden]` CSS reset.
 * Fixed: theme styles no longer distort the form’s line icons (global `svg { fill}`
   rules), underline the contact links or outline the collapse button.
 * New: «Date & time box max height» option — in Settings  Appearance (desktop +
   mobile) and in the Elementor widget (responsive).
 * Improved: service-picker categories stack vertically on small screens instead
   of a horizontal scroller.

#### 1.1.0

 * First public release on WordPress.org.
 * Stability, performance and UI polish across the admin panel and booking form.
 * Consistent 12/24-hour time and date formatting everywhere in the panel.
 * Updated German, French, Spanish, Italian and Polish translations.

#### 0.3.0

 * Online payments: Stripe Checkout, PayPal and Square — hosted checkouts with server-
   side verification and automatic slot-conflict refunds.
 * Events & tickets with an Elementor widget (list / grid / standard) and ticket
   sales through every booking mode.
 * Customer panel with magic-link sign-in, self-service cancellations, invoices 
   and GDPR data export/erasure.
 * New form layouts (process timeline, progress bar, icon rail), design skins (outline,
   soft, dark, glass) and popup mode.
 * Discount coupons, service extras, group appointments, recurring series, waiting
   list, multiple locations, invoices, per-staff calendar feeds, refunds, WhatsApp
   links, taxes, duration variants, QR add-to-calendar — all behind feature switches.
 * Dashboard reports, currency & time-format settings, phone country picker, customer
   notes, mobile polish and a recolourable admin panel.

#### 0.2.0

 * Rebranded to Zoe Booking with a single, unified admin menu.
 * Custom Services & Staff screens, visual month calendar, dual Standalone / WooCommerce
   mode.

#### 0.1.0

 * Initial booking engine, WooCommerce product-type integration, Elementor widget.

## Meta

 *  Versjon **1.8.1**
 *  Sist oppdatert **5 dager siden**
 *  Aktive installasjoner **70+**
 *  WordPress-versjon ** 6.0 eller nyere **
 *  Testet opp til **7.0.4**
 *  PHP-versjon ** 7.4 eller nyere **
 *  Språk
 * [Dutch](https://nl.wordpress.org/plugins/zoebooking/) og [English (US)](https://wordpress.org/plugins/zoebooking/).
 *  [Oversett til ditt språk](https://translate.wordpress.org/projects/wp-plugins/zoebooking)
 * Stikkord
 * [appointments](https://nb.wordpress.org/plugins/tags/appointments/)[booking](https://nb.wordpress.org/plugins/tags/booking/)
   [calendar](https://nb.wordpress.org/plugins/tags/calendar/)[elementor](https://nb.wordpress.org/plugins/tags/elementor/)
   [woocommerce](https://nb.wordpress.org/plugins/tags/woocommerce/)
 *  [Avansert visning](https://nb.wordpress.org/plugins/zoebooking/advanced/)

## Vurderinger

 5 av 5 stjerner.

 *  [  1 5-star review     ](https://wordpress.org/support/plugin/zoebooking/reviews/?filter=5)
 *  [  0 4-star reviews     ](https://wordpress.org/support/plugin/zoebooking/reviews/?filter=4)
 *  [  0 3-star reviews     ](https://wordpress.org/support/plugin/zoebooking/reviews/?filter=3)
 *  [  0 2-star reviews     ](https://wordpress.org/support/plugin/zoebooking/reviews/?filter=2)
 *  [  0 1-star reviews     ](https://wordpress.org/support/plugin/zoebooking/reviews/?filter=1)

[Din omtale](https://wordpress.org/support/plugin/zoebooking/reviews/#new-post)

[Se alle omtalene](https://wordpress.org/support/plugin/zoebooking/reviews/)

## Bidragsytere

 *   [ Inflow Surge ](https://profiles.wordpress.org/inflowsurge/)

## Brukerstøtte

Har du noe å si? Trenger du hjelp?

 [Vis brukerstøtteforumet](https://wordpress.org/support/plugin/zoebooking/)