Title: Doctor Appointment Booking &amp; Clinic Management – Alnora
Author: alnoramanager
Published: <strong>June 20, 2026</strong>
Last modified: August 20, 2026

---

Search plugins

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

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

# Doctor Appointment Booking & Clinic Management – Alnora

 By [alnoramanager](https://profiles.wordpress.org/alnoramanager/)

[Download](https://downloads.wordpress.org/plugin/alnora-clinic.1.3.1.zip)

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

 [Support](https://wordpress.org/support/plugin/alnora-clinic/)

## Description

**Alnora is the all-in-one doctor appointment booking and clinic management plugin
for WordPress — built exclusively for private medical practices.**

Turn your WordPress site into a complete booking platform in minutes. Whether you’re
a solo practitioner or a busy multi-doctor, multi-location clinic — dentists, psychologists,
physiotherapists, dermatologists, cosmetic clinics or GPs — Alnora gives your patients
a beautiful, multi-step booking experience and gives your front desk one calm place
to manage it all.

No generic salon plugin bent into shape. No spreadsheets. No five add-ons duct-taped
together. Just one focused product that understands doctors, services, patients 
and privacy.

👉 [Live demo](https://alnora-booking.com/demo/) · [See Pro pricing](https://alnora-booking.com/pricing/)·
[Documentation](https://alnora-booking.com/docs/)

**Why private clinics choose Alnora**

 * 🏥 **Built for medicine, not retail.** Every screen assumes doctors, services
   and patients — so setup is fast and nothing feels like a workaround.
 * 🔒 **Your data stays yours.** Everything runs on your own WordPress site and 
   database. Patient contact details are encrypted at rest (AES-256).
 * 🛡️ **GDPR-ready from day one.** Consent is captured with a timestamp and IP, 
   and inactive records can auto-delete on a schedule you choose.
 * 💚 **Free forever, unlimited.** Unlimited doctors, services and bookings — no
   per-booking fees, no artificial caps.

🩺 **Free features — everything you need to start taking bookings**

 * **Unlimited doctors** — full profiles with photo, bio, email and per-doctor weekly
   working hours and breaks.
 * **Unlimited services** — rich descriptions with an optional “Read more” popup,
   plus duration, buffer time, price and colour.
 * **“Offered by” control** — assign each service to specific doctors, or leave 
   it available to every doctor.
 * **Doctor & service categories** — organise your team and your menu; doctor categories
   appear on the booking form.
 * **Beautiful multi-step booking wizard** — patients choose doctor  service  date&
   time  details. Drop it anywhere with the `[alnora_booking]` shortcode or the 
   Gutenberg block.
 * **Smart availability engine** — respects working hours, breaks, buffers, existing
   bookings and your booking window, so double-bookings simply can’t happen.
 * **Patient self-service cancellation** — a secure link in every confirmation lets
   patients cancel within the notice period you set.
 * **Encrypted patient records** — email and phone encrypted at rest (AES-256) with
   a hashed lookup, all on your own server.
 * **GDPR consent & retention** — timestamped consent with IP, plus optional automatic
   deletion of inactive records.
 * **Automatic emails & reminders** — booking confirmations, clinic notifications,
   status updates and timed reminders, all sent for you.
 * **A clean, branded admin** — a stats dashboard, a searchable appointment list
   with inline status control and an at-a-glance details popup, plus doctor, service,
   patient and settings screens.
 * **Dedicated clinic roles** — built-in Clinic Doctor, Receptionist and Patient
   roles, so every team member signs in with the right level of access.
 * **Works with your formats** — dates, times and the clinic timezone follow your
   WordPress settings and show on the booking form.
 * **13 built-in languages** — set the patient-facing language independently of 
   your site language (see below).
 * **Developer-friendly** — dependency-free vanilla JavaScript (no build step) and
   a REST API under the `alnora-clinic/v1` namespace.

⭐ **Alnora Pro — turn booking into a complete clinic system**

Upgrade to [Alnora Pro](https://alnora-booking.com/pricing/) and add everything 
a growing private practice needs:

 * 💳 **Payments & deposits** — take card (Stripe) and PayPal payments at booking,
   require a deposit, and issue full or partial refunds — all inside WordPress.
 * ✉️ **Email a payment link** — send patients a secure link to pay a deposit, the
   balance or the full amount for phone and walk-in bookings, and it’s marked paid
   automatically.
 * 🧾 **Branded invoice PDFs** — a professional, logo-headed invoice for every appointment,
   marked paid automatically.
 * 🔁 **Recurring appointments & waitlist** — let patients book a whole course of
   visits in one step, and fill cancellations automatically.
 * 🔄 **One-click rescheduling** — move any booking to a new time; the patient is
   automatically re-notified and calendars and reminders update to match.
 * 🔔 **SMS & WhatsApp reminders** — cut no-shows with automated text and WhatsApp
   messages (via Twilio), alongside email.
 * 📅 **One-way calendar sync** — push bookings to Google Calendar and Microsoft
   Outlook, with events removed automatically on cancellation.
 * 🎥 **Telehealth** — auto-generate Zoom or Google Meet links for online consultations.
 * 🗂️ **Encrypted medical records** — clinical notes with one-click prescription
   and diagnosis PDFs, in any language.
 * 👤 **Patient portal** — patients log in to view, cancel, rebook and download 
   their documents.
 * 🔑 **Doctor self-service login** — doctors sign in to a read-only view of their
   own profile, services and diary, seeing only their own appointments.
 * 📍 **Multiple locations** — run several branches, each with its own doctors, 
   availability, photo and contact details.
 * 🎨 **Full branding & templates** — match the booking widget to your site and 
   edit every email template.
 * ⚡ **Automation & reporting** — Zapier webhooks, CSV import, revenue reports 
   and a complete GDPR toolkit (export, erasure, audit log).

👉 **[Upgrade to Alnora Pro »](https://alnora-booking.com/pricing/)** — 30-day money-
back.

🌍 **Speak your patients’ language**

The booking form and every patient email are available in **13 languages** out of
the box — English, German, French, Spanish, Italian, Dutch, Polish, Czech, Swedish,
Danish, Norwegian, Ukrainian and Russian — chosen with a single **Patient language**
setting, independent of your site language. Every string is translation-ready via
the `alnora-clinic` text domain and standard `.mo`/`.po` files, so you can add or
refine languages with tools like Loco Translate. (Localised month names in email
dates additionally require the matching WordPress language pack under Settings  
General  Site Language.)

### Notes for developers

 * The booking form and admin tables are dependency-free **vanilla JavaScript** (
   no build step required). The optional Gutenberg block uses `wp.element` and also
   needs no build step.
 * For production, define a fixed encryption key in `wp-config.php`:
    define( ‘ALNC_ENCRYPTION_KEY’,‘
   your-32-char-random-key-here’ ); If omitted, a key is generated and stored once
   in the options table so the plugin works out of the box.

### External Services

This plugin connects to **Freemius**, a third-party service we use for software 
licensing, update delivery and — only if you opt in — anonymous usage analytics 
and diagnostics.

When and what data is sent: on activation the plugin shows an opt-in screen. If 
you click “Allow & Continue”, it sends your site URL, your WordPress and PHP versions,
and the email address of the admin who opts in, so we can deliver updates, verify
licences and provide support. If you click “Skip”, no data is sent and the plugin
remains fully functional. If you later purchase or activate a Pro licence, licence
and site-activation details are exchanged with Freemius to validate it.

Service provider: Freemius, Inc. — Terms of Service: https://freemius.com/terms/—
Privacy Policy: https://freemius.com/privacy/

Aside from Freemius, the plugin does not connect to any other external service. 
All assets (fonts, scripts and styles) are bundled with the plugin and served from
your own site.

## Screenshots

[⌊The multi-step booking wizard as patients see it on the front end.⌉⌊The multi-
step booking wizard as patients see it on the front end.⌉[

The multi-step booking wizard as patients see it on the front end.

[⌊The appointments list with inline status control.⌉⌊The appointments list with 
inline status control.⌉[

The appointments list with inline status control.

[⌊The doctor profile editor with working hours and break configuration.⌉⌊The doctor
profile editor with working hours and break configuration.⌉[

The doctor profile editor with working hours and break configuration.

[⌊The dashboard with appointment stats at a glance.⌉⌊The dashboard with appointment
stats at a glance.⌉[

The dashboard with appointment stats at a glance.

[⌊The settings screen with autosave.⌉⌊The settings screen with autosave.⌉[

The settings screen with autosave.

[[

[[

[[

[[

## Blocks

This plugin provides 1 block.

 *   Alnora Booking

## Installation

 1. Upload the `alnora-clinic` folder to `/wp-content/plugins/`.
 2. Activate **Alnora** through the _Plugins_ menu in WordPress. On activation the 
    plugin creates its database tables, custom roles and a **Book an Appointment** 
    page containing the booking shortcode.
 3. Go to **Alnora  Doctors** and add at least one doctor (set their working hours).
 4. Go to **Alnora  Services** and add at least one service.
 5. Visit the auto-created booking page (link shown under **Alnora  Settings**) to 
    test a booking.

## FAQ

### Is Alnora really free?

Yes. The free version is complete and unlimited — add as many doctors, services 
and bookings as you like, with no per-booking fees. Payments, reminders by SMS/WhatsApp,
calendar sync and clinical records are part of the optional [Alnora Pro](https://alnora-booking.com/pricing/)
upgrade.

### What’s the difference between the free version and Alnora Pro?

The free version handles the whole booking journey — booking form, availability,
patient records, GDPR consent and automatic email reminders. Alnora Pro adds online
payments and deposits, pay-by-link invoices, recurring appointments and a waitlist,
SMS & WhatsApp reminders, Google/Outlook calendar sync, telehealth links, encrypted
medical records with prescription PDFs, a patient portal, multiple locations and
more. See the full comparison at [alnora-booking.com/pricing](https://alnora-booking.com/pricing/).

### Does the booking form work with any theme?

Yes. The booking wizard is rendered inside a scoped `.alnc-booking` container with
its own styles. A small CSS reset neutralises common theme interference (button 
padding, box-shadow, etc.).

### How do I embed the booking form?

Place the shortcode `[alnora_booking]` on any page, or use the **Alnora Booking 
Form** Gutenberg block. A **Book an Appointment** page is created automatically 
on activation.

### Can I pre-select a doctor or service in the shortcode?

Pre-selecting a doctor or service via shortcode attributes (e.g. `doctor="1" service
="2"`) is available in **Alnora Pro**. The free version embeds the full booking 
wizard with the plain `[alnora_booking]` shortcode.

### Is patient data stored securely?

Patient email and phone are encrypted at rest using AES-256. A SHA-256 hash of the
email is stored separately for lookups. GDPR consent is recorded with a timestamp
and IP address.

### How many doctors can I add?

There is no limit — add as many doctors as your clinic needs, each with their own
profile, working hours and services.

### Where do I configure email notifications?

Go to **Alnora  Settings  Email & reminders**. You can set the from name, from address,
admin notification email and reminder lead time.

### Does it work with WPML or Polylang?

All strings are translation-ready via the `alnora-clinic` text domain. Full WPML/
Polylang compatibility is planned for a future release.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Doctor Appointment Booking & Clinic Management – Alnora” is open source software.
The following people have contributed to this plugin.

Contributors

 *   [ alnoramanager ](https://profiles.wordpress.org/alnoramanager/)
 *   [ alnoraclinic ](https://profiles.wordpress.org/alnoraclinic/)

“Doctor Appointment Booking & Clinic Management – Alnora” has been translated into
3 locales. Thank you to [the translators](https://translate.wordpress.org/projects/wp-plugins/alnora-clinic/contributors)
for their contributions.

[Translate “Doctor Appointment Booking & Clinic Management – Alnora” into your language.](https://translate.wordpress.org/projects/wp-plugins/alnora-clinic)

### Interested in development?

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

## Changelog

#### 1.3.1

 * New: **turn any email off.** A new **Email templates** list under **Settings  
   Email & reminders** shows all six emails Alnora sends — Booking received, New
   booking (clinic), Appointment confirmed, Appointment cancelled, Appointment reminder
   and Cancellation (clinic) — each with its own **Send this email** switch. Untick
   one and it is never sent; everything stays on until you change it, so nothing
   changes on update. Editing the wording of these emails is a Pro feature.

#### 1.3.0

 * Improvement: **request your language.** If the language your patients speak is
   not in the Patient language list (Settings  General), a note under the selector
   now links to our contact page so you can ask for it — send us a message with 
   the subject “Language request” and we will add it to a future release.

#### 1.2.9

 * New: doctor sign-in. When a Clinic Doctor signs in with the same email address
   as their doctor record, they are recognised automatically — they get a read-only**
   My profile** and **My services** view and see only their own appointments in 
   the Appointments list. No extra setup needed.
 * New: the clinic currency selector now offers 149 currencies from around the world,
   grouped by region (Europe, Middle East, Africa, Americas, Asia & Pacific), each
   with the correct symbol — so almost any clinic can price in its local currency.

#### 1.2.8

 * Improvement: the per-doctor **Calendar colour** picker has been removed. Doctors
   now use the Alnora brand colour everywhere, which keeps the booking form and 
   calendars consistent. Nothing needs changing — existing doctors pick up the new
   colour automatically.
 * Improvement: refreshed the admin **Settings** — the on/off options are now branded
   toggle switches for a cleaner, on-brand look.

#### 1.2.7

 * Fix: if the booking form was left open long enough for its security token to 
   expire, submitting it showed a raw “Cookie check failed” message. It now explains
   that the page has been open too long and asks you to refresh.
 * Fix: custom email templates carried over from a previous Pro install no longer
   leave unresolved placeholders (such as {location}) in patient emails.
 * Maintenance: removed unused code from the booking form loader.

#### 1.2.6

 * Fix: on the booking form, choosing a doctor who offers no services now shows 
   a clear “this doctor doesn’t work with this service — please choose another doctor”
   message, instead of the unrelated “no free slots on this day” notice.

#### 1.2.5

This is a big feature update. Your data is preserved; new database tables and columns
are created automatically on update.

 * New: categories for doctors and services — create, edit and assign categories
   to organise your team and your services. Doctor categories are shown under each
   doctor on the booking form.
 * New: rich service descriptions, with an optional per-service “Read more” popup
   on the booking form.
 * New: “Offered by” — assign a service to specific doctors, or leave it available
   to every doctor. The booking form only shows each doctor the services they offer.
 * New: search the Doctors and Services lists in the admin.
 * New: GDPR retention — optionally auto-delete (anonymise) inactive patient records
   after a set number of years. Off by default; configure under Settings  GDPR.
 * New: a “More info” popup in the Appointments list showing the full booking details
   at a glance.
 * New: the booking form shows the clinic timezone beneath the title, so patients
   can see which timezone the available times are in.
 * Improvement: dates and times across the booking form, emails and admin now follow
   your WordPress date and time format (Settings  General).
 * Improvement: more of the booking page now follows the Patient language setting,
   including the appointment self-cancellation notices and the timezone label.
 * Change: doctors are now organised with categories instead of a single specialisation
   field.
 * Change: the main admin menu is now labelled “Alnora Clinic”.
 * Improvement: doctor cards in the booking form no longer render an empty line 
   when a doctor has no category set.
 * Improvement: admin notices now display at the top of every Alnora screen, above
   the page title (previously only some screens).

#### 1.2.4

 * New: an optional upgrade path to Alnora Pro, with account and licence management,
   powered by Freemius. Any usage tracking is opt-in only — the plugin asks first
   and works fully if you skip. See the External Services section.
 * Change: pre-selecting a doctor or service through `[alnora_booking]` shortcode
   attributes is now part of Alnora Pro; the free version embeds the standard booking
   wizard.
 * Improvement: admin notices now display cleanly at the top of the Alnora screens.

#### 1.2.3

 * Hardening: the public availability and available-dates REST endpoints now only
   return slots for an active doctor and an active service actually offered by that
   doctor, so availability for inactive/hidden resources can no longer be enumerated.
   Added range validation for the requested month/year.
 * Translations: completed and updated the bundled translations for all 13 supported
   languages.

#### 1.2.2

 * Fix (important): deleting the plugin no longer erases your data. Doctors, services,
   patients, appointments and settings are now kept on uninstall so they survive
   a reinstall; data is removed only if you explicitly enable “Delete all data when
   the plugin is uninstalled” under Settings  GDPR.
 * Improvement: removed the WordPress admin focus ring on settings toggle checkboxes
   for a cleaner look.

#### 1.2.1

 * New: built-in translations for the booking form and patient emails in 13 languages(
   English, German, French, Spanish, Italian, Dutch, Polish, Czech, Swedish, Danish,
   Norwegian, Ukrainian, Russian), selectable via the new **Patient language** setting.
 * New: patient emails are now sent in the configured Patient language regardless
   of the site language.
 * Improvement: translations now use standard WordPress `.mo`/`.po` language files(
   editable with Loco Translate) and ship a complete `.pot`.
 * Fix: appointment reference numbers could collide after an appointment was deleted,
   causing a “Could not save the appointment” error on booking. References are now
   generated reliably.

#### 1.2.0

 * New: patients can cancel their own appointment via a secure link included in 
   the appointment confirmation email.
 * New: “Minimum cancellation notice (hours)” setting under Booking rules — controls
   how close to the appointment a patient may still cancel online (set to 0 to allow
   any time before the appointment).
 * New: cancelled appointments show a tooltip in the Appointments list indicating
   whether they were cancelled by the client or the clinic.
 * New: the clinic receives a notification email when a patient cancels their own
   appointment.

#### 1.1.1

 * Fix: settings sub-pages (Shortcodes, Booking rules, Email & reminders, GDPR) 
   could return “Sorry, you are not allowed to access this page”. They are now hidden
   from the sidebar without affecting access.

#### 1.1.0

 * New: search the Appointments list by reference, patient name, email or phone.
 * New: search the Patients list by name, email or phone.
 * New: the Appointments list now hides past days by default, with a “Show past 
   appointments” button to reveal them (today’s appointments stay visible so they
   can still be marked Completed / No-show).
 * New: “Load more” on the Appointments list — the first 10 rows load instantly 
   and more are revealed on demand for faster page rendering.
 * New: an information icon beside the “Status” column header explains what each
   appointment status means.
 * Improvement: hidden settings sub-pages are now removed from the admin menu in
   PHP instead of via a CSS :has() rule, removing an expensive per-interaction style
   recalculation in the admin.
 * Improvement: the WordPress media library is now loaded only on the Doctors screen(
   where the photo uploader needs it), speeding up the other admin pages.
 * Improvement: consistent button focus styling in the admin.

#### 1.0.0

 * Initial release: doctors, services, working hours, availability engine, booking
   wizard, patient records, GDPR consent log, transactional emails, reminders and
   branded admin.

## Meta

 *  Version **1.3.1**
 *  Last updated **6 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 8.1 or higher **
 *  Languages
 * [Czech](https://cs.wordpress.org/plugins/alnora-clinic/), [Dutch](https://nl.wordpress.org/plugins/alnora-clinic/),
   [English (US)](https://wordpress.org/plugins/alnora-clinic/), and [Russian](https://ru.wordpress.org/plugins/alnora-clinic/).
 *  [Translate into your language](https://translate.wordpress.org/projects/wp-plugins/alnora-clinic)
 * Tags
 * [appointment booking](https://test.wordpress.org/plugins/tags/appointment-booking/)
   [clinic](https://test.wordpress.org/plugins/tags/clinic/)[doctor appointment](https://test.wordpress.org/plugins/tags/doctor-appointment/)
   [medical](https://test.wordpress.org/plugins/tags/medical/)[patient management](https://test.wordpress.org/plugins/tags/patient-management/)
 *  [Advanced View](https://test.wordpress.org/plugins/alnora-clinic/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

 *   [ alnoramanager ](https://profiles.wordpress.org/alnoramanager/)
 *   [ alnoraclinic ](https://profiles.wordpress.org/alnoraclinic/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/alnora-clinic/)