BookWhip — Appointment Booking, Quotes & Jobs

Everything a service business needs inside WordPress: online booking, quotes with revisions, jobs with technicians, invoices, deposits and online payments.

BookServices, staff, working hours, buffers, group classes, repeating visits, several services in one go.
Quote → JobCustomers ask, you send a price, they accept or ask for changes; accepted quotes become jobs.
Get paidDeposits and balances by WooCommerce, Stripe, PayPal or in person — with reminders and receipts.

Requirements

Installation

  1. In WordPress go to Plugins → Add New → Upload Plugin and choose bookwhip.zip from your download.
  2. Click Install Now, then Activate.
  3. The Welcome to BookWhip screen opens. BookWhip also creates four pages for your customers: Book an Appointment, Your Quote, Your Invoice and My Bookings.
Welcome screen
The Welcome screen with your dashboard, quick-start steps and business templates.

Quick start (5 minutes)

  1. Pick a business template on the Welcome screen (or add services yourself under BookWhip → Services).
  2. Open BookWhip → Staff, add the people customers book, tick their services and set their weekly hours.
  3. Check BookWhip → Settings: currency, how far ahead people may book, minimum notice and payments.
  4. Visit the Book an Appointment page — your booking form is live. Add it to your menu.

Business templates

One click adds typical services with prices, durations and deposits for: Clinic & health, Salon & spa, Consultant & coach, Tutor & lessons, Fitness & yoga, Home services. Nothing is ever deleted and running a template twice does not create duplicates. If you have no staff yet, you are added as the first staff member with Monday–Friday hours.

Services

BookWhip → Services → Add service.

FieldWhat it does
Duration / PriceDefault length and price. Each staff member can have their own price and duration.
How customers bookInstant – confirmed right away. On approval – you confirm each booking. Quote first – customers describe the job and you send a price.
DepositNone, fixed amount or percent. Bookings with a deposit are held until it is paid (see Payments).
Buffer before / afterFree time kept before and after each appointment (cleanup, travel).
Seats per slotMore than 1 makes it a group class (several customers share the same time).
Online meetingNone, Zoom or Google Meet — a link is created when the booking is confirmed.
Price (EUR, GBP …)Appears when you add extra currencies in Settings.

Staff & working hours

BookWhip → Staff. For each person: weekly hours (switch a day on or off, add one or more breaks), the services they offer (with optional own price and duration), locations, color and an optional WordPress user so they can sign in and see My Schedule.

Staff hours
Weekly hours with breaks, and the services this person offers.

Days off & holidays

BookWhip → Days off. Choose Whole business for holidays or a person for vacations. Leave the hours empty for whole days. Nobody can book in these times.

Locations

Optional. Add branches with their own address and time zone, then link staff to them.

Customer pages

How to use
BookWhip → How to use: block, Elementor widget, shortcode builder and your pages.
PageShortcodePurpose
Book an Appointment[bookwhip_booking]The booking form (and quote requests).
My Bookings[bookwhip_portal]Customer portal: bookings, quotes, invoices; reschedule and cancel.
Your Quote[bookwhip_quote]Opened from the private link in the quote email.
Your Invoice[bookwhip_invoice]Opened from the invoice email; shows the pay buttons.
You can move these shortcodes to any page, or use the Elementor widgets and blocks instead. BookWhip → How to use (the last menu item) shows all three ways, a shortcode builder and the status of these pages.

Bookings calendar

BookWhip → Bookings shows a week, month or list view. Scheduled jobs appear in teal. Click a booking to change its status (Confirmed, Done, No-show, Cancelled), move it to another time or see its payments. Add booking takes phone bookings — the time is checked against hours, breaks, days off and other bookings exactly like online.

Calendar
Week view with bookings and jobs.

Quotes

  1. A customer picks a Quote first service and describes the job (address, details, preferred date).
  2. You open BookWhip → Quotes, add lines, discount, tax %, deposit (amount or %), a message and an expiry date, then Save & send.
  3. The customer opens the private link and can accept, ask for changes or decline. Asking for changes lets you send a new version — every version is kept in the history.
  4. An accepted quote becomes a job, and a deposit invoice is created when the quote has a deposit.
