Description
Quotel Hotel Booking is an all-in-one hotel booking plugin for WordPress built for hotels, resorts, B&Bs, guest houses, vacation rentals and any property that takes online room reservations. It ships a custom Rooms catalog, bookings database, smart pricing, availability rules and a WooCommerce checkout integration so guests pay through your existing store while staff manage everything from a clean React-powered dashboard.
Designed to be production-ready out of the box: install, activate the setup wizard, add rooms, drop a shortcode on a page and start exploring the system.
Free vs. Pro
The free plugin gives you the complete hotel infrastructure — rooms, taxonomies, calendar UI, dashboard, reports, settings, all shortcodes and the full REST surface for read access. You can browse the booking form on the front end and the admin dashboard / calendar / bookings / reports screens in preview mode to see exactly how the live system looks.
To accept real online bookings, edit the calendar, create manual bookings, run automated emails and CSV exports, you need Quotel Hotel Booking Pro installed alongside this free plugin. License activation lives at Hotel Booking License / Get Pro.
Why choose Quotel Hotel Booking
- Hotel reservation system in one plugin – rooms, bookings, calendar, pricing, reports.
- WooCommerce-native online payments – use any WooCommerce gateway (Stripe, PayPal, bank transfer, COD, etc.).
- React-powered booking form – fast, accessible, mobile-first checkout flow.
- REST API first – every screen is driven by
qhb/v1so you can build custom integrations. - No lock-in – open code, GPLv2, translation-ready, runs on any standard WordPress host.
Core features
Rooms & content
- Custom post type
qhb_roomwith archive support (pretty URLs under/rooms/by default). - Taxonomies for room types and amenities (categorise and filter rooms).
- Rich room editor with featured image, gallery, pricing meta and a dedicated single-room layout including an optional gallery modal and a «Continue to booking» CTA.
Bookings & availability
- Custom tables for bookings, per-day availability, pricing rules, extra services and booking-service links.
- Date-range availability checks; supports multiple units per room type.
- Guest and logged-in booking flows; settings for guest booking, required phone and cancellation windows.
- Manual bookings for staff (admin capability) via the REST API.
Smart pricing
- Base and weekend rates per room.
- Optional date-range pricing rules.
- Tax and long-stay discounts (weekly / monthly) via Settings.
- Server-side pricing endpoint so the booking summary always matches what is actually charged.
WooCommerce integration
- Each room syncs to a catalog-hidden variable WooCommerce product with Standard / Weekend rate variations.
- Bookings are linked to WooCommerce order IDs.
- Order status drives booking lifecycle (pending payment confirmed; cancelled/refunded released).
- Optional «Pay now» link in the pending-payment email using the WooCommerce order pay URL.
Admin experience
- Top-level Hotel Booking menu: Welcome, Dashboard, Bookings, Calendar, Settings.
- Setup wizard on first activation: hotel basics, booking rules, notifications, optional WooCommerce auto-install.
- Booking calendar – month and timeline-style views, room filter, booking density indicator and per-day management.
- Reports REST endpoints: dashboard stats, revenue, bookings, occupancy, room performance, guest analytics, CSV export.
Guest experience
- Shortcode-driven React apps for the entire reservation journey.
- Compact booking bar for hero sections and home pages with Flatpickr date picker.
- Deep-link friendly URLs with
qhb_room,check_in,check_out,adults,childrenandroom_typequery args.
Security & roles
- Custom capability
manage_hotel_bookings(granted to administrators on activation). - REST routes use nonces and dedicated permission callbacks for public vs. admin operations.
- All input is sanitized; output is escaped; SQL is built with
$wpdb->prepare().
Available shortcodes
Drop any of these shortcodes on a page or post. Default pages are auto-created on first activation if they do not already exist.
[qhb_booking_form]
Renders the multi-step React booking wizard (search pick a room guest details summary checkout). Mounts to #qhb-booking-root. Best placed on the Book a Room page.
[qhb_room_search]
Renders the filterable room search and results grid. Mounts to #qhb-search-root. Best placed on a Search Rooms page.
[qhb_my_bookings]
Lists the current user’s bookings (logged-in only). Mounts to #qhb-mybookings-root. Best placed on a My Account / My Bookings page.
[qhb_booking_bar]
A compact horizontal booking strip with check-in / check-out date pickers, rooms / adults / children counters, room category dropdown and a «Book now» button. Use it inside hero sections, sidebars or the home page. Submitting it deep-links into the page that hosts [qhb_booking_form].
Available [qhb_booking_bar] attributes:
redirect– override the booking page URL. Defaults to the auto-created Book a Room page or/book/.- Example:
[qhb_booking_bar redirect="https://example.com/reservations/"]
- Example:
button– override the submit button label. Defaults to «Book now».- Example:
[qhb_booking_bar button="Check availability"]
- Example:
Backwards compatibility
The legacy [hbm_booking_form], [hbm_room_search], [hbm_my_bookings] and [hbm_booking_bar] shortcodes from version 1.0.0 are still registered as transparent aliases, so any pages you saved earlier keep working unchanged. The previous REST namespace hbm/v1 is also still served alongside the new qhb/v1.
Technical snapshot
- Text domain:
quotel-hotel-booking(translation-ready; works with Loco Translate, WPML, Polylang and standard.po/.mofiles). - REST namespace:
qhb/v1– e.g./wp-json/qhb/v1/rooms,/bookings,/settings,/pricing,/availability,/calendar/...,/reports/.... - Custom post type:
qhb_room(rewrite slugrooms). - Taxonomies:
qhb_room_type,qhb_amenity. - Database tables (using your
$wpdb->prefix):qhb_bookings,qhb_pricing_rules,qhb_availability,qhb_extra_services,qhb_booking_services. - Capability:
manage_hotel_bookings(assigned to administrators on activation).
Requirements
- WordPress 5.8 or higher.
- PHP 7.4 or higher.
- WooCommerce is recommended for online payments – the booking checkout flow is built around it.
Use cases
- Single hotel or boutique hotel booking system.
- Resort with several room categories.
- B&B / guest house reservation form.
- Vacation rental landing page with check-in / check-out widget.
- Inn or homestay running on WordPress + WooCommerce.
Privacy
The plugin stores booking data you collect from guests (name, email, phone, dates, party size, optional notes) in the WordPress database and may associate each record with a WooCommerce order ID for payment tracking. Treat this data according to your privacy policy and applicable law (GDPR, CCPA, etc.). Email delivery uses WordPress’ wp_mail() facilities. No data is sent to third parties by the plugin itself.
Screenshots

