Pro module — Hotel & Property

A hotel booking engine that refuses to oversell a room.

Room types, individual rooms, multi-night stays, per-day inventory, extras, a housekeeping board and a role-gated staff portal — the Hotel module installs as part of the Tiger Booking Pro add-on, alongside the free plugin.

Pro add-on, installs alongside the free plugin · No uninstall, no data migration

Hotels, room types, rooms

Built for real inventory, not a single calendar.

Every hotel can carry multiple room types, and every room type tracks its own capacity, pricing and physical rooms.

🏨
Hotels & room typesA hotel can list any number of room types, each with its own capacity, bed configuration, photo gallery and facilities list.
🛏
Individual roomsPhysical rooms are tracked separately from room types — each carries its own status (ready or out of service) that feeds straight into the housekeeping board.
💲
Base, season & peak ratesEvery room type carries a base rate plus separate season and peak-day rate fields you can select for display and sorting.
📅
Multi-night staysGuests book a check-in and check-out date; the engine stores the night count and compares date ranges as a proper half-open interval, so a same-day checkout and check-in never collide.
The strongest guarantee on this page

One room can't be sold to two guests.

Booking a room type runs inside a single MySQL transaction. Before the reservation is written, a row-locking query tallies every overlapping, non-cancelled reservation for that room type and compares the total against its configured daily inventory. If the request would push the total past the limit, the transaction rolls back and the guest sees exactly how many rooms are left — or that the room type is fully booked.

  • Row-locked before the insert — two requests racing for the last room can't both win
  • Date ranges compared as [check-in, check-out) — a same-day turnover never double-counts
  • Unconfigured inventory (left at 0) behaves as unlimited, so an existing hotel keeps working unchanged
Why the guard actually holds

Three details that make the lock reliable.

Small implementation choices that decide whether an inventory guard actually works under load.

🔐

Locked before it's inserted

The inventory count runs inside the same transaction as the booking insert, with a row-level lock — not as a separate check-then-write step a second request could slip through.

Correct date-range overlap

Two stays only collide when one's check-in is before the other's check-out and its check-out is after the other's check-in — a same-day turnover never blocks the room.

0️⃣

Unlimited until configured

A room type left at its default daily-inventory value of 0 is treated as unlimited, so a freshly installed hotel behaves exactly as it did before the guard existed.

Sell more than the room

Extras attach to a reservation, priced how you choose.

Add-ons live in a per-hotel catalogue and can be priced per stay, per night, or per guest. Once attached to a booking, the name and price are snapshotted — editing the catalogue later never rewrites a guest's existing folio.

  • Typical add-ons: breakfast, airport transfer, late checkout, spa treatment
  • Priced per stay, per night, or per guest — the unit is stored with each catalogue item
  • Snapshotted at attach time, so a later catalogue price change doesn't alter bookings already made
Rooms, not just reservations

A housekeeping board with three task types.

Every physical room can carry a clean, inspect, or maintenance task with a status and priority. Completing a clean or inspect task flips that room back to ready automatically; a maintenance task takes it out of service.

🧹

Clean

Standard turnover task queued after checkout, tracked pending → in progress → done.

🔍

Inspect

A quality check before a room goes back on sale — completing it returns the room to ready.

🛠

Maintenance

Takes a room out of service until the issue is resolved, so it can't be booked by mistake.

Staff, scoped to their own hotel

A role-gated portal for owners, managers and front desk.

Hotel-user accounts are separate from WP admin logins. Every page — dashboard, reservations, rooms, analytics, hotel details — checks a per-role, per-action permission matrix, and a manager pinned to one property can never read or write another hotel's data.

👑
OwnerFull view, add, edit and delete access across every page.
🧑‍💼
ManagerFull control of dashboard, reservations and rooms; can view and edit hotel details but not add or delete a hotel.
🗂
In ChargeCan view and add reservations and edit rooms, without analytics or hotel-detail access.
🛎
Front DeskDay-to-day reservation handling, scoped to the property they're assigned to.

An optional weekly staff shift roster — the same scheduling engine shared across Tiger Booking's modules — can be switched on for housekeeping and front-desk planning.

One add-on, not a second system

Installs alongside the free plugin — nothing to migrate.

The Hotel module ships inside the Tiger Booking Pro add-on. It runs next to the free plugin, not instead of it, and there's no export/import step to move existing data.

🧩

No uninstall, no migration

Pro installs as a companion plugin alongside the free build — your existing appointments, customers and settings stay exactly where they are.

👥

One customer list

A guest who books a room and a customer who books a haircut are the same record in the same table — no duplicate contact lists to keep in sync.

📆

One calendar, one analytics view

Hotel stays, spa appointments and every other module's bookings share one calendar and one analytics dashboard, so a hotel with a spa runs both from a single screen.

For developers and site builders

Two Elementor widgets, four shortcodes, one REST API.

Drop a hotels grid or a rooms grid into any page with Elementor, or use the shortcodes directly. Everything also runs through the plugin's own authenticated REST namespace, including an admin CSV importer for existing bookings.

  • Elementor: Hotels Grid and Hotel Rooms Grid widgets, both with filter and style controls
  • Shortcodes: [tiger_hotel_booking], [tiger_rooms_grid], [tiger_hotel_view], [tiger_hotel_portal]
  • REST collections for hotels, rooms, bookings, extras and housekeeping, plus an admin-only CSV import route
// Full hotel detail page, one shortcode
[tiger_hotel_view hotel_id="1"]

// Or just the rooms grid
[tiger_rooms_grid hotel_id="1" columns="3"]
Ready when you are

Add hotel bookings to Tiger Booking.

Install the free plugin today, then add the Hotel module through the Pro add-on whenever you're ready — no migration required.