{"id":187056,"date":"2024-05-11T05:50:37","date_gmt":"2024-05-11T05:50:37","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/saksh-wp-hotel-booking-lite\/"},"modified":"2026-04-16T10:49:14","modified_gmt":"2026-04-16T10:49:14","slug":"saksh-wp-hotel-booking-lite","status":"publish","type":"plugin","link":"https:\/\/en-au.wordpress.org\/plugins\/saksh-wp-hotel-booking-lite\/","author":12189875,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.1","stable_tag":"trunk","tested":"6.9.4","requires":"5.6","requires_php":"7.4","requires_plugins":null,"header_name":"Saksh WP Hotel Booking Lite","header_author":"susheelhbti","header_description":"Saksh WP Hotel Booking Lite","assets_banners_color":"","last_updated":"2026-04-16 10:49:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/sakshamapp.com","header_author_uri":"https:\/\/profiles.wordpress.org\/susheelhbti\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":796,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":{"2.1":"<p>Major update with 8 new features and 38 bug fixes. Deactivate and reactivate after upgrading to apply the new database schema. No data loss \u2014 existing bookings are preserved.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Room search form with date picker","2":"Room listing with availability and pricing per plan","3":"Admin: Room configuration with 5 booking plans","4":"Admin: Stay rules and blackout dates per room","5":"Admin: Seasonal pricing rules","6":"Admin: Extra services configuration","7":"Admin: Reports dashboard with monthly revenue and occupancy charts","8":"Admin: REST API settings and endpoint documentation","9":"Admin: iCal feed sync settings","10":"Guest: My Bookings tab in WooCommerce My Account"}},"plugin_section":[],"plugin_tags":[4487,4488,4486,260364,51225],"plugin_category":[],"plugin_contributors":[88952],"plugin_business_model":[],"class_list":["post-187056","plugin","type-plugin","status-publish","hentry","plugin_tags-booking-engine","plugin_tags-hotel","plugin_tags-hotel-booking","plugin_tags-room-reservations","plugin_tags-woocommerce-booking","plugin_contributors-susheelhbti","plugin_committers-susheelhbti"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/saksh-wp-hotel-booking-lite.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Saksh WP Hotel Booking Lite<\/strong> turns any WordPress site into a fully functional hotel reservation system. Built on top of WooCommerce, it supports room management, date-based availability, seasonal pricing, extra services, deposit payments, and comes with a reporting dashboard and REST API \u2014 all free.<\/p>\n\n<h4>Core Features<\/h4>\n\n<ul>\n<li><strong>Room management<\/strong> \u2014 Rooms as a custom post type with featured images, amenities (taxonomies), short intro, and up to 5 booking plans per room (e.g., non-refundable, flexible, breakfast-included).<\/li>\n<li><strong>WooCommerce integration<\/strong> \u2014 Bookings flow through the standard WooCommerce cart and checkout, so you get all 60+ payment gateways, coupons, tax handling, and order management out of the box.<\/li>\n<li><strong>Real-time availability checking<\/strong> \u2014 Transaction-locked availability checks prevent double bookings even under concurrent traffic.<\/li>\n<li><strong>Blackout dates &amp; stay rules<\/strong> \u2014 Per-room minimum\/maximum stay and blackout date configuration.<\/li>\n<li><strong>Seasonal pricing<\/strong> \u2014 Configure rate multipliers for date ranges (e.g., \"Dec 20 to Jan 5: +30%\"). Multiple overlapping rules supported.<\/li>\n<li><strong>Extra services \/ add-ons<\/strong> \u2014 Breakfast, parking, airport shuttle, late checkout, etc. Per-booking, per-night, or per-person-per-night pricing.<\/li>\n<li><strong>Deposit payments<\/strong> \u2014 Choose full payment or configurable deposit percentage (guest pays X% now, remainder at check-in).<\/li>\n<li><strong>Email automation<\/strong> \u2014 Booking confirmation, pre-arrival reminder (3 days before check-in), and cancellation emails sent automatically via WP Cron.<\/li>\n<li><strong>iCal import<\/strong> \u2014 Paste Airbnb, Booking.com, Expedia, or VRBO feed URLs per room. Hourly cron fetches and blocks externally-booked dates to prevent double bookings.<\/li>\n<li><strong>Reports dashboard<\/strong> \u2014 Monthly revenue chart, occupancy rate tracking, and key booking stats with visual charts.<\/li>\n<li><strong>REST API<\/strong> \u2014 4 endpoints (rooms list, availability check, bookings list\/create) with API key authentication. Namespace: <code>\/wp-json\/saksh\/v1\/<\/code>.<\/li>\n<li><strong>Guest account integration<\/strong> \u2014 \"My Bookings\" tab on WooCommerce My Account page shows a guest's booking history.<\/li>\n<li><strong>Translation ready<\/strong> \u2014 Full POT file included in <code>\/languages<\/code>.<\/li>\n<\/ul>\n\n<h4>Shortcodes<\/h4>\n\n<ul>\n<li><code>[SakshRoomSearch]<\/code> \u2014 Displays the room search form with date picker and guest count fields.<\/li>\n<li><code>[SakshRoomBooking]<\/code> \u2014 Lists all rooms with current availability and per-plan pricing.<\/li>\n<\/ul>\n\n<h4>Use Cases<\/h4>\n\n<p>This plugin is designed for:<\/p>\n\n<ul>\n<li>Small to medium hotels (up to ~50 rooms)<\/li>\n<li>Boutique hotels and B&amp;Bs<\/li>\n<li>Vacation rentals and guesthouses<\/li>\n<li>Properties also listed on Airbnb or Booking.com (via iCal sync)<\/li>\n<li>Hostels offering bed\/room inventory<\/li>\n<li>Holiday villas and serviced apartments<\/li>\n<\/ul>\n\n<h4>Developer Features<\/h4>\n\n<ul>\n<li>Object-oriented validation class (<code>Saksh_Booking_Validator<\/code>)<\/li>\n<li>Action and filter hooks throughout for extensibility<\/li>\n<li>Custom REST API with API key authentication<\/li>\n<li>Custom bookings database table with indexes<\/li>\n<li>Clean separation of features into modular files<\/li>\n<\/ul>\n\n<h4>Support<\/h4>\n\n<p>For support, feature requests, or custom development:<\/p>\n\n<ul>\n<li>Visit <a href=\"https:\/\/sakshamapp.com\">sakshamapp.com<\/a><\/li>\n<li>WhatsApp: +91 8840574997<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the <strong>WooCommerce<\/strong> plugin (required).<\/li>\n<li>Upload the <code>saksh-wp-hotel-booking-lite<\/code> folder to your <code>\/wp-content\/plugins\/<\/code> directory, or install through the Plugins screen directly in WordPress.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>On activation, the plugin creates sample rooms and a \"Search Room\" + \"Room Booking\" page with the shortcodes.<\/li>\n<li>Configure rooms under <strong>Rooms<\/strong> in the admin menu.<\/li>\n<li>Configure global settings under <strong>Room Bookings<\/strong> in the admin menu:\n\n<ul>\n<li><strong>Extra Services<\/strong> \u2014 manage add-on services<\/li>\n<li><strong>Payment Settings<\/strong> \u2014 choose full vs deposit payment mode<\/li>\n<li><strong>Seasonal Pricing<\/strong> \u2014 set date-range rate multipliers<\/li>\n<li><strong>Reports<\/strong> \u2014 view booking analytics<\/li>\n<li><strong>API Settings<\/strong> \u2014 generate REST API keys<\/li>\n<\/ul><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce handles the cart, checkout, and payment processing. Install WooCommerce before activating this plugin.<\/p><\/dd>\n<dt id=\"does%20it%20support%20multiple%20properties%20%2F%20hotels%3F\"><h3>Does it support multiple properties \/ hotels?<\/h3><\/dt>\n<dd><p>The current release supports a single property with unlimited rooms. Multi-property support is planned for a future release.<\/p><\/dd>\n<dt id=\"can%20i%20sync%20availability%20with%20airbnb%20or%20booking.com%3F\"><h3>Can I sync availability with Airbnb or Booking.com?<\/h3><\/dt>\n<dd><p>Yes \u2014 import only. Paste iCal feed URLs into each room's settings, and the plugin fetches them hourly. Bookings made on your site are not currently pushed back to OTAs (export functionality is planned).<\/p><\/dd>\n<dt id=\"what%20happens%20if%20two%20guests%20try%20to%20book%20the%20same%20room%20at%20the%20same%20time%3F\"><h3>What happens if two guests try to book the same room at the same time?<\/h3><\/dt>\n<dd><p>The plugin uses database transactions with row locking (<code>FOR UPDATE<\/code>) during the final booking step. Only one of the two requests will succeed; the other gets rejected with an availability error. No double bookings.<\/p><\/dd>\n<dt id=\"how%20are%20prices%20calculated%20with%20seasonal%20pricing%3F\"><h3>How are prices calculated with seasonal pricing?<\/h3><\/dt>\n<dd><p>Each night in the stay range is evaluated individually. If 3 nights of a 5-night booking fall in a peak period (multiplier 1.3), only those 3 nights get the surcharge \u2014 the other 2 are at base rate.<\/p><\/dd>\n<dt id=\"can%20guests%20pay%20a%20deposit%20only%3F\"><h3>Can guests pay a deposit only?<\/h3><\/dt>\n<dd><p>Yes. In <strong>Room Bookings \u2192 Payment Settings<\/strong>, choose \"Deposit\" mode and set a percentage (1-99). The cart shows the deposit amount now and the remainder due at check-in.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20translation-ready%3F\"><h3>Is the plugin translation-ready?<\/h3><\/dt>\n<dd><p>Yes. A POT file is included in <code>\/languages<\/code>. Translations are loaded from the standard WordPress language directory.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20any%20theme%3F\"><h3>Does it work with any theme?<\/h3><\/dt>\n<dd><p>Yes, as long as your theme supports WooCommerce. The booking form uses basic Bootstrap-style classes that fall back gracefully.<\/p><\/dd>\n<dt id=\"where%20do%20booking%20emails%20come%20from%3F\"><h3>Where do booking emails come from?<\/h3><\/dt>\n<dd><p>Emails are sent via <code>wp_mail()<\/code> using your site's configured email. We recommend installing WP Mail SMTP or similar for reliable delivery.<\/p><\/dd>\n<dt id=\"how%20do%20i%20access%20the%20rest%20api%3F\"><h3>How do I access the REST API?<\/h3><\/dt>\n<dd><p>Generate an API key under <strong>Room Bookings \u2192 API Settings<\/strong>. Send it as the <code>X-Saksh-Api-Key<\/code> HTTP header. Public endpoints (rooms list, availability check) do not require authentication. See API Settings page for full endpoint documentation.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20slow%20down%20my%20site%3F\"><h3>Does the plugin slow down my site?<\/h3><\/dt>\n<dd><p>No. Admin scripts are conditionally loaded only on plugin admin pages. Availability queries are optimized with database indexes. For very large installations (50+ rooms), use a caching plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.1<\/h4>\n\n<ul>\n<li>NEW: Stay rules (min\/max nights per room)<\/li>\n<li>NEW: Blackout dates per room<\/li>\n<li>NEW: Extra services \/ add-ons with flexible pricing<\/li>\n<li>NEW: Deposit payment mode<\/li>\n<li>NEW: Seasonal pricing with date-range multipliers<\/li>\n<li>NEW: Automated emails (confirmation, pre-arrival, cancellation)<\/li>\n<li>NEW: REST API with 4 endpoints and API key auth<\/li>\n<li>NEW: iCal feed import (Airbnb, Booking.com, etc.)<\/li>\n<li>NEW: Reports dashboard with Chart.js visualizations<\/li>\n<li>SECURITY: Multiple XSS fixes on admin output<\/li>\n<li>SECURITY: Nonce verification added to all admin forms<\/li>\n<li>SECURITY: Recursive sanitization of nested POST arrays<\/li>\n<li>SECURITY: Auth check added to AJAX endpoints<\/li>\n<li>SECURITY: Rate limiting on booking submissions (10\/hour\/IP)<\/li>\n<li>FIX: Race condition in availability check (now uses transaction + row lock)<\/li>\n<li>FIX: Taxes were hardcoded to 0 \u2014 now properly calculated<\/li>\n<li>FIX: Availability off-by-one (&gt;= vs &gt;)<\/li>\n<li>FIX: Invalid WooCommerce product status ('public' \u2192 'publish')<\/li>\n<li>FIX: Activation hook moved to main file (DB table now creates correctly)<\/li>\n<li>FIX: SQL date query passed timestamp where string expected<\/li>\n<li>FIX: Duplicate script handles prevented FullCalendar from loading<\/li>\n<li>FIX: Notification emails: array\/object access mismatch<\/li>\n<li>FIX: Crash on rooms without amenities<\/li>\n<li>FIX: Admin meta box data was never saving (nonce action mismatch)<\/li>\n<li>FIX: Developer email removed from activation<\/li>\n<li>FIX: CPT name case inconsistency (design selector was empty)<\/li>\n<li>FIX: Redux framework include now optional<\/li>\n<li>PERF: Added DB indexes (room_id+date, order_id, user_id, status, dates)<\/li>\n<li>PERF: Conditional script loading (only on plugin admin pages)<\/li>\n<li>PERF: Limit of 50 rooms on search by default (filterable)<\/li>\n<li>Improved DB schema: DECIMAL for money, BIGINT for IDs, proper charset<\/li>\n<li>38 total bug fixes from v2.0 \u2014 see FEATURES.md for details<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Initial public release with basic booking functionality<\/li>\n<li>WooCommerce integration<\/li>\n<li>Admin booking calendar<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First development version<\/li>\n<\/ul>","raw_excerpt":"A complete hotel room booking plugin for WordPress with WooCommerce integration, seasonal pricing, deposit payments, iCal sync, and a REST API.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/187056","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=187056"}],"author":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/susheelhbti"}],"wp:attachment":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=187056"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=187056"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=187056"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=187056"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=187056"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=187056"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}