WooCommerce Rentals Bookings Dokan is a full-featured rental and booking plugin for WordPress. Whether you run a single-vendor WooCommerce store or a multi-vendor Dokan marketplace, this plugin gives you everything you need to rent out accommodations, vehicles, equipment, spaces, services, and products.
Why Choose This WooCommerce Booking Plugin?
Most WooCommerce booking plugins only handle one rental model. This plugin supports
six platform categories – accommodation, vehicle, equipment, space, service, and product – each with its own booking modes, pricing rules, and payment settings. You get a single plugin that replaces multiple booking extensions.
Works With WooCommerce Alone (Solo Mode)
You do
not need Dokan or any marketplace plugin. Install the plugin alongside WooCommerce and you get:
- A Rentals menu in wp-admin with Bookings, Wizard, Calendar, Analytics, and Settings pages
- A dedicated Rental product data tab on the WooCommerce Edit Product screen
- A Dashboard widget showing booking stats and revenue at a glance
- Full REST API for headless or custom frontend integrations
Works With Dokan Marketplace (Multi-Vendor Mode)
When Dokan Lite or Dokan Pro is active the plugin automatically switches to multi-vendor mode:
- Vendors get a Booking Wizard in their Dokan frontend dashboard to create rental offers
- Each vendor sees only their own bookings, calendar, analytics, and settings
- Platform admins control global pricing rules, payment policies, and vendor permissions per category
- Compatible with Dokan Lite 4.x and Dokan Pro 4.x
Mobile-First Booking Wizard
The vendor booking wizard is a
React single-page application with 8 guided steps:
- Welcome – introduction and resume previous draft
- Offer Type – select platform category (accommodation, vehicle, equipment, space, service, product)
- Inventory – pick an existing WooCommerce or Dokan product
- Availability – set schedule, time slots, and blackout dates
- Pricing – base price and dynamic pricing rules (weekend, long-stay, early-bird, last-minute, seasonal)
- Payment – deposit amount, security deposit, balance collection method
- Media – photos and description
- Publish – review and go live
The wizard auto-saves drafts so vendors never lose progress. It is fully responsive and works on phones and tablets.
Availability Calendar
An interactive
FullCalendar view lets vendors see all their bookings at a glance. Colour-coded statuses (pending, confirmed, in-progress, returned, completed, cancelled) make it easy to spot what needs attention. The calendar supports day, week, and month views.
Dynamic Pricing Rules
Set flexible pricing per platform category:
- Weekend pricing – different rates for Friday/Saturday/Sunday
- Long-stay discounts – percentage off for bookings longer than N days
- Early-bird discounts – reward customers who book far in advance
- Last-minute discounts – fill empty slots with time-sensitive deals
- Seasonal pricing – date-range based rate adjustments (accommodation and space categories)
All pricing rules are configured by the platform admin and optionally overridden by vendors when permissions allow.
Deposits and Security Deposits
Collect payments in stages to reduce risk for both renters and owners:
- Deposit – a percentage or fixed amount collected at checkout to confirm the booking
- Security deposit – an authorisation hold or capture to cover potential damage
- Balance – the remaining amount, collectible online, by bank transfer, cash on delivery, or other methods
Payment statuses are tracked per booking: pending, paid, refunded, released, forfeited, partial. Vendors can update payment fields and add notes through the vendor dashboard.
Full Booking Lifecycle
Every booking follows a clear status flow:
pending → confirmed → checked_in → checked_out → completed
Automated cron jobs handle routine transitions:
- Auto start – confirmed bookings move to checked_in when the start date arrives
- Auto return – checked_in bookings move to checked_out when the end date passes
- Auto cancel – pending bookings are cancelled if the start date passes without confirmation
Vendors can also trigger transitions manually: confirm, start now, mark returned, complete (after restitution validation), or cancel.
Restitution Validation
When a rental item is returned, the vendor reviews its condition, records any damage, sets a damage amount (deducted from the security deposit), updates payment statuses, and clicks
Validate and Complete to close the booking. This workflow ensures accountability and clear records.
Vendor Analytics
A dedicated analytics page gives vendors insight into their rental business:
- KPI cards – total bookings, revenue, conversion rate, upcoming bookings
- Overview tab – booking status donut chart and category breakdown
- Charts tab – monthly bookings and revenue bar charts
- Products tab – top rented products table and category statistics
Per-Category Admin Settings
Platform admins configure settings per category through a tabbed admin interface:
- Categories – enable or disable each of the six platform categories
- Booking – default booking modes and slot durations
- Pricing – which pricing rules are available per category and their default values
- Payment – deposit type, deposit percentage, security deposit toggle, balance methods
- Permissions – which settings vendors can override (prices, deposits, schedules)
- Notifications – email templates and reminder timing
- Advanced – hold duration, draft cleanup, log retention
- Danger zone – data preservation toggle for uninstall
REST API
A comprehensive REST API powers the frontend and can be used for headless integrations:
Public endpoints:
- Check availability for a product and date range
- Create a temporary hold (anti-double-booking)
- Revalidate before checkout
- Create a booking from WooCommerce checkout
-
Get public settings
Vendor endpoints (authenticated):
-
List, view, create, update, cancel bookings
- Check-in, check-out, complete, refund
- Calendar events and statistics
- Wizard draft save/load and publish
-
Vendor products and settings
Admin endpoints:
-
List all bookings platform-wide
- Platform-wide statistics
Internationalisation
The plugin is fully translatable. Translation files are included for 12 languages: Arabic, Chinese, English, French, German, Italian, Japanese, Dutch, Polish, Portuguese (Brazil), Russian, Spanish, and Turkish. The text domain is wahra-rentals-bookings.
Developer Friendly
- WordPress Coding Standards – follows WPCS and passes plugin check
- HPOS Compatible – declares High-Performance Order Storage compatibility for WooCommerce
- Custom Database Tables – 8 dedicated tables for fast booking queries without post meta bloat
- Singleton Pattern – core classes use ::instance() for consistent state
- Hooks and Filters – extensible architecture with documented action and filter hooks
- Readable Source – full React source included for WordPress.org compliance
Requirements
- WordPress 6.6 or higher
- PHP 8.1 or higher
- WooCommerce 8.0 or higher (required)
- Dokan Lite 4.x or Dokan Pro 4.x (optional, for multi-vendor mode)
2.2.0
Solo mode overhaul, booking lifecycle management, and admin UX improvements.
New Features:
- Full booking lifecycle management in solo mode (confirm, start, return, complete, cancel) – replaced basic bookings table with interactive vendor dashboard
- Early check-in blocking – prevents check-in before scheduled start date
- Vendor price adjustment at restitution – vendors can adjust total price when completing a booking
- Auto-confirm bookings setting in admin Settings > Bookings tab
- Notification email setting in admin Settings > Notifications tab
-
Visual customization page – dedicated submenu for brand colors and client-facing texts
Improvements:
-
Renamed solo mode main menu from "Rentals & Bookings" to "Rentals"
- Replaced "Fine-Tune" submenu with streamlined "Visual" submenu (colors + texts only)
- Moved notification email and auto-confirm settings from Fine-Tune into admin Settings tabs
- Solo mode settings sync – auto-confirm and notification email now sync between platform options and vendor user meta
- Hide "Add to cart" setting for rental products
- Admin menu consolidation in solo mode – single unified menu
- Fixed translation encoding issues across all 13 locale files (.po/.mo)
- Replaced hardcoded French strings in vendor JS with localized i18n strings
- All vendor-facing JS strings now use wahrbVendorConfig.i18n for proper translation support
-
URL helper centralization – all dashboard URLs use wahrb_get_dashboard_url()
Technical:
-
New template: templates/dokan/visual-settings.php – standalone visual settings for solo mode
- Bookings page in solo mode now loads vendor CSS/JS assets for full lifecycle UI
- 147 tests passing
2.1.0
- New: Initial Setup Wizard – guided first-run configuration for admins
- New: Automatic admin notice on first activation with link to setup wizard
- New: 4-step wizard: Welcome, Categories, Settings, Ready
- Improved: Setup Wizard visual redesign with full-screen admin experience and responsive layout
- New: Relaunch Setup Wizard action available from Settings -> Tools
- New: Dedicated Tools settings tab with system information summary
- Improved: Existing installs auto-skip wizard on upgrade
2.0.6
WordPress.org ranking optimisation and admin UX improvements.
New Features:
- Contextual support widget on plugin admin pages (links to docs and forums)
- Ethical review prompt after 5 completed bookings or 30 days of usage
- Environment compatibility checker (PHP, WordPress, WooCommerce version warnings)
-
SVN freshness reminder for developers (90-day update prompt)
Improvements:
-
Expanded readme.txt with comprehensive feature descriptions and 25+ FAQs
- Updated "Requires at least" to WordPress 6.6
- Added screenshot placeholders for WordPress.org listing
- All new admin classes are self-registering standalone files (zero changes to existing code)
2.0.5
Added solo vendor mode - the plugin now works with WooCommerce alone, without requiring Dokan.
New Features:
- Solo vendor mode: full WP admin integration (Rentals menu with Bookings, Wizard, Calendar, Analytics, Settings)
- WooCommerce product data tab for rental configuration (solo mode)
- WP Dashboard widget showing booking stats and revenue (solo mode)
- Auto-detection of Dokan presence at runtime - single plugin ZIP works in both modes
-
Mode-aware navigation: Dokan frontend dashboard URLs or WP admin URLs based on active mode
Bug Fixes:
-
Fixed duplicate rental product fields appearing in solo mode (Loader and Solo Integration both registered fields)
- Removed dead
wahrb_should_load_assets filter hook from Solo Integration
- Removed redundant asset enqueue in Solo Integration (already handled by Loader)
-
Fixed outdated inline comment referencing wrong function name in Solo Integration
Improvements:
-
Dokan is no longer required for activation - WooCommerce is the only hard dependency
- REST API vendor permission checks now support both Dokan sellers and WooCommerce shop managers
- Stripe detection in admin settings now checks both Dokan Stripe Connect and standard WC Stripe gateway
- All templates gracefully degrade when Dokan is absent (no fatal errors)
- Product editing hooks in Loader now conditional on Dokan mode (Solo Integration provides dedicated Rental tab)
- Added
Requires Plugins: woocommerce header for WordPress 6.5+ dependency management
2.0.4
UI/UX improvements for calendar, dashboard widget, admin analytics, and updated screenshots.
Bug Fixes:
- Fixed calendar event text invisible (white on light blue) due to FullCalendar 6 CSS specificity override
- Fixed dashboard widget CSS silently discarded due to dokan-style handle (already printed before template)
- Fixed dashboard widget missing closing div tag breaking DOM structure
-
Fixed admin analytics KPI values truncated at bottom (Arabic currency symbol clipped by overflow:hidden)
Improvements:
-
Redesigned vendor dashboard booking widget with 2x2 stat grid, color-coded numbers, revenue highlight row, icon buttons, and active bookings badge
- Calendar event status colors now properly override FullCalendar 6 defaults with increased CSS specificity
- Updated plugin screenshots to reflect current UI
2.0.3
Bug fixes for booking API, email notifications, payment processing, and test coverage.
Bug Fixes:
- Fixed cancellation email not sent to vendor when recipient set to both
- Fixed cancel action bypassing status update hooks, preventing notifications
- Fixed API refund endpoint returning incorrect response format
- Fixed booking list API allowing invalid orderby parameter
- Fixed invalid refunded status in API booking filters
- Fixed security deposit unconditionally captured regardless of settings
-
Fixed vendor booking API returning zero amounts for deposit and balance
Developer:
-
Added regression test suite covering all fixed issues (147 total tests)
2.0.2
Minor internal improvements and build configuration updates.
2.0.1
Bug fixes, calendar improvements, and vendor permissions update.
Improvements:
- Calendar: Added status filter dropdown (filter bookings by Pending, Confirmed, Active, Returned, Completed, Cancelled)
- Calendar: Added "Returned" (checked_out) status with distinct amber color in events, legend, and popup
- Calendar: Fixed event CSS class prefix mismatch (fc-event-* now matches stylesheet)
- Vendor Settings: Payment section now shows read-only summary cards (Deposit, Security, Balance) when vendor cannot edit
- Vendor Permissions: Default changed to allow vendors to manage deposit and security deposit settings
- Admin Settings: Per-tab save fix prevents cross-tab data corruption when saving settings
- Admin Settings: Stripe Connect message changed from error to informational notice
- Vendor Settings: Fixed "Client Display Texts" layout (inputs no longer constrained to 200px)
-
Platform Categories: Added auto-repair for corrupted all-disabled categories in database
Translations:
-
Added 10+ missing French translations for vendor settings and calendar strings
Bug Fixes:
-
Fixed vendor payment section showing only "managed by platform" message due to false permission defaults
- Fixed Flatpickr blocked dates integration in vendor manual booking modal
2.0.0
Major release with complete UI/UX overhaul, full booking lifecycle, and comprehensive currency/i18n fixes.
New Features:
- Full booking lifecycle: pending > confirmed > checked_in > checked_out > completed with automated cron transitions
- Vendor restitution validation workflow (condition review, damage amount, payment status updates)
- Manual vendor actions: check-in, check-out, complete, cancel with REST API endpoints
- Payment tracking with auto-timestamps (deposit_paid_at, balance_paid_at, security_captured_at, security_released_at)
- Vendor analytics dashboard redesigned with 3-tab layout (Overview, Charts, Products and Categories)
- KPI summary cards (Total Bookings, Revenue, Conversion Rate, Upcoming) always visible above tabs
- Status breakdown donut chart and category breakdown donut chart in Overview tab
- Monthly bookings and revenue bar charts in Charts tab
- Top rented products and category stats tables in Products and Categories tab
- Admin analytics dashboard with active vendor count and platform-wide statistics
- Per-category payment settings (deposit, security, balance configured per platform category)
- Per-category vendor permissions (overrides resolved per category instead of globally)
- Visual Customization color picker redesigned with native color swatches (72x72px circular inputs in CSS grid)
-
Stats cache invalidation on booking creation and status change
Security Fixes:
-
Fix: CRITICAL - Stored XSS vulnerability in booking detail modals via unescaped user data
- Fix: HIGH - Security deposit release/refund marked as successful even when WooCommerce refund failed
- Fix: HIGH - Hold race condition allowed two users to hold the same dates when updating existing hold
- Fix: HIGH - Wizard publish called apply_wizard_data_to_product() twice, potentially overriding Dokan hook changes
-
Fix: HIGH - Timezone mismatch in availability check (strtotime vs gmdate comparison)
Critical Fixes:
-
Fix: CRITICAL - Soft-deleted blackout dates were still blocking availability in daily sync
- Fix: CRITICAL - Cron draft cleanup never ran due to method name mismatch
- Fix: CRITICAL - Booking reminder emails silently failed due to missing method in emailer
- Fix: CRITICAL - Statistics revenue calculation used non-existent column - corrected to pricing_snapshot JSON
- Fix: CRITICAL - Booking payment schedule now resolves deposit/security from product's platform category
- Fix: CRITICAL - Wizard REST endpoint returns per-category payment map instead of flat payment keys
- Fix: CRITICAL - Dokan vendor settings returns payment_by_category and permissions_by_category structures
- Fix: Currency symbol encoding - get_woocommerce_currency_symbol() HTML entities now decoded for all JS/JSON contexts (13 files fixed)
- Fix: wp_add_inline_style handle changed from dokan-style to wahrb-vendor-styles (CSS was silently discarded)
- Fix: Settings page tabs not working - all content collapsed onto Payment tab due to CSS handle bug
- Fix: Analytics page styles missing - same dokan-style handle root cause
-
Fix: Bookings list PHP parse error - missing closing tag before HTML comment
UI/UX Improvements:
-
Email config radio cards improved with stronger borders, shadows, and visual feedback
- Day abbreviations standardized: M to Mo, W to We, F to Fr across wizard steps 3 and 4
- Wizard step interactions fixed (offer type selection, pricing toggles, payment toggles, publish)
- Replaced all broken wp_add_inline_script calls with properly enqueued JS files
- Product page booking card enhanced with shadow, borders, z-index
- Wizard Create new product error handling with snackbar notifications
- Eye button (booking detail) on vendor bookings list fixed
-
Phone validation relaxed to 8-digit minimum for valid Tunisian numbers
Internationalization:
-
Removed all hardcoded DT currency fallbacks from React components - currency always from WooCommerce config
- Completed React wizard internationalization - all French strings replaced with t() calls
- Added French translations for analytics page (status breakdown, category breakdown, tab labels, KPI labels)
- Calendar day abbreviations properly localized (Mo to Lu, We to Me, Fr to Ve for French)
- All hardcoded French strings in wahrb-calendar.js replaced with i18n references
-
Source strings in English per WordPress.org requirements
Architecture:
-
WAHRB_Platform_Categories helper methods: get_payment_settings(), get_product_payment_settings(), get_all_payment_settings(), get_vendor_permissions()
- Activator default payment settings restructured to per-category format for all 6 categories
- Platform Categories tab is now the default admin settings tab
- General tab renamed to Advanced and moved after Notifications
- Chart.js charts call resize() on tab switch to fix canvas rendering
-
Booking number generation with collision detection retry loop
Developer:
-
Expanded test suite from 6 to 105 tests (phone validation, email formatting, stats, i18n, per-category architecture)
- Added WordPress.DB.PreparedSQL.InterpolatedNotPrepared to 40 phpcs annotations
- Added PluginCheck.Security.DirectDB.UnescapedDBParameter to all 117 phpcs annotations
- Deactivator and uninstall.php cleared phantom cron hooks - corrected to actual hooks
- Added root index.php for directory listing protection
- All wizard JS uses vanilla JS (no jQuery dependency)
- PHP data passed to JS via wp_localize_script for WordPress.org compliance
1.0.2
- Fix: Renamed plugin prefix from DRB to WAHRB (4+ characters) for WordPress.org compliance
- Fix: Renamed main plugin file to wahra-rentals-bookings.php
- Fix: Removed load_plugin_textdomain (WordPress.org handles translations automatically)
- Fix: Moved all inline scripts to wp_add_inline_script()
- Fix: Improved input sanitization (wp_unslash, map_deep, sanitize_text_field on session data)
- Fix: Improved output escaping (wp_kses, wp_strip_all_tags on inline CSS)
- Fix: Added $wpdb->prepare() to all LIKE queries
- Fix: Added phpcs:ignore annotations to direct database queries
- Fix: Fixed mixed line endings in template files
- Fix: Removed unnecessary development files from distribution
- Fix: Added source code documentation in readme.txt
- Fix: Updated third-party libraries to latest versions
- Fix: Translated remaining hardcoded French strings
1.0.1
- Fix: Enhanced security with improved nonce verification and output escaping
- Fix: Standardized date handling for better timezone support
- Fix: Optimized SQL queries and database interactions
- Fix: Minor bug fixes and performance improvements
1.0.0
- Initial release
- Mobile-first vendor wizard
- Advanced pricing engine with rules
- Availability management system
- Security deposit handling
- Multi-step payment support
- Email notification system
- Dokan dashboard integration