Quote builder
The quote builder with the customer's request and history.

Jobs & technicians

BookWhip → Jobs. Schedule a job, choose one or more technicians (each is checked for other bookings, jobs and time off) and move it through In progress → Completed. Completing a job creates the balance invoice (quote total minus what was already invoiced). The customer and each technician get an email with a calendar file.

Invoices

BookWhip → Invoices lists every invoice with billed, paid and outstanding totals. Record in-person payments on the job or booking screen. Paid amounts are always added up from the payment records, so totals cannot drift.

Dashboard

The Welcome screen shows today's and the next 7 days' appointments, this month's revenue compared to last month, outstanding invoices, new quote requests, upcoming jobs and a 30-day revenue chart.

Staff: My Schedule

Staff linked to a WordPress user (role BookWhip Staff) see only My Schedule: their own appointments and jobs for the next 14 days, with Start / Done / No-show buttons. They cannot see settings, other people's data or money.

Booking form

Customers pick a service → specialist (or Any available) → date and time → their details. Times are shown in your business time zone. Every time is checked again on the server when they confirm, and a per-staff lock makes double bookings impossible — even when two people click at the same moment.

Booking form
The booking form on a phone and a desktop.

Repeating visits

When Settings → Customers can book repeating visits is on, customers can choose every week, every 2 weeks or every month for 2–12 visits. Each visit is checked; dates that are not free (for example a holiday) are skipped and shown to the customer. The whole series shares one deposit invoice and is confirmed — or released — together.

Several services at once

On the details step customers can press Add another service (up to 6). All of them are booked in one order with one deposit. If one time was taken meanwhile, nothing is booked and the customer is told which one.

Customer portal

Every email contains a private Manage your booking link to My Bookings. Customers see upcoming and past bookings, quotes and invoices, and can reschedule (same specialist) or cancel up to the number of hours you allow (Notifications → rules, default 24 hours).

Customer accounts

Customers never need an account. If you like, turn on Settings → Offer an optional customer account: a checkbox appears on the booking form and creates a WordPress account with the BookWhip Customer role. These users can never open the WordPress dashboard — they are sent to their portal, and the admin bar is hidden for them.

Extra questions

Settings → Extra questions on the booking form. Add short text, long text, dropdown or checkbox questions and mark them as required. Answers appear on the booking and in your “New booking” email (placeholder {custom_fields}).

Payments & deposits

Turn methods on in Settings → Payments. A booking that needs a deposit shows Pay deposit right after booking and in the email; it is confirmed automatically when the deposit is paid. If it is not paid within the hold time (default 30 minutes) the booking is cancelled and the time freed. All keys are stored encrypted and never shown again.

Your own accounts: Stripe, PayPal, Twilio, Google and Zoom are third-party services. You connect your own accounts; their fees are charged by those providers and are not included in BookWhip.

Stripe

  1. In Stripe → Developers → API keys copy the Secret key.
  2. In Stripe → Developers → Webhooks add an endpoint with the URL shown in BookWhip Settings and the event checkout.session.completed. Copy the Signing secret.
  3. Paste both into Settings → Payments → Stripe and tick Stripe.

Every webhook is signature-checked and duplicate events are ignored.

PayPal

Create a REST app at developer.paypal.com, copy its Client ID and Secret into Settings, and untick Sandbox when you go live. Payments are captured on your server after the customer approves them.

WooCommerce

Tick WooCommerce checkout to use any gateway you already set up in WooCommerce. BookWhip creates an order for the amount due; when the order is processing or completed the payment is recorded once.

Several currencies

Add extra currencies in Settings, then give services a price in each one. Customers switch the currency on the booking form; only services priced in that currency are shown, and the booking, invoice and payment use it. There are no live exchange rates — you set each price.

