Tutorial

How to set up hotel bookings on WordPress with a free plugin, step by step

From the plugin upload to your first test booking: property, rooms, rates, Stripe in test mode and the booking form on your page, with a screenshot of each step.

By Pandao · Updated · 7 min read

This tutorial takes you from an empty WordPress site to your first test booking with Pandao Booking, our free hotel booking plugin. You'll install the plugin, describe your property, add a room type with its units, set your nightly rates, connect Stripe in test mode, put the booking form on a page and book a stay as a guest would. Every screenshot comes from the plugin's live demo. Allow about an hour, less if you already have your rates to hand.

What you need

  • A WordPress site, version 6.5 or later, on PHP 7.4 or later, with HTTPS if you'll take card payments. A staging copy of your site is ideal for a first try.
  • The plugin zip: download Pandao Booking (it's under review for the WordPress.org plugin directory; once listed, you'll install it from Plugins › Add New Plugin like any other).
  • Your room types, their number of units and your nightly rates for the coming season.
  • Optional: a Stripe account for card payments. Its test keys let you try the whole flow without charging anyone.

1. Install the plugin

In your WordPress dashboard, go to Plugins › Add New Plugin › Upload Plugin, choose the zip you downloaded, click Install Now, then Activate.

The Add Plugins screen of WordPress, on its Upload Plugin tab, with the file chooser and the Install Now button
Plugins › Add New Plugin › Upload Plugin: choose the zip, install, activate.

On activation, the plugin adds a Booking menu to your dashboard and creates three pages: Accommodation (the list and search), Book now (the booking form) and My booking (the page each guest gets after booking). Leave them in place: the plugin links to them at every step.

2. Describe your property

Open Booking › Settings. The Property tab asks for your property's name, the email address that receives booking notifications, a phone number, the postal address, the official star rating if you have one, and your check-in and check-out times. Guests see these details on the booking pages and in their emails.

The Property tab of the plugin settings: name, email, phone, address, star rating and check-in time
Booking › Settings › Property: the details shown to guests and used in emails.

The same tab ends with Booking confirmation: instant, or on request until you accept each booking. Start with instant: it's what most guests expect, and you can switch later. Then open the Booking tab and set your currency: every rate you enter next is in it.

3. Add your rooms

Go to Booking › Accommodation types › Add New. An accommodation type is a room type (Double room, Family suite, Garden cottage…), written with the WordPress editor: a title, a description, a featured image and a photo gallery. Tick the facilities it offers in the sidebar.

An accommodation type open in the WordPress editor, with its description, excerpt, featured image, facilities and photo gallery panels
An accommodation type is a normal WordPress edit screen, with the plugin's Details, Guests, Units and Photo gallery panels added.

Below the editor, the plugin adds its own panels. Guests sets how many adults and children, and how many guests in all, the room sleeps; the search uses it to show guests only what fits their party. Units lists the physical rooms of this type, with the names you use at the front desk ("101", "102", "Garden cottage"). A unit is never sold twice for the same night, and the booking calendar shows each one on its own line. Publish, then repeat for each room type.

4. Set your rates

Open Booking › Rates. The calendar shows, for each accommodation type, the nightly rate and the units still open on every day. Click New period to create a season: its dates, the price per night for the guests included in the rate, and optionally different prices by day of the week and a minimum stay. Select days across the calendar to change prices or close units in one go.

The rate calendar in the WordPress dashboard: nightly prices and open units for each accommodation type, day by day
Booking › Rates: one row per accommodation type, with the nightly rate and the units open each day.

Two more screens matter before you open bookings. The Extra guests & children tab says how many guests the rate includes and what an extra adult or a child pays. Booking › Rate plans adds offers beside the standard rate: non-refundable, breakfast included, early booking, last minute, or free cancellation up to a number of days before arrival. You can skip rate plans for your first test; the standard rate is enough to take a booking.

5. Choose how guests pay

In Booking › Settings › Payment, tick the payment methods you accept: at the property, bank transfer, cheque, card through Stripe, PayPal. Then decide what's due at booking: the whole stay, a percentage, the first night or a fixed amount. With payment at the property, nothing is charged online and the booking is simply confirmed.

