{"id":385472,"date":"2026-11-11T17:27:18","date_gmt":"2026-11-11T17:27:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/rox-hotel-booking\/"},"modified":"2026-11-11T17:11:49","modified_gmt":"2026-11-11T17:11:49","slug":"met-hotel-booking","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/met-hotel-booking\/","author":23344805,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"trunk","tested":"7.1.4","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"Met Hotel Booking","header_author":"roxnor","header_description":"Hotel room booking and reservation solution for WordPress.","last_updated":"2026-11-11 17:11:49","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/met-hotel-booking\/","header_author_uri":"https:\/\/roxnor.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":88,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3796757,"resolution":"128x128","location":"assets","locale":"","width":256,"height":256},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3796757,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3796757,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3796757,"resolution":"772x250","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":{"met-hotel-booking\/search":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"met-hotel-booking\/search","title":"Hotel Search Form","category":"widgets","icon":"search","description":"The room search form: dates, guests, rooms and an optional location, pointed at the results page.","textdomain":"met-hotel-booking","keywords":["hotel","search","booking","rooms","met"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{"title":{"type":"string","default":""},"layout":{"type":"string","default":""},"location":{"type":"string","default":""},"buttonText":{"type":"string","default":""},"titleColor":{"type":"string","default":""},"labelColor":{"type":"string","default":""},"textColor":{"type":"string","default":""},"formBg":{"type":"string","default":""},"borderColor":{"type":"string","default":""},"buttonBg":{"type":"string","default":""},"buttonColor":{"type":"string","default":""},"buttonHoverBg":{"type":"string","default":""},"buttonHoverColor":{"type":"string","default":""},"formRadius":{"type":"number"},"buttonRadius":{"type":"number"},"shadow":{"type":"boolean","default":true}},"editorScript":"met-hotel-booking-search-editor","editorStyle":["met-hotel-booking-search-editor-style","met-hotel-booking-frontend"]},"met-hotel-booking\/checkout":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"met-hotel-booking\/checkout","title":"Hotel Checkout","category":"widgets","icon":"cart","description":"Guest details, the stay reviewed and the payment methods the hotel accepts.","textdomain":"met-hotel-booking","keywords":["hotel","checkout","booking","payment","met"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{},"editorScript":"met-hotel-booking-checkout-editor","editorStyle":"met-hotel-booking-checkout-editor-style"},"met-hotel-booking\/login-form":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"met-hotel-booking\/login-form","title":"Met Hotel Login Form","category":"widgets","icon":"unlock","description":"Standalone login form for guests and agents (login, forgot password, reset password).","textdomain":"met-hotel-booking","keywords":["login","guest","agent","account","met"],"supports":{"html":false},"attributes":{"redirectUrl":{"type":"string","default":""},"loginLabel":{"type":"string","default":"Login"},"formWidth":{"type":"string","default":""},"formAlign":{"type":"string","default":"left"},"formMargin":{"type":"object","default":{}},"formPadding":{"type":"object","default":{}},"bgColor":{"type":"string","default":""},"borderWidth":{"type":"string","default":""},"borderStyle":{"type":"string","default":"solid"},"borderColor":{"type":"string","default":""},"borderRadius":{"type":"string","default":""},"labelColor":{"type":"string","default":""},"inputColor":{"type":"string","default":""},"inputBg":{"type":"string","default":""},"inputBorder":{"type":"string","default":""},"inputFocusBorder":{"type":"string","default":""},"inputRadius":{"type":"string","default":""},"btnBg":{"type":"string","default":""},"btnColor":{"type":"string","default":""},"btnHoverBg":{"type":"string","default":""},"btnHoverColor":{"type":"string","default":""},"btnRadius":{"type":"string","default":""},"btnMargin":{"type":"object","default":{}},"btnPadding":{"type":"object","default":{}},"linkColor":{"type":"string","default":""},"linkHoverColor":{"type":"string","default":""},"errorColor":{"type":"string","default":""},"errorBg":{"type":"string","default":""},"successColor":{"type":"string","default":""},"successBg":{"type":"string","default":""}},"editorScript":"met-hotel-booking-login-form-editor","editorStyle":"met-hotel-booking-login-form-editor-style","viewScript":"met-hotel-booking-login-form-view","viewStyle":"met-hotel-booking-login-form-view-style"},"met-hotel-booking\/confirmation":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"met-hotel-booking\/confirmation","title":"Hotel Booking Confirmation","category":"widgets","icon":"tickets-alt","description":"The guest's receipt, opened from the secure link in their booking e-mail.","textdomain":"met-hotel-booking","keywords":["hotel","confirmation","booking","receipt","met"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{},"editorScript":"met-hotel-booking-confirmation-editor","editorStyle":"met-hotel-booking-confirmation-editor-style"},"met-hotel-booking\/results":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"met-hotel-booking\/results","title":"Hotel Search Results","category":"widgets","icon":"list-view","description":"Available rooms for the dates in the page URL, with filters and sorting.","textdomain":"met-hotel-booking","keywords":["hotel","rooms","results","availability","met"],"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true,"padding":true}},"attributes":{"location":{"type":"string","default":""}},"editorScript":"met-hotel-booking-results-editor","editorStyle":"met-hotel-booking-results-editor-style"}},"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The guest search form","2":"Search results with live availability and prices","3":"The checkout","4":"The confirmation receipt","5":"A room page","6":"The admin booking list","7":"A booking's detail view","8":"The availability grid","9":"The pricing grid","10":"The month calendar","11":"The dashboard","12":"The setup wizard"}},"plugin_section":[],"plugin_tags":[1279,269,4488,722,1582],"plugin_category":[40],"plugin_contributors":[251277],"plugin_business_model":[],"class_list":["post-385472","plugin","type-plugin","status-publish","hentry","plugin_tags-availability","plugin_tags-booking","plugin_tags-hotel","plugin_tags-reservation","plugin_tags-rooms","plugin_category-calendar-and-events","plugin_contributors-roxnor","plugin_committers-roxnor"],"banners":{"banner":"https:\/\/ps.w.org\/met-hotel-booking\/assets\/banner-772x250.jpg?rev=3796757","banner_2x":"https:\/\/ps.w.org\/met-hotel-booking\/assets\/banner-1544x500.jpg?rev=3796757","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/met-hotel-booking\/assets\/icon-128x128.gif?rev=3796757","icon_2x":"https:\/\/ps.w.org\/met-hotel-booking\/assets\/icon-256x256.gif?rev=3796757","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>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 \u2014 never one the browser sent.<\/p>\n\n<p>It is built for how a hotel actually sells: a <strong>night<\/strong> out of a <strong>pool of identical rooms<\/strong>, not a time slot belonging to a member of staff.<\/p>\n\n<h4>How a stay is sold<\/h4>\n\n<p><strong>Search \u2192 Results \u2192 Checkout \u2192 Confirmation.<\/strong> Four pages, created for you by the setup wizard, each one a shortcode and a Gutenberg block.<\/p>\n\n<p>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 <strong>the whole flow works with JavaScript switched off<\/strong>.<\/p>\n\n<h4>Availability that cannot overbook<\/h4>\n\n<p>Availability is not recalculated from your booking list on every search. Each room type carries one row <strong>per date<\/strong> holding what is total, sold, held, blocked and left.<\/p>\n\n<p>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.<\/p>\n\n<p>While a guest fills in the checkout form, their rooms are <strong>held<\/strong> \u2014 not quietly left on sale for somebody else \u2014 and an abandoned checkout hands them back automatically.<\/p>\n\n<h4>Core features<\/h4>\n\n<p><strong>\u2705 Rooms, not services<\/strong> \u2014 Room types with their own unit count, occupancy, gallery, amenities and public page at <code>\/rooms\/your-room\/<\/code><\/p>\n\n<p><strong>\u2705 A real availability calendar<\/strong> \u2014 One editable grid of nights. Block a date, stop arrivals, change what is on sale, in bulk or one cell at a time<\/p>\n\n<p><strong>\u2705 Pricing that follows the calendar<\/strong> \u2014 A base rate, then rate rules for weekends, seasons and special dates, materialised onto the nights they apply to<\/p>\n\n<p><strong>\u2705 Taxes and fees<\/strong> \u2014 Percentage or fixed, compounding in the order you set, with hotel-collected fees kept out of the online total<\/p>\n\n<p><strong>\u2705 Bookings admin<\/strong> \u2014 List, filter, create and edit stays; confirm, check in, check out, complete, cancel or mark a no-show, each one writing its own history<\/p>\n\n<p><strong>\u2705 Calendar view<\/strong> \u2014 A month occupancy grid, and a day view of arrivals, departures and who is in-house<\/p>\n\n<p><strong>\u2705 Guest dashboard<\/strong> \u2014 <code>\/my-bookings\/<\/code>, 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<\/p>\n\n<p><strong>\u2705 Email notifications<\/strong> \u2014 Nine events, editable per recipient, and a log on every booking of exactly what was sent and when<\/p>\n\n<p><strong>\u2705 Payments<\/strong> \u2014 Stripe, plus pay at hotel, bank transfer and cash on arrival. Payment attempts are recorded, not only successes<\/p>\n\n<p><strong>\u2705 Cancellation policy<\/strong> \u2014 Snapshotted onto the stay at the moment it is sold, so changing your terms never rewrites terms a guest already agreed to<\/p>\n\n<p><strong>\u2705 Dashboard<\/strong> \u2014 Occupancy, ADR, RevPAR, today's arrivals and departures, and revenue attributed per night<\/p>\n\n<p><strong>\u2705 SEO out of the box<\/strong> \u2014 Title, canonical, Open Graph, <code>HotelRoom<\/code> 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<\/p>\n\n<p><strong>\u2705 Setup wizard<\/strong> \u2014 A few short steps from activation to a bookable room<\/p>\n\n<p><strong>\u2705 Theme-overridable templates<\/strong> \u2014 Copy any template into <code>yourtheme\/met-hotel-booking\/<\/code> and it wins<\/p>\n\n<h4>What the money never does<\/h4>\n\n<p>A stay stores what it was sold for \u2014 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.<\/p>\n\n<h4>Met Hotel Booking Pro<\/h4>\n\n<p>The free plugin runs a single hotel end to end. Pro adds:<\/p>\n\n<ul>\n<li>Multiple properties and location-first search<\/li>\n<li>Add-ons and meal plans<\/li>\n<li>Coupons<\/li>\n<li>Deposits and partial payment<\/li>\n<li>Seasons and rate plans, with minimum and maximum stay<\/li>\n<li>Several cancellation policies, and a refundable filter for guests<\/li>\n<li>Guest reviews, tied to a stay that really happened<\/li>\n<li>Room numbers \u2014 assign an actual key, guarded against double assignment<\/li>\n<li>Custom checkout questions<\/li>\n<li>Reminder emails and review requests<\/li>\n<li>PDF invoices<\/li>\n<li>Advanced reports and CSV export<\/li>\n<li>Elementor widgets<\/li>\n<li>Webhooks<\/li>\n<li>Google Calendar and iCal channel sync (Airbnb, Booking.com and anything else that speaks <code>.ics<\/code>)<\/li>\n<li>PayPal and WooCommerce checkout<\/li>\n<\/ul>\n\n<h3>Privacy Policy<\/h3>\n\n<p>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 \u2014 see External Services below.<\/p>\n\n<p>Guest-facing pages that show personal data \u2014 the confirmation receipt, the cancellation link and the guest dashboard \u2014 are gated by a token issued with the booking. A booking reference on its own never opens them.<\/p>\n\n<p>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.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to the following third-party services. Each one is used only for the feature named.<\/p>\n\n<ol>\n<li><strong>Stripe API<\/strong>\nUsed to take card payments, and only when you have entered Stripe keys and enabled card payment. Payment and booking details are sent from <strong>your server<\/strong> to <code>https:\/\/api.stripe.com<\/code>. 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 <code>https:\/\/js.stripe.com<\/code> 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.\nProvider: Stripe<\/li>\n<\/ol>\n\n<p>* <a href=\"https:\/\/stripe.com\/legal\/end-users\">Stripe Terms of Service<\/a>\n* <a href=\"https:\/\/stripe.com\/privacy\">Stripe Privacy Policy<\/a><\/p>\n\n<ol>\n<li><strong>OpenStreetMap<\/strong>\nUsed in two places. In the admin, the map picker used to set a hotel's position loads map tiles from <code>https:\/\/*.tile.openstreetmap.org<\/code> and sends the address you type, or the point you click, to <code>https:\/\/nominatim.openstreetmap.org<\/code> to look it up. On the frontend, a hotel page can embed a map frame from <code>https:\/\/www.openstreetmap.org<\/code> \u2014 <strong>only when you switch on Settings &gt; Display &gt; Embedded map, which is off by default<\/strong>. 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.\nProvider: OpenStreetMap Foundation<\/li>\n<\/ol>\n\n<p>* <a href=\"https:\/\/wiki.osmfoundation.org\/wiki\/Terms_of_Use\">OpenStreetMap Terms of Use<\/a>\n* <a href=\"https:\/\/wiki.osmfoundation.org\/wiki\/Privacy_Policy\">OpenStreetMap Privacy Policy<\/a>\n* <a href=\"https:\/\/operations.osmfoundation.org\/policies\/nominatim\/\">Nominatim Usage Policy<\/a><\/p>\n\n<h3>Support<\/h3>\n\n<p>If you need help or have questions, please use the WordPress.org support forum for this plugin.<\/p>\n\n<p>Settings &gt; Tools carries a status report \u2014 versions, tables, pages, URLs and scheduled jobs \u2014 which is the most useful thing to quote when opening a ticket.<\/p>\n\n<h3>Source Code<\/h3>\n\n<p>The compiled scripts and styles in <code>public\/build\/<\/code> are built from the human-readable source shipped in <code>src\/resources\/<\/code>. To rebuild them, run <code>npm install<\/code> and then <code>npx wp-scripts build<\/code> from the plugin folder; <code>package.json<\/code> and <code>webpack.config.js<\/code> are included for this.<\/p>\n\n<h3>Additional Information<\/h3>\n\n<p>For documentation and support, please visit the plugin website.<\/p>\n\n<!--section=installation-->\n<h4>Minimum Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.5 or greater<\/li>\n<li>PHP version 8.0 or greater<\/li>\n<li>MySQL version 5.7 or greater (or MariaDB 10.3+)<\/li>\n<li>Pretty permalinks enabled \u2014 plain permalinks break every room and hotel URL<\/li>\n<\/ul>\n\n<h4>Automatic Installation<\/h4>\n\n<ol>\n<li>Log in to your WordPress dashboard<\/li>\n<li>Navigate to Plugins &gt; Add New<\/li>\n<li>Search for \"Met Hotel Booking\"<\/li>\n<li>Click \"Install Now\" and then \"Activate\"<\/li>\n<\/ol>\n\n<h4>Manual Installation<\/h4>\n\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Log in to your WordPress dashboard<\/li>\n<li>Navigate to Plugins &gt; Add New &gt; Upload Plugin<\/li>\n<li>Choose the downloaded ZIP file and click \"Install Now\"<\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<\/ol>\n\n<h4>Configuration<\/h4>\n\n<p>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.<\/p>\n\n<p>You can re-run it at any time from <strong>Settings &gt; Tools<\/strong>, and nothing you have configured is cleared when you do.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20guests%20book%20a%20room%3F\"><h3>How do guests book a room?<\/h3><\/dt>\n<dd><p>The setup wizard creates four pages \u2014 search, results, checkout and confirmation. Each one is a shortcode (<code>[met_hotel_search]<\/code>, <code>[met_hotel_results]<\/code>, <code>[met_hotel_checkout]<\/code>, <code>[met_hotel_confirmation]<\/code>) and a Gutenberg block, so you can move them onto pages of your own design at any time. A fifth page, the guest dashboard (<code>[met_hotel_guest_dashboard]<\/code>), shows a signed-in guest their bookings and everyone else the login form.<\/p><\/dd>\n<dt id=\"can%20two%20guests%20book%20the%20last%20room%20at%20the%20same%20time%3F\"><h3>Can two guests book the last room at the same time?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20the%20booking%20flow%20work%20without%20javascript%3F\"><h3>Does the booking flow work without JavaScript?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"how%20many%20rooms%20and%20room%20types%20can%20i%20add%3F\"><h3>How many rooms and room types can I add?<\/h3><\/dt>\n<dd><p>As many as you need. There is no limit on rooms or room types.<\/p><\/dd>\n<dt id=\"can%20i%20charge%20different%20prices%20on%20different%20dates%3F\"><h3>Can I charge different prices on different dates?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"can%20i%20take%20payment%20online%3F\"><h3>Can I take payment online?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"do%20i%20need%20a%20separate%20page%20for%20each%20room%3F\"><h3>Do I need a separate page for each room?<\/h3><\/dt>\n<dd><p>No. Every room type already has one at <code>\/rooms\/your-room-slug\/<\/code>, and every hotel at <code>\/hotel\/your-hotel-slug\/<\/code>, with their own gallery, amenities, price and SEO tags. No custom post type is registered and nothing is duplicated.<\/p><\/dd>\n<dt id=\"can%20i%20change%20how%20the%20booking%20pages%20look%3F\"><h3>Can I change how the booking pages look?<\/h3><\/dt>\n<dd><p>Yes, in two ways. Settings &gt; Design changes the colours and button shape, and any template can be overridden by copying it into <code>yourtheme\/met-hotel-booking\/<\/code>. Your copy wins and survives plugin updates.<\/p><\/dd>\n<dt id=\"can%20a%20guest%20cancel%20their%20own%20booking%3F\"><h3>Can a guest cancel their own booking?<\/h3><\/dt>\n<dd><p>Yes, from <code>\/my-bookings\/<\/code>, if your cancellation policy allows it at that point. Cancelling puts the room back on sale immediately and sends the emails you have configured.<\/p><\/dd>\n<dt id=\"is%20guest%20data%20sent%20anywhere%3F\"><h3>Is guest data sent anywhere?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"will%20this%20work%20for%20appointments%2C%20salons%20or%20car%20rentals%3F\"><h3>Will this work for appointments, salons or car rentals?<\/h3><\/dt>\n<dd><p>No. This plugin sells nights out of a pool of rooms. If you need time slots and staff schedules, use an appointment plugin instead.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Added: First release.<\/li>\n<li>Added: Room types with unit counts, occupancy, galleries, amenities and their own public pages.<\/li>\n<li>Added: Per-date availability with total, sold, held and blocked counts, and a transactional booking that cannot overbook.<\/li>\n<li>Added: Hold engine \u2014 rooms are claimed while a guest is at the checkout and released automatically if the checkout is abandoned.<\/li>\n<li>Added: Search, results, checkout and confirmation pages as shortcodes and blocks, all server-rendered and working without JavaScript.<\/li>\n<li>Added: Availability grid and pricing grid, with single-cell and bulk editing.<\/li>\n<li>Added: Rate rules for weekends, seasons and special dates, plus taxes and fees.<\/li>\n<li>Added: Bookings admin \u2014 list, filters, create, edit, status history and internal notes.<\/li>\n<li>Added: Month occupancy calendar and a day view of arrivals, departures and in-house guests.<\/li>\n<li>Added: Guest dashboard at \/my-bookings\/ with token-gated viewing and cancellation.<\/li>\n<li>Added: Nine email events, editable per recipient, with a delivery log on every booking.<\/li>\n<li>Added: Stripe, pay at hotel, bank transfer and cash on arrival.<\/li>\n<li>Added: Cancellation policy, snapshotted onto each stay when it is sold.<\/li>\n<li>Added: Dashboard statistics \u2014 occupancy, ADR, RevPAR and today's movements.<\/li>\n<li>Added: SEO head tags, HotelRoom JSON-LD and sitemap entries for room and hotel pages.<\/li>\n<li>Added: Setup wizard.<\/li>\n<li>Added: Theme-overridable templates in yourtheme\/met-hotel-booking\/.<\/li>\n<li>Added: Optional removal of all plugin data when the plugin is deleted, off by default, under Settings &gt; Tools.<\/li>\n<\/ul>","raw_excerpt":"Hotel booking plugin for WordPress. Sell rooms by the night with real availability, server-side pricing and a checkout that cannot overbook.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/385472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=385472"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/roxnor"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=385472"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=385472"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=385472"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=385472"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=385472"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=385472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}