Emails, SMS & WhatsApp

BookWhip → Notifications. Thirteen messages — booking received / confirmed / moved / cancelled, 24-hour reminder, quote sent and answered, job scheduled (customer and technicians), invoice and receipt. Edit subject and text, choose email, SMS and/or WhatsApp per message, and set your business name and email color. Confirmations include a calendar (.ics) file.

Placeholders: {first_name} {customer_name} {service} {staff} {date} {time} {booking_number} {amount} {portal_link} {quote_link} {invoice_link} {address} {business_name} {custom_fields}.

SMS / WhatsApp use your own Twilio account: paste the Account SID, Auth token and sender numbers.

Google Calendar & Google Meet

  1. In Google Cloud create an OAuth client (type Web application) and enable the Google Calendar API.
  2. Add the redirect URI shown on BookWhip → Integrations.
  3. Paste the Client ID and secret, save, then press Connect Google Calendar for each staff member.

Confirmed bookings are added to that person's calendar, moved and cancelled bookings are updated, and their busy times in Google block those times in BookWhip. Services set to Google Meet get a Meet link.

Zoom

Create a Server-to-Server OAuth app in the Zoom App Marketplace (scope meeting:write) and paste the Account ID, Client ID and secret on the Integrations screen. Services set to Zoom get a meeting link when confirmed.

Elementor widgets

Search for BookWhip in the Elementor panel: Booking Form (with optional preselected service and specialist), Customer Portal, Quote View and Invoice & Payment. The form works inside the Elementor editor too.

Gutenberg blocks

In the block editor add BookWhip · Booking Form, Customer Portal, Quote View or Invoice & Payment. The Booking Form block can preselect a service and specialist in the sidebar.

Shortcodes

ShortcodeOptions
[bookwhip_booking]service="ID" starts with that service; staff="ID" preselects a person. Without a shortcode, link to the booking page with ?service=ID&staff=ID. The builder on BookWhip → How to use writes both for you.
[bookwhip_portal]—
[bookwhip_quote]—
[bookwhip_invoice]—

Settings reference

Settings
Settings with sections for rules, customers, currency, questions, payments and data.
SettingDefault
Time step15 minutes — how often a start time is offered
Minimum notice60 minutes before the start
Book up to90 days ahead
Repeating visitsOn
Optional customer accountOff
Hold unpaid bookings30 minutes
Reschedule / cancel onlineOn, up to 24 hours before
Delete data when the plugin is deletedOff (your data is kept)

Roles & security

Privacy & GDPR

BookWhip adds an exporter and an eraser to Tools → Export / Erase Personal Data. Erasing removes the customer's personal details while keeping booking, invoice and payment records (without the person) for your accounts. A suggested text is added to Settings → Privacy.

For developers

Actions: bookwhip_booking_created, bookwhip_booking_confirmed, bookwhip_booking_cancelled, bookwhip_booking_rescheduled, bookwhip_quote_requested, bookwhip_quote_sent, bookwhip_quote_accepted, bookwhip_job_created, bookwhip_job_scheduled, bookwhip_invoice_created, bookwhip_payment_recorded, bookwhip_notification_sent. Filter: bookwhip_external_busy (block times from any external calendar). REST namespace: bookwhip/v1. All tables use the prefix {wp_prefix}bookwhip_.

FAQ

Do customers need an account?

No. They book as guests and manage everything from the private link in their email.

Can two people book the same time?

No. The server re-checks every time inside a per-staff lock.

Is Elementor or WooCommerce required?

No — both are optional.

Emails do not arrive.

Install an SMTP plugin (for example WP Mail SMTP) so your site sends mail reliably.

Can I translate BookWhip?

Yes. The languages/bookwhip.pot file works with Loco Translate or Poedit. RTL languages are supported.

Changelog

1.0.0 — November 2026
- First release

Support

Questions or a problem? Open a ticket at fekbd.com/support. Please include your WordPress and PHP versions and what you tried. Support covers help with the plugin's features and bug fixes.