Title: Met Hotel Booking
Author: Roxnor
Published: <strong>November 11, 2026</strong>
Last modified: November 11, 2026

---

Search plugins

![](https://ps.w.org/met-hotel-booking/assets/banner-772x250.jpg?rev=3796757)

![](https://ps.w.org/met-hotel-booking/assets/icon-256x256.gif?rev=3796757)

# Met Hotel Booking

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

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

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

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

## Description

Met Hotel Booking turns a WordPress site into a working hotel reservation system.
Guests search by dates and party size, see only the rooms that are genuinely free,
and book them at a price your server calculated — never one the browser sent.

It is built for how a hotel actually sells: a **night** out of a **pool of identical
rooms**, not a time slot belonging to a member of staff.

#### How a stay is sold

**Search  Results  Checkout  Confirmation.** Four pages, created for you by the 
setup wizard, each one a shortcode and a Gutenberg block.

Every page is server-rendered, so rooms and prices are in the HTML your visitors
and search engines receive, the search URL is shareable, and **the whole flow works
with JavaScript switched off**.

#### Availability that cannot overbook

Availability is not recalculated from your booking list on every search. Each room
type carries one row **per date** holding what is total, sold, held, blocked and
left.

That is what makes the booking safe. Taking a stay is a single conditional database
statement inside a transaction: if the rooms are no longer there, the booking is
refused rather than written. Two guests racing for the last room get one booking
and one honest “sold out”, not two bookings and an apology in the morning.

While a guest fills in the checkout form, their rooms are **held** — not quietly
left on sale for somebody else — and an abandoned checkout hands them back automatically.

#### Core features

**✅ Rooms, not services** — Room types with their own unit count, occupancy, gallery,
amenities and public page at `/rooms/your-room/`

**✅ A real availability calendar** — One editable grid of nights. Block a date,
stop arrivals, change what is on sale, in bulk or one cell at a time

**✅ Pricing that follows the calendar** — A base rate, then rate rules for weekends,
seasons and special dates, materialised onto the nights they apply to

**✅ Taxes and fees** — Percentage or fixed, compounding in the order you set, with
hotel-collected fees kept out of the online total

**✅ Bookings admin** — List, filter, create and edit stays; confirm, check in, 
check out, complete, cancel or mark a no-show, each one writing its own history

**✅ Calendar view** — A month occupancy grid, and a day view of arrivals, departures
and who is in-house

**✅ Guest dashboard** — `/my-bookings/`, reached by an account or by the signed
link in a guest’s own confirmation email, where a guest can view and cancel a stay

**✅ Email notifications** — Nine events, editable per recipient, and a log on every
booking of exactly what was sent and when

**✅ Payments** — Stripe, plus pay at hotel, bank transfer and cash on arrival. 
Payment attempts are recorded, not only successes

**✅ Cancellation policy** — Snapshotted onto the stay at the moment it is sold,
so changing your terms never rewrites terms a guest already agreed to

**✅ Dashboard** — Occupancy, ADR, RevPAR, today’s arrivals and departures, and 
revenue attributed per night

**✅ SEO out of the box** — Title, canonical, Open Graph, `HotelRoom` JSON-LD with
an offer, and sitemap entries for every room and hotel page, standing down cleanly
where Yoast or Rank Math is already acting

**✅ Setup wizard** — A few short steps from activation to a bookable room

**✅ Theme-overridable templates** — Copy any template into `yourtheme/met-hotel-
booking/` and it wins

#### What the money never does

A stay stores what it was sold for — the rate for each night, the taxes, the terms.
Nothing re-derives it later from today’s price list, so an invoice a guest is holding
stays the invoice you issued.

#### Met Hotel Booking Pro

The free plugin runs a single hotel end to end. Pro adds:

 * Multiple properties and location-first search
 * Add-ons and meal plans
 * Coupons
 * Deposits and partial payment
 * Seasons and rate plans, with minimum and maximum stay
 * Several cancellation policies, and a refundable filter for guests
 * Guest reviews, tied to a stay that really happened
 * Room numbers — assign an actual key, guarded against double assignment
 * Custom checkout questions
 * Reminder emails and review requests
 * PDF invoices
 * Advanced reports and CSV export
 * Elementor widgets
 * Webhooks
 * Google Calendar and iCal channel sync (Airbnb, Booking.com and anything else 
   that speaks `.ics`)
 * PayPal and WooCommerce checkout

### Privacy Policy

Met Hotel Booking stores booking and guest data in your own WordPress database. 
It does not send that data anywhere except where a feature you have switched on 
requires it — see External Services below.

Guest-facing pages that show personal data — the confirmation receipt, the cancellation
link and the guest dashboard — are gated by a token issued with the booking. A booking
reference on its own never opens them.

The plugin records the IP address and browser of the device that made a booking,
as booking metadata, for fraud and support purposes. That information is never included
in anything the plugin sends to a third party.

### External Services

This plugin connects to the following third-party services. Each one is used only
for the feature named.

 1. **Stripe API**
     Used to take card payments, and only when you have entered Stripe
    keys and enabled card payment. Payment and booking details are sent from **your
    server** to `https://api.stripe.com`. On the checkout payment step, and on a confirmation
    page with a balance still to pay by card, the guest’s browser loads Stripe.js from`
    https://js.stripe.com` so card details go straight to Stripe and never touch your
    server; it is not loaded on any other page, or when card payment is off. Stripe
    also sends payment events back to a webhook endpoint on your site, which are rejected
    unless they carry a valid signature. Provider: Stripe

* [Stripe Terms of Service](https://stripe.com/legal/end-users)
 * [Stripe Privacy Policy](https://stripe.com/privacy)

 1. **OpenStreetMap**
     Used in two places. In the admin, the map picker used to set
    a hotel’s position loads map tiles from `https://*.tile.openstreetmap.org` and 
    sends the address you type, or the point you click, to `https://nominatim.openstreetmap.
    org` to look it up. On the frontend, a hotel page can embed a map frame from `https://
    www.openstreetmap.org` — **only when you switch on Settings > Display > Embedded
    map, which is off by default**. When it is on, the visitor’s browser loads the 
    frame on a hotel page that has a map pin, and OpenStreetMap receives the visitor’s
    IP address and the hotel’s coordinates. When it is off, the address is a plain 
    link that opens the map only if the visitor clicks it. Provider: OpenStreetMap 
    Foundation

* [OpenStreetMap Terms of Use](https://wiki.osmfoundation.org/wiki/Terms_of_Use)
*
[OpenStreetMap Privacy Policy](https://wiki.osmfoundation.org/wiki/Privacy_Policy)*
[Nominatim Usage Policy](https://operations.osmfoundation.org/policies/nominatim/)

### Support

If you need help or have questions, please use the WordPress.org support forum for
this plugin.

Settings > Tools carries a status report — versions, tables, pages, URLs and scheduled
jobs — which is the most useful thing to quote when opening a ticket.

### Source Code

The compiled scripts and styles in `public/build/` are built from the human-readable
source shipped in `src/resources/`. To rebuild them, run `npm install` and then `
npx wp-scripts build` from the plugin folder; `package.json` and `webpack.config.
js` are included for this.

### Additional Information

For documentation and support, please visit the plugin website.

## Blocks

This plugin provides 5 blocks.

 *   Hotel Search Form The room search form: dates, guests, rooms and an optional
   location, pointed at the results page.
 *   Hotel Checkout Guest details, the stay reviewed and the payment methods the
   hotel accepts.
 *   Met Hotel Login Form Standalone login form for guests and agents (login, forgot
   password, reset password).
 *   Hotel Booking Confirmation The guest's receipt, opened from the secure link
   in their booking e-mail.
 *   Hotel Search Results Available rooms for the dates in the page URL, with filters
   and sorting.

## Installation

#### Minimum Requirements

 * WordPress 6.5 or greater
 * PHP version 8.0 or greater
 * MySQL version 5.7 or greater (or MariaDB 10.3+)
 * Pretty permalinks enabled — plain permalinks break every room and hotel URL

#### Automatic Installation

 1. Log in to your WordPress dashboard
 2. Navigate to Plugins > Add New
 3. Search for “Met Hotel Booking”
 4. Click “Install Now” and then “Activate”

#### Manual Installation

 1. Download the plugin ZIP file
 2. Log in to your WordPress dashboard
 3. Navigate to Plugins > Add New > Upload Plugin
 4. Choose the downloaded ZIP file and click “Install Now”
 5. Activate the plugin through the ‘Plugins’ menu in WordPress

#### Configuration

The setup wizard opens by itself the first time you visit the plugin dashboard. 
It creates the four booking pages, takes your hotel’s details, and walks you through
your first room type.

You can re-run it at any time from **Settings > Tools**, and nothing you have configured
is cleared when you do.

## FAQ

### How do guests book a room?

The setup wizard creates four pages — search, results, checkout and confirmation.
Each one is a shortcode (`[met_hotel_search]`, `[met_hotel_results]`, `[met_hotel_checkout]`,`[
met_hotel_confirmation]`) and a Gutenberg block, so you can move them onto pages
of your own design at any time. A fifth page, the guest dashboard (`[met_hotel_guest_dashboard]`),
shows a signed-in guest their bookings and everyone else the login form.

### Can two guests book the last room at the same time?

No. Rooms are taken inside a database transaction with a conditional update, so 
one booking succeeds and the other is told the room has gone. The rooms are also
held while a guest is filling in the checkout, and released automatically if they
never finish.

### Does the booking flow work without JavaScript?

Yes. Search is a real form, results are rendered on the server, and the checkout
is a form post. JavaScript only enhances what is already there.

### How many rooms and room types can I add?

As many as you need. There is no limit on rooms or room types.

### Can I charge different prices on different dates?

Yes. Set a base rate per room type, then add rate rules for weekends, seasons or
specific dates. You can also type a price straight onto a single night in the pricing
grid, and a later change to the base rate will not overwrite it.

### Can I take payment online?

Yes, through Stripe. You can also offer pay at hotel, bank transfer and cash on 
arrival, alone or alongside a card. Pro adds PayPal and WooCommerce.

### Do I need a separate page for each room?

No. Every room type already has one at `/rooms/your-room-slug/`, and every hotel
at `/hotel/your-hotel-slug/`, with their own gallery, amenities, price and SEO tags.
No custom post type is registered and nothing is duplicated.

### Can I change how the booking pages look?

Yes, in two ways. Settings > Design changes the colours and button shape, and any
template can be overridden by copying it into `yourtheme/met-hotel-booking/`. Your
copy wins and survives plugin updates.

### Can a guest cancel their own booking?

Yes, from `/my-bookings/`, if your cancellation policy allows it at that point. 
Cancelling puts the room back on sale immediately and sends the emails you have 
configured.

### Is guest data sent anywhere?

Only what a payment needs, and only to Stripe. Everything else lives in your own
database. One optional feature loads something from a third party in the visitor’s
browser, and it is off until you switch it on: the embedded map on hotel pages (
OpenStreetMap). See External Services below. The confirmation page, the cancel link
and the guest dashboard are all gated by a token, so a booking reference alone is
never enough to read somebody’s details.

### Will this work for appointments, salons or car rentals?

No. This plugin sells nights out of a pool of rooms. If you need time slots and 
staff schedules, use an appointment plugin instead.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

 *   [ Roxnor ](https://profiles.wordpress.org/roxnor/)

[Translate “Met Hotel Booking” into your language.](https://translate.wordpress.org/projects/wp-plugins/met-hotel-booking)

### Interested in development?

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

## Changelog

#### 1.0.0

 * Added: First release.
 * Added: Room types with unit counts, occupancy, galleries, amenities and their
   own public pages.
 * Added: Per-date availability with total, sold, held and blocked counts, and a
   transactional booking that cannot overbook.
 * Added: Hold engine — rooms are claimed while a guest is at the checkout and released
   automatically if the checkout is abandoned.
 * Added: Search, results, checkout and confirmation pages as shortcodes and blocks,
   all server-rendered and working without JavaScript.
 * Added: Availability grid and pricing grid, with single-cell and bulk editing.
 * Added: Rate rules for weekends, seasons and special dates, plus taxes and fees.
 * Added: Bookings admin — list, filters, create, edit, status history and internal
   notes.
 * Added: Month occupancy calendar and a day view of arrivals, departures and in-
   house guests.
 * Added: Guest dashboard at /my-bookings/ with token-gated viewing and cancellation.
 * Added: Nine email events, editable per recipient, with a delivery log on every
   booking.
 * Added: Stripe, pay at hotel, bank transfer and cash on arrival.
 * Added: Cancellation policy, snapshotted onto each stay when it is sold.
 * Added: Dashboard statistics — occupancy, ADR, RevPAR and today’s movements.
 * Added: SEO head tags, HotelRoom JSON-LD and sitemap entries for room and hotel
   pages.
 * Added: Setup wizard.
 * Added: Theme-overridable templates in yourtheme/met-hotel-booking/.
 * Added: Optional removal of all plugin data when the plugin is deleted, off by
   default, under Settings > Tools.

## Meta

 *  Version **1.0.0**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.0 or higher **
 * Tags
 * [availability](https://wordpress.org/plugins/tags/availability/)[booking](https://wordpress.org/plugins/tags/booking/)
   [Hotel](https://wordpress.org/plugins/tags/hotel/)[reservation](https://wordpress.org/plugins/tags/reservation/)
   [rooms](https://wordpress.org/plugins/tags/rooms/)
 *  [Advanced View](https://wordpress.org/plugins/met-hotel-booking/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

 *   [ Roxnor ](https://profiles.wordpress.org/roxnor/)

## Support

Got something to say? Need help?

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