Complete installation, configuration, and front-desk reference for ReservePress Hotels (v3.2.6) — covering room types & room instances, seasonal rate rules, 2-way iCal channel sync (Booking.com, Airbnb, VRBO, Expedia), Stripe deposits, and companion themes.
Before installing ReservePress Hotels, confirm your server meets the following requirements: Requirement
Minimum
WordPress
PHP
MySQL / MariaDB
MySQL 5.7+ or MariaDB 10.3+
HTTPS
Required for Stripe payments (strongly recommended for all installs)
Pretty Permalinks
Must be enabled — Settings → Permalinks → any option except Plain
WP Memory Limit
128 MB minimum; 256 MB recommended
Optional: Stripe Account
Required only if you want to collect online payments or deposits. Not required for pay-at-property or invoice workflows.
/wp-content/plugins/ via FTP.The plugin automatically creates 12 custom database tables prefixed with wp_rph_. Custom capabilities are added to the Administrator role. A Front Desk page is created automatically. No existing WordPress data is modified.
wp_rph_room_instanceswp_rph_guestswp_rph_bookingswp_rph_promotionswp_rph_seasonswp_rph_addonswp_rph_booking_addonswp_rph_depositswp_rph_blocked_dateswp_rph_payment_historywp_rph_ical_feedswp_rph_ical_sync_logFollow these steps in order after activating the plugin.
Go to ReservePress → Settings → General and fill in:
Go to ReservePress → Room Types → Add New. Room types are WordPress custom post types. Fill in:
Go to ReservePress → Room Instances. Room instances represent individual physical rooms (e.g. Room 101, Room 102). They enable per-room availability tracking and front desk check-in/out workflow.
Go to ReservePress → Seasons → Add New Season. Seasons override the base rate for specific date ranges — useful for peak, shoulder, and off-season pricing.
Create the following pages in WordPress → Pages → Add New: Page Title
Slug
Content / Notes
Book a Room
book
Add shortcode [rph_booking_widget] or use the ReservePress Hotels Theme Booking Page template.
Rooms
rooms
Add [rph_rooms] shortcode or use Rooms Page template.
My Reservations
my-reservations
Add [rph_my_reservations] shortcode. Guests access via confirmation email link.
All shortcodes enqueue required CSS and JavaScript automatically.
[rph_booking_widget]
The primary booking shortcode. Renders a date picker and guest count selector. On search, displays available room types for the selected dates. Guest completes the booking through a multi-step checkout flow with optional Stripe payment.
[rph_rooms]
[rph_rooms columns="2" show_price="yes"]
Displays all published room types in a responsive grid. Attribute
Default
Description
columns
3
Number of columns (1–4).
show_price
yes
Show nightly rate on each card.
show_book_button
yes
Show Book Now button.
orderby
menu_order
Sort order: menu_order, title, price.
[rph_room id="42"]
Displays a single room type card by its post ID.
[rph_promotions]
Displays all currently active promotions. Promo codes can be entered during checkout.
[rph_my_reservations]
Displays a guest's reservation history. Logged-in users see their bookings automatically. Guests access via a secure link in their confirmation email.
[rph_availability_calendar room_type="42"]
Displays a read-only availability calendar for a specific room type.
The ReservePress menu appears in the WordPress admin sidebar.
[rph_promotions].Two-way iCal calendar sync with Booking.com, Airbnb, VRBO, and other OTAs. See Chapter 11 for full documentation.
All settings are at ReservePress → Settings. Each tab saves independently.
Setting
Description
rph_property_name
Your property name — appears in email notifications and the booking widget.
rph_property_email
Reply-to email address for all guest-facing emails.
rph_property_phone
Property phone number — included in confirmation emails.
rph_check_in_time
Standard check-in time displayed to guests. Default: 15:00.
rph_check_out_time
Standard check-out time displayed to guests. Default: 11:00.
Setting
Description
rph_min_nights
Minimum nights per booking. Default: 1.
rph_max_nights
Maximum nights per booking. Default: 30.
rph_min_advance_booking
Minimum days in advance a guest can book. Default: 1.
rph_max_advance_booking
How far ahead guests can book. Default: 365 days.
rph_allow_guest_checkout
Allow bookings without a WordPress account. Recommended: on.
Setting
Description
rph_stripe_enabled
Enable Stripe payment processing.
rph_stripe_test_mode
on = use test API keys. off = use live keys.
rph_payment_mode
full = charge full amount. deposit = charge deposit only.
rph_deposit_percentage
Percentage of total charged as deposit. Default: 30.
rph_stripe_test_publishable_ key
Stripe test publishable key (starts with pk_test_).
rph_stripe_test_secret_key
Stripe test secret key (starts with sk_test_).
rph_stripe_live_publishable_ key
Stripe live publishable key (starts with pk_live_).
rph_stripe_live_secret_key
Stripe live secret key (starts with sk_live_). Never share this key.
Setting
Description
rph_tax_enabled
Apply tax to room rates at checkout.
rph_tax_rate
Tax percentage (e.g. 13 for 13% HST).
rph_tax_name
Label shown at checkout (e.g. HST, GST, VAT).
rph_tax_inclusive
on = prices already include tax. off = tax added on top.
Setting
Description
rph_currency
ISO currency code. Default: USD.
rph_currency_symbol
Symbol displayed with prices. Default: $.
rph_currency_position
before = $200. after = 200$.
rph_currency_decimals
Number of decimal places. Default: 2.
Setting
Description
rph_email_from_name
Sender name for all plugin emails.
rph_email_from_address
Sender email address.
rph_email_booking_confirmati on
Send a confirmation email to the guest after booking.
rph_email_admin_notification
Send a notification email to the property admin on new booking.
rph_email_payment_confirmati on
Send a receipt email after payment is processed.
rph_email_cancellation
Send a cancellation notice to the guest.
rph_smtp_host
SMTP server hostname.
rph_smtp_port
SMTP port. Common values: 587 (TLS), 465 (SSL).
rph_smtp_username
SMTP account username.
rph_smtp_password
SMTP account password.
rph_smtp_encryption
tls or ssl.
WordPress default email (wp_mail) is often blocked by hosting providers. Use a transactional email service such as SendGrid, Mailgun, or Postmark for reliable delivery.
ReservePress Hotels adds custom capabilities to the WordPress role system. Administrators receive all capabilities automatically on activation.
Capability
Description
Admin
Manager*
Agent*
manage_rph_bookings
View, create, edit bookings
✓
✓
✓
edit_rph_bookings
Edit existing bookings
✓
✓
✓
delete_rph_bookings
Delete bookings
✓
✓
manage_rph_rooms
instances
✓
✓
manage_rph_settings
Access plugin settings
✓
✓
view_rph_reports
reports
✓
✓
view_rph_calendar
View the calendar screen
✓
✓
✓
access_rph_frontend
Access the Front Desk interface
✓
✓
✓
* Manager and Agent roles are not created automatically. Assign capabilities using a role editor plugin.
The Front Desk is a dedicated property management system (PMS) designed for front desk staff, managers, and coordinators. It provides everything needed to run daily operations without requiring access to the WordPress admin area.
The Front Desk page is created automatically on plugin activation and is accessible at: https://yoursite.com/front-desk/
The Front Desk requires the access_rph_frontend capability. Administrators have this by default. To give a staff member access: go to WordPress Admin → Users, edit the user, and assign the Hotel Manager role — or use a role editor plugin to add the access_rph_frontend capability to an existing role. Staff with Front Desk access are automatically redirected to the Front Desk after login and cannot access the WordPress admin.
The Dashboard tab is your starting point at the beginning of each shift. It shows:
Review Arrivals Today and Departures Today first. Check the Pending Bookings count — any pending bookings should be confirmed or followed up before the day gets busy. Use the Room Status Grid to verify your housekeeping team has cleared departure rooms.
When a guest arrives to check in:
If a guest arrives before their check-in date, the booking will not appear in Arrivals Today. Find it via the Bookings tab, search by guest name or booking number, and check in manually from the booking detail view.
When a guest is ready to check out:
If a guest requests late check-out, leave the booking in Checked In status until they actually depart. This keeps the room marked as occupied in the status grid so housekeeping knows not to prepare it for an incoming guest.
To create a booking for a walk-in guest or a reservation taken by phone:
The Bookings tab lists all reservations. Filter by status, date range, or room type. Search by guest name, email, or booking number. Click any booking to open the full detail view.
Booking status options:
Status
Description
Pending
Inquiry or unconfirmed reservation — awaiting your review.
Confirmed
Confirmed reservation — guest is expected.
Checked In
Guest is currently on property.
Checked Out
Guest has departed. Stay is complete.
Cancelled
Booking has been cancelled. Room is freed.
No Show
Guest did not arrive. See Section 8.8.
To change a booking status, open the booking and click the appropriate action button, or change the status directly from the status dropdown and save.
The Rooms tab shows all room instances grouped by room type, with their current status. Use this tab to manage maintenance and room readiness.
If a guest does not arrive on their check-in date:
Promo codes can be applied when creating or editing a booking in the Front Desk:
Promo codes are created and managed in the Promotions tab of the Front Desk, or in ReservePress → Promotions in the WordPress admin.
The Reports tab provides a quick revenue and occupancy summary for any date range.
The Front Desk Reports tab provides a quick operational summary. For full revenue reporting with export options, use ReservePress → Reports in the WordPress admin.
The plugin sends the following emails automatically.
Trigger
Recipient
Booking Confirmation
Immediately after a successful booking
Guest
Admin Notification
Immediately after a successful booking
Property admin
Payment Confirmation
After successful Stripe payment
Guest
Cancellation Notice
When a booking is cancelled
Guest
For high-traffic or mission-critical emails, configure a real cron job on your server: */5 * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null
Step 1: Create a Stripe Account
Go to stripe.com and create or log in to your account. Complete business verification if required for live payments.
Step 2: Get Your API Keys
In the Stripe dashboard, go to Developers → API Keys. Copy your Publishable key and Secret key. Start with test mode keys for initial setup.
Step 3: Enter Keys in Plugin Settings
Go to ReservePress → Settings → Payments. Enable Stripe and check Test Mode. Paste your test keys and save.
Step 4: Set Up Webhook
In Stripe go to Developers → Webhooks → Add Endpoint. Endpoint URL: https://yoursite.com/wp-json/rph/v1/stripe-webhook. Select events: payment_intent.succeeded and payment_intent.payment_failed.
Step 5: Test a Payment
Make a test booking. Use Stripe test card 4242 4242 4242 4242 with any future expiry and any CVC. Confirm the booking shows payment status Paid.
Never paste your Stripe secret key anywhere public or in version control. HTTPS is required for Stripe to function on live sites.
ReservePress Hotels includes two-way iCal calendar sync, allowing your booking availability to stay in sync with Booking.com, Airbnb, VRBO, Expedia, and any other platform that supports the iCalendar standard (RFC 5545). This prevents double bookings when you list on multiple platforms while also taking direct bookings on your own site.
The sync system works in two directions:
Go to ReservePress → Calendar Sync. Each room type has a unique export URL automatically generated on first load. The URL includes a secret token to prevent competitors from enumerating your availability. The export URL format is: https://yoursite.com/rph-ical/{room_type_id}/{token}/
To connect to Booking.com:
If you need to revoke an export URL — for example if it was shared accidentally — click Regenerate Token on the Calendar Sync page. This creates a new URL and invalidates the old one. You will need to update the URL in Booking.com and Airbnb after regenerating.
Go to ReservePress → Calendar Sync. For each room type, click Add Feed and fill in:
To get your iCal feed URL from Airbnb:
Dates imported from an external feed are stored as blocked date records in wp_rph_blocked_dates with the platform name set as the reason (e.g. airbnb, booking_com). They are clearly labelled in the admin calendar and can be distinguished from manually blocked dates. They are also excluded from your export feed to prevent sync loops.
ReservePress Hotels registers a custom WP-Cron interval and automatically syncs all active import feeds every 2 hours. No manual action is required after the initial setup. You can also trigger a manual sync at any time by clicking Sync Now next to any feed on the Calendar Sync page. The sync result is shown immediately.
WP-Cron fires when your site receives a visitor. On low-traffic sites this may mean syncs happen less frequently than every 2 hours. For guaranteed 2-hour sync intervals, configure a real server cron job: */120 * * * * curl -s https://yoursite.com/wp-cron.php?doing_wp_cron > /dev/null
When an imported feed contains a date range that overlaps with an existing confirmed booking in ReservePress, the system detects the conflict and flags it rather than silently overwriting your booking.
The best way to prevent conflicts is to keep your export URL active in Booking.com and Airbnb so they block your direct bookings promptly. Conflicts typically arise when there is a delay between a direct booking and the OTA's next sync of your export feed.
Every sync attempt is recorded in the sync log, accessible from the Calendar Sync page by clicking View Log next to any feed. Each log entry shows:
Log entries older than 90 days are automatically pruned during the daily maintenance cron.
The following platforms are supported for both import and export: Platform
Slug
Notes
Airbnb
airbnb
Full two-way sync supported. Airbnb validates the User-Agent header — ReservePress sends the correct UA automatically.
Booking.com
booking_com
Full two-way sync supported.
VRBO
vrbo
Full two-way sync supported.
Expedia
expedia
Full two-way sync supported.
TripAdvisor
tripadvisor
Full two-way sync supported.
HomeAway
homeaway
Full two-way sync supported.
Other
other
Any platform that provides a standard iCalendar (.ics) feed URL.
The ReservePress Hotels Theme is the official companion theme for ReservePress Hotels. It is designed to work out of the box with the plugin — no manual shortcode setup required.
Page Title
Slug
Template
Home (set as front page)
/
Front Page
Rooms
rooms
Rooms Page
Book a Room
book
Booking Page
My Reservations
my-reservations
My Reservations Page
About
about
About Page
Gallery
gallery
Gallery Page
Contact
contact
Contact Page
Go to Appearance → Customize to access all theme options including property name, tagline, hero content, colour palette, typography, and footer details.
ReservePress Hotels Theme Lite is a minimal booking shell included free with every ReservePress Hotels purchase. It is designed for properties whose main website runs on Shopify, Squarespace, Wix, or any non-WordPress platform.
Install WordPress in a subfolder of your domain (e.g. yourproperty.com/book/). Theme Lite turns that subfolder into a self-contained booking portal. The header shows your logo, linking back to your main site.
Option
Description
Logo
Upload your property logo. Displayed in the header, links back to your main site.
Primary Colour
Accent colour applied to buttons and highlights in the booking widget.
Main Site URL
The URL your logo links to (e.g. https://yourproperty.com).
Footer Copyright
Copyright line displayed in the footer.
Theme Lite has no navigation menu, no homepage, and no marketing content. For a full hotel website, use the ReservePress Hotels Theme (Chapter 12).
Booking widget shows “No rooms available” for all dates
Room availability looks wrong after connecting Booking.com or Airbnb
iCal export URL returns 404
For additional help, feature requests, or to report a bug, visit reservepress.ca or contact us at hello@reservepress.ca.
ReservePress Hotels is open source software licensed under the GNU General Public License v2 or later.