The Payment tab of the plugin settings: payment methods, the amount due at booking and the time units are held during an online payment
Booking › Settings › Payment: methods, deposit and how long units are held while a guest pays.

To take card payments, tick Card, online (Stripe) and paste your Stripe keys in the fields below: start with the test keys (pk_test_… and sk_test_…) from Stripe's Developers › API keys page. Guests pay on Stripe's own checkout page, so no card number ever reaches your site, and Apple Pay and Google Pay come with it. When you're ready to go live, replace the test keys with the live ones.

6. Put the booking form on your site

Add the Accommodation page to your menu (Appearance › Menus, or the Navigation block in a block theme): that's where guests search and compare your rooms. Then put a search box on your home page. In the block editor, open the inserter and type Booking: the plugin's blocks appear, starting with Booking search. Insert it where you want the dates and guests fields to appear.

The block inserter of the WordPress editor, searching "Booking": the blocks of the plugin, starting with Booking search
Type "Booking" in the block inserter to find the plugin's blocks.

Every part of the booking flow exists as a block and as a shortcode, so it works with any theme: [pandao_booking_search] for the search box, [pandao_booking_accommodations] for the list, [pandao_booking_accommodation] for one room type with its calendar and rates. The booking pages created at step 1 already contain theirs.

7. Take a test booking

Open your site as a guest. Enter dates and the number of guests in the search box: the results list every accommodation type available for those nights, with the total for the stay, taxes included, and the rate plans you offer.

The search results on the site: a double room available for three nights, with its rate plans and the total for the stay
The results of a search: each room type with its rates for the nights chosen.

Choose a rate and click Book now. The booking form asks for the guest's details, offers your extras and a promo code field, and lists the payment methods you ticked. Pick the card payment: Stripe's checkout opens, where the test card 4242 4242 4242 4242, any future expiry date and any CVC complete the payment without charging anything.

The guest's booking page after the booking: a thank-you message, the booking reference, the stay, the extras and the total
Back on your site, the guest sees their booking page; a confirmation email is on its way.

Then look at the other side. Booking › Dashboard lists the booking under Latest bookings, with today's arrivals and departures above it; Booking › Bookings opens its details, where you can record a payment, confirm or cancel; and Booking › Booking calendar shows the stay on the line of the unit it took.

The plugin dashboard in WordPress: requests waiting for confirmation, arrivals and departures of the day, the next seven days and the latest bookings
Booking › Dashboard: what needs your attention today, and the latest bookings.

Two emails went out: the confirmation to the guest, with a link to their booking page, and the notification to the address of your property. If none arrived, check your site's email delivery first (a plugin such as WP Mail SMTP solves most cases); the plugin only hands its emails to WordPress.

What to set up next

  • Calendar sync. If your rooms are also on Airbnb, Booking.com or Vrbo, turn on the Calendar sync module and follow our guide on syncing Airbnb and Booking.com calendars with WordPress to avoid double bookings.
  • Extras, taxes and promo codes. Each has its module in Booking › Settings › Modules: breakfast and parking as extras, VAT and the tourist tax, a welcome discount code.
  • Scheduled tasks. Unpaid bookings are released and platform calendars are read by WordPress's scheduled tasks, which run when someone visits your site. On a quiet site, ask your host to call wp-cron.php every five minutes with a real cron job.
  • Invoices, reviews and reports. When you need numbered PDF invoices, verified guest reviews on your site or your occupancy and revenue figures, Pandao Booking Pro adds them as modules to the same plugin, from $99 a year.

See the whole flow on the live demo

Everything above is set up on the demo, Pro modules included: search, book and pay with the test card as a guest, then open the dashboard to see the booking arrive.

Get Pro from $99/year Start free Try the live demo

Pro comes with a 30-day money-back guarantee and keeps working if you don't renew. The free plugin takes bookings on its own, with no time limit.

Demo dashboard: booking.pandao.eu/wp-admin/, username admin, password admin123. Payments on the demo are in test mode.

Products in this guide

More guides