Hotel Booking Dashboard – at-a-glance stats, occupancy and recent bookings (React). 
Bookings – filterable list with status badges, search and detail views. 
Calendar – month or timeline view with legend, room filter and per-day management. 
Settings – tabbed UI for general, booking, payment, pricing, email and display options. 
Booking wizard – React-powered search room guest summary WooCommerce checkout. 
Room search – grid of bookable rooms with filters and pricing.
Installation
- Upload the
quotel-hotel-bookingfolder to/wp-content/plugins/, or install the ZIP via Plugins Add New Upload Plugin. - Activate Quotel Hotel Booking on the Plugins screen.
- Follow the onboarding flow at Hotel Booking Welcome (and install / activate WooCommerce if prompted).
- Visit Hotel Booking Settings and confirm currency, check-in / check-out times, tax, emails and booking rules.
- Add rooms under Hotel Rooms in the admin menu (set base price, weekend price, capacity, amenities).
- (Optional) Drop
[qhb_booking_bar]into your home page hero and[qhb_booking_form]on a booking page (auto-created on first activation). - Visit Settings Permalinks and click Save to refresh rewrite rules if
/rooms/URLs return 404.
FAQ
-
Which shortcodes does the plugin provide?
-
Four shortcodes:
[qhb_booking_form],[qhb_room_search],[qhb_my_bookings]and[qhb_booking_bar]. The legacyhbm_*versions still work as aliases. See Description Available shortcodes for parameters. -
Where do guests pay for their booking?
-
Through WooCommerce. After a booking is created, checkout follows your existing WooCommerce cart, payment gateways and order emails. Make sure WooCommerce is installed, configured and that the Cart and Checkout pages exist.
-
Do I have to use WooCommerce?
-
WooCommerce is strongly recommended for live, paid bookings. The plugin’s WooCommerce integration is what bridges bookings to your gateway. You can run staff-side manual bookings without WooCommerce, but the public booking form is designed to hand off to a WooCommerce checkout for payment.
-
What URL pattern is used for single rooms?
-
Rooms use the
qhb_roompost type; permalinks default to theroomsrewrite slug (e.g.yoursite.com/rooms/deluxe-king/). If links 404 after install, visit Settings Permalinks and click Save. -
Can I block dates, override prices or add seasonal rates?
-
Yes. Use the admin Calendar (per room) to close dates or override the nightly price. Date-range pricing rules and weekly / monthly long-stay discounts are configured under Settings. Closed days and overrides are stored in the
qhb_availabilityandqhb_pricing_rulestables. -
Is guest checkout supported?
-
Yes, when enabled in Settings Booking. You can also require a phone number or restrict booking to logged-in users only.
-
Does the plugin support multiple units per room type?
-
Yes. Each room can be configured with multiple bookable units; availability checks decrement only the requested unit count and the booking remains «available» while units remain.
-
How do I translate the plugin?
-
Use the text domain
quotel-hotel-booking. Generate or edit language files with Loco Translate, Poedit or WPML, then place MO files underwp-content/languages/plugins/. -
What is the difference between the free plugin and Pro?
-
The free plugin ships the entire infrastructure — rooms, taxonomies, calendar UI, dashboard, settings, all shortcodes and the full REST surface for read access. Without Pro you can configure the system, browse the admin and preview the booking form on the front end.
Quotel Hotel Booking Pro unlocks the actions that mutate data:
- Online booking creation through WooCommerce checkout.
- Admin-side manual bookings.
- Calendar editing — close dates, override prices, bulk update availability.
- Booking cancellation flow.
- CSV export of reports.
- Automated emails for pending payment, confirmation and cancellation.
- WooCommerce variable-product auto-sync when a room is saved.
- Daily booking digest and customisable booking ID prefix.
- One-year of priority auto-updates through the QueueCommerce license server.
Pro is delivered as a separate plugin (
quotel-hotel-booking-pro) that you install alongside this one and activate with a license key under Hotel Booking License / Get Pro. -
I had real bookings before 1.1.0. Will I lose them?
-
No. The 1.1.0 upgrade does not delete or hide any data. Existing bookings remain in the database and continue to render in the admin Bookings list. The change is in the write paths: creating new bookings, cancelling, and editing the calendar now require Pro. Until you activate Pro, the front-end booking form runs in preview mode and the dashboard / bookings / calendar screens fall back to clearly-labelled demo data only when the booking table is empty.
-
Will my old shortcodes still work after updating from 1.0.0?
-
Yes. All
[hbm_*]shortcodes are kept as transparent aliases that forward to the new[qhb_*]versions, and thehbm/v1REST namespace is still served alongsideqhb/v1. On first load after the update, a one-time migration renames the database tables, custom post type, taxonomies, options and order meta keys fromhbm_*toqhb_*. -
Does uninstall remove the booking data?
-
No. Deactivating the plugin does not drop the custom tables or delete bookings. If you need a clean removal, back up first and remove the booking-related tables and options manually.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Quotel Hotel Booking – Hotel Booking, Reservation & Room Management for WordPress” is open source software. The following people have contributed to this plugin.
ContributorsInterested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.1.0
- New: License page at Hotel Booking License / Get Pro with activation, status display, expiry tracking and one-click deactivation.
- New: Pro detection helpers (
qhb_is_pro_plugin_active(),qhb_is_pro_licensed(),qhb_can_use_pro_mutations()) consumed by REST gates, admin React and the public booking form. - New: Preview mode for the front-end booking form, admin Bookings list, dashboard stats and calendar when running without an active Pro license.
- Gated: real booking creation, manual bookings, cancellation, calendar editing (close dates / availability / bulk update) and CSV export now require Quotel Hotel Booking Pro with an active license. The corresponding REST endpoints return a
qhb_pro_required(HTTP 402) error when called without a license. - Gated: WooCommerce auto-product-sync on room save and the order-status booking-status pipeline are Pro-only.
- Improved: license-aware admin notices on every Hotel Booking screen.
- Improved: every
qhbAdmin/qhbPubliclocalized object now carriesproPluginActive,proLicensed,upgradeUrlandlicenseStatusso any extension can react to the licence state. - Daily WP-Cron license re-verification (
qhb_daily_license_check) keeps the local status in sync with the QueueCommerce server. - No data loss: existing bookings remain readable in the admin even without Pro; disabling Pro flips write paths off but read access is preserved.
- Rebrand: unified internal prefix from
hbm_toqhb_to match the plugin slug. - New
[qhb_booking_bar]shortcode for hero / home-page booking strips with Flatpickr date pickers. - New
[qhb_booking_bar]attributes:redirect(booking page URL) andbutton(submit label). - All public shortcodes renamed to
[qhb_booking_form],[qhb_room_search],[qhb_my_bookings],[qhb_booking_bar]. - REST namespace renamed to
qhb/v1. Legacyhbm/v1is still registered for backwards compatibility. - PHP class names rebranded from
HBM_*toQHB_*; constants fromHBM_*toQHB_*. - Filenames rebranded from
class-hbm-*.phptoclass-qhb-*.php. - Database tables, custom post type, taxonomies, options and post / order meta keys renamed to the
qhb_*prefix with a one-time migration on update. - Backwards-compatibility aliases:
[hbm_*]shortcodes still resolve,hbm/v1REST routes still work,Hotel_Booking_Managerclass andHBM()accessor still exist. - Updated
readme.txtwith full shortcode reference, SEO-friendly description, FAQ and screenshot list.
1.0.0
- Initial public release.
- Custom post type and taxonomies for rooms.
- Bookings, availability, pricing rules and extra-services schema.
- WooCommerce variable-product sync (Standard / Weekend) and order-status driven booking lifecycle.
- REST API for the React admin and public apps.
- React admin: welcome / setup wizard, dashboard, bookings, calendar, settings.
- React public: booking form, room search, my bookings; server-side pricing endpoint.
- Email notifications for pending payment (with pay link), confirmation and cancellation.
- Single-room template, styling and assets.
