Title: HAQ Booking
Author: Husain Ahmed
Published: <strong>September 15, 2026</strong>
Last modified: October 3, 2026

---

Search plugins

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

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

# HAQ Booking

 By [Husain Ahmed](https://profiles.wordpress.org/husainahmedqureshi/)

[Download](https://downloads.wordpress.org/plugin/haq-booking.1.1.2.zip)

 * [Details](https://test.wordpress.org/plugins/haq-booking/#description)
 * [Reviews](https://test.wordpress.org/plugins/haq-booking/#reviews)
 *  [Installation](https://test.wordpress.org/plugins/haq-booking/#installation)
 * [Development](https://test.wordpress.org/plugins/haq-booking/#developers)

 [Support](https://wordpress.org/support/plugin/haq-booking/)

## Description

HAQ Booking turns your WordPress site into an appointment booking system. Everything
runs inside this plugin — no theme dependency and no required companion plugins.

#### Features

 * Create services with duration, price and status
 * Manage staff, working hours, breaks and assigned services
 * Customer records with booking history
 * Appointment list and admin calendar
 * Availability engine with open time slots
 * Mobile-friendly booking form via shortcode `[haq_booking]` or Gutenberg block
 * Email confirmation, cancellation and reschedule notices
 * Customer cancel and reschedule via secure token links
 * GDPR export / erase personal data support

#### Admin screens

All screens live under the **HAQ Booking** menu and require the `manage_haq_booking`
capability (granted to administrators on activation).

 * **Dashboard** – today’s totals (confirmed, pending, cancelled), the next upcoming
   appointments, a setup checklist with progress bar and quick links.
 * **Appointments** – book on behalf of a customer (existing customers are matched
   by email), edit staff, time, status and notes, delete, and filter by status.
 * **Calendar** – month view with previous / next / today navigation, colour-coded
   by status; click any appointment to edit it.
 * **Services** – name, description, duration in minutes, price and active / inactive
   status.
 * **Staff** – name, email, phone, active switch, services offered and weekly working
   hours with work and break rows. New staff start with Monday–Friday, 9:00–17:00.
 * **Customers** – searchable list with booking counters (total, completed, cancelled,
   no-show), WhatsApp number, messaging opt-in and private notes.
 * **Settings** – business details, booking rules, email sender, currency and date/
   time formats with live preview, and the booking page.
 * **WordPress dashboard widget** – today’s appointment counts at a glance.

#### Booking form

 * Four steps: service  staff  date and time  your details, followed by a confirmation
   screen with the booking code.
 * Optional “Any available staff” choice that picks a free staff member automatically.
 * Name and email are required; phone and notes are optional.
 * Works with any theme, uses no jQuery, and loads its assets only on pages that
   contain the form.
 * Falls back to `?rest_route=` automatically if pretty REST URLs are unavailable.

#### How available times are calculated

For the chosen service, date and staff member, the plugin:

 1. Takes the staff member’s working blocks for that weekday.
 2. Removes the staff member’s break rows.
 3. Steps through the day using the **Slot interval** setting and keeps start times
    where the whole service duration fits.
 4. Removes times that overlap existing appointments (cancelled appointments free the
    slot).
 5. Removes times sooner than the **Minimum notice** and dates beyond the **Booking
    window**.

#### Appointment statuses

    ```
    pending, `confirmed`, `completed`, `cancelled` and `no_show`. Choose **Pending** as the default status in Settings if you want to approve each booking manually.
    ```

#### Email notifications

Plain-text emails are sent with `wp_mail()` from the sender name and address set
in Settings.

 * **New booking** – to the customer (with a manage link), the admin notification
   email and the assigned staff member.
 * **Cancellation** – to the customer and the admin.
 * **Reschedule** – to the customer and the admin.

#### Customer self-service

Each booking gets a unique booking code and a secret manage token. The link in the
customer’s email opens the booking page with `?haqb_manage=TOKEN`, where the customer
can cancel or pick a new time. Select your booking page in **Settings** so these
links point to the right page.

#### Settings reference

 * **Business name** and **Admin notification email**
 * **Slot interval** (default 15 minutes), **Minimum notice** (default 1 hour), **
   Booking window** (default 60 days)
 * **Default booking status** (confirmed or pending) and **Any available staff**
   on/off
 * **From name** and **From address** for emails
 * **Currency code**, **currency symbol**, **date format** and **time format**
 * **Booking page** used for manage links

#### Shortcode

Place this shortcode on any page:

    ```
    [haq_booking]
    ```

Or insert the **HAQ Booking** block in the editor.

#### For developers

REST API (namespace `haq-booking/v1`):

 * `GET /services` – active services
 * `GET /staff?service_id=` – staff who offer a service
 * `GET /slots?service_id=&staff_id=&date=YYYY-MM-DD` – available start times
 * `POST /book` – create a booking (requires the `wp_rest` nonce)
 * `GET /manage/{token}` and `POST /manage/{token}` – view, cancel or reschedule
   a booking

Actions:

 * `haqb_appointment_created`, `haqb_appointment_confirmed`, `haqb_appointment_cancelled`,`
   haqb_appointment_completed` – receive the appointment object
 * `haqb_appointment_rescheduled` – receives the updated and previous appointment
 * `haqb_booking_after_submit` – after a booking made through the public form
 * `haqb_booking_form_fields` – output extra fields in the details step
 * `haqb_enqueue_booking_assets` – enqueue extra scripts with the form
 * `haqb_daily_maintenance_run` – daily maintenance cron

Filters:

 * `haqb_can_book` – allow or reject a booking (return `true`, `false` or a `WP_Error`)
 * `haqb_available_slots` – modify the list of available times
 * `haqb_booking_response` – modify the public booking API response
 * `haqb_notification_recipients` – change an email recipient per notification type
   and role
 * `haqb_booking_form_fields_allowed_html` – allowed HTML for extra form fields
 * `haqb_show_whatsapp_fields` – show or hide the WhatsApp number and opt-in fields

JavaScript: the form dispatches a `haqb:bookingSuccess` event on `document` with`{
root, booking }` in `event.detail`.

#### Optional extensions

An optional commercial add-on can extend HAQ Booking with messaging, payments and
calendar sync. The free plugin works fully on its own.

#### Privacy

The plugin stores customer name, email, phone, optional messaging number, appointment
details and related notes in your WordPress database. The free plugin does not send
data to third-party APIs.

Data is kept in these custom tables: `haqb_services`, `haqb_staff`, `haqb_staff_services`,`
haqb_staff_availability`, `haqb_holidays`, `haqb_customers` and `haqb_appointments`.
Settings are stored in the `haqb_settings` option.

The plugin registers with the WordPress **Export Personal Data** and **Erase Personal
Data** tools. Erasing anonymises the customer record and clears appointment notes
while keeping the appointment history for your records. Suggested text is added 
to the privacy policy guide.

Deactivating the plugin keeps all data. Deleting the plugin from the Plugins screen
removes its tables, settings and capability.

## Screenshots

[⌊Booking form, step 1: the customer chooses a service.⌉⌊Booking form, step 1: the
customer chooses a service.⌉[

Booking form, step 1: the customer chooses a service.

[⌊Booking form, step 2: the customer chooses a staff member.⌉⌊Booking form, step
2: the customer chooses a staff member.⌉[

Booking form, step 2: the customer chooses a staff member.

[⌊Booking form, step 3: the customer picks a date and an available time slot.⌉⌊Booking
form, step 3: the customer picks a date and an available time slot.⌉[

Booking form, step 3: the customer picks a date and an available time slot.

[⌊Booking form, step 4: the customer enters their contact details.⌉⌊Booking form,
step 4: the customer enters their contact details.⌉[

Booking form, step 4: the customer enters their contact details.

[⌊Booking confirmation screen shown after a successful booking.⌉⌊Booking confirmation
screen shown after a successful booking.⌉[

Booking confirmation screen shown after a successful booking.

[⌊Admin dashboard: today's figures, upcoming appointments, getting-started checklist
and quick links.⌉⌊Admin dashboard: today's figures, upcoming appointments, getting-
started checklist and quick links.⌉[

Admin dashboard: today’s figures, upcoming appointments, getting-started checklist
and quick links.

[⌊Appointments: add a booking on behalf of a customer and filter bookings by status.⌉⌊
Appointments: add a booking on behalf of a customer and filter bookings by status
.⌉[

Appointments: add a booking on behalf of a customer and filter bookings by status.

[⌊Calendar: month view of every appointment, color-coded by status.⌉⌊Calendar: month
view of every appointment, color-coded by status.⌉[

Calendar: month view of every appointment, color-coded by status.

[⌊Services: add services with duration, price and active status.⌉⌊Services: add 
services with duration, price and active status.⌉[

Services: add services with duration, price and active status.

[⌊Staff: add team members and choose the services each one offers.⌉⌊Staff: add team
members and choose the services each one offers.⌉[

Staff: add team members and choose the services each one offers.

[⌊Customers: customer records with WhatsApp opt-in, notes and booking history.⌉⌊
Customers: customer records with WhatsApp opt-in, notes and booking history.⌉[

Customers: customer records with WhatsApp opt-in, notes and booking history.

[⌊Settings: business details, booking rules, email, currency and the booking page.⌉⌊
Settings: business details, booking rules, email, currency and the booking page.⌉[

Settings: business details, booking rules, email, currency and the booking page.

## Blocks

This plugin provides 1 block.

 *   HAQ Booking

## Installation

 1. Upload the `haq-booking` folder to `/wp-content/plugins/`, or install through the
    Plugins screen.
 2. Activate the plugin.
 3. Go to **HAQ Booking  Settings** and set your business name and notification email.
 4. Add services and staff under **HAQ Booking**.
 5. Place the `[haq_booking]` shortcode on a page, or insert the HAQ Booking block.
 6. In **Settings**, select that page as the Booking page (needed for cancel/reschedule
    email links).

## FAQ

### Does this require a specific theme?

No. It works with any standard WordPress theme.

### Where is data stored?

In custom tables in your WordPress database (`wp_haqb_*`).

### Can customers cancel or reschedule?

Yes. Confirmation emails include a secure manage link when a booking page is configured
in Settings.

### Does the free plugin send WhatsApp messages?

No. Messaging integrations, if any, are provided only by optional add-ons and require
your own provider credentials.

### Can I approve bookings before they are confirmed?

Yes. In **Settings  Booking rules**, set **Default booking status** to **Pending**.
New bookings then wait for you to change their status on the Appointments screen.

### Does the free plugin send reminders?

No. It sends confirmation, cancellation and reschedule emails only.

### Does it take online payments?

No. Service prices are shown on the form and stored with each appointment, but no
payment is collected.

### The booking form says “Invalid security token”.

The form uses a WordPress security token that expires. If you use a page-caching
plugin or host cache, exclude your booking page from the cache.

### Does it support multisite?

Yes. Network activation installs the tables on every site, and new sites are set
up automatically.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“HAQ Booking” is open source software. The following people have contributed to 
this plugin.

Contributors

 *   [ Husain Ahmed ](https://profiles.wordpress.org/husainahmedqureshi/)

[Translate “HAQ Booking” into your language.](https://translate.wordpress.org/projects/wp-plugins/haq-booking)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/haq-booking/), check
out the [SVN repository](https://plugins.svn.wordpress.org/haq-booking/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/haq-booking/) by
[RSS](https://plugins.trac.wordpress.org/log/haq-booking/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.1.2

 * Fixed plugin page screenshots, banner and icon assets.

#### 1.1.1

 * Added screenshots and detailed screenshot captions to the plugin page.

#### 1.1.0

 * WordPress.org packaging and structure cleanup.
 * Renamed display name to HAQ Booking for clearer free-plugin scope.
 * Server-rendered services on the booking form for more reliable loading.
 * Improved Settings admin UI.
 * Fixed asset URL scheme handling and REST fallback for local/https setups.
 * Daily maintenance cron now flushes plugin object-cache groups.
 * Softened optional add-on mentions for directory guidelines.
 * Regenerated translation template.

#### 1.0.3

 * Settings UI sections and sticky save bar.
 * Admin CSS shared with Pro screens when present.

#### 1.0.2

 * Booking form reliability fixes (inline config, relative assets).

#### 1.0.1

 * Empty/error states for the public booking form.

#### 1.0.0

 * Initial release.

## Meta

 *  Version **1.1.2**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/haq-booking/)
 * Tags
 * [appointment](https://test.wordpress.org/plugins/tags/appointment/)[booking](https://test.wordpress.org/plugins/tags/booking/)
   [calendar](https://test.wordpress.org/plugins/tags/calendar/)[reservations](https://test.wordpress.org/plugins/tags/reservations/)
   [scheduling](https://test.wordpress.org/plugins/tags/scheduling/)
 *  [Advanced View](https://test.wordpress.org/plugins/haq-booking/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/haq-booking/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/haq-booking/reviews/)

## Contributors

 *   [ Husain Ahmed ](https://profiles.wordpress.org/husainahmedqureshi/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/haq-booking/)