How to set up direct booking on your website

All help ressources
>
How to set up direct booking on your website

Tired of paying 15–20% in commissions to Airbnb, Booking.com, and other OTAs on every reservation? With Nowistay’s Direct Booking feature, you can accept reservations directly on your own website — keeping full control of your business, your guest relationships, and your revenue.

This guide walks you through the complete setup: configuring your booking widget, setting up payments and taxes, embedding it on your website, and managing direct bookings.

Prerequisites

Before you can use Direct Booking, make sure you have:

  • At least one property connected with Nowistay PMS
  • An active AI Assistant subscription
  • A connected Stripe account for payment processing

You can verify and set up all of these from the Integrations page in your Nowistay dashboard.

Integrations page showing Direct Booking as Active

Step 1: Access the Direct Booking configuration

  1. Go to Integrations from the left-hand menu.
  2. Find "Direct Booking" in the list. It should appear as "Active" if you meet all prerequisites.
  3. Click "Configure" to open the Direct Booking panel.

The panel lets you select a property, choose a language, and copy the embed code for your website.

Direct Booking panel with property selector, language, and embed code

Step 2: Configure your widget settings

Click the settings icon (gear icon) at the top-right of the Direct Booking panel to customize your widget.

Payment mode

Choose how guests pay for their booking:

  • Full payment: The guest pays 100% of the total amount at the time of booking.
  • Split payment: The guest pays a percentage upfront (e.g., 30%), and the remaining balance is automatically charged to their card before arrival.

If you choose Split payment, you can configure:

  • First payment (%): The percentage charged at booking time (between 10% and 90%).
  • Days before arrival for second payment: How many days before check-in the remaining balance is charged automatically (1 to 60 days).
Widget settings with Full payment selected
Widget settings with Split payment selected

Appearance

  • Primary color: Choose a hex color that matches your brand. This will be used for buttons and highlights in the booking widget.
  • Font family: Pick from Roboto, Inter, Open Sans, Lato, Montserrat, or Poppins.

Terms & conditions

Add your Terms & conditions URL to display a mandatory checkbox in the booking form. Guests will need to accept your terms before completing their reservation.

Click "Save settings" when done.

Step 3: Set up taxes

You can configure taxes for each property individually. These taxes are automatically calculated and added to the booking total shown to your guests.

  1. In the Direct Booking panel, select the property you want to configure.
  2. Click the "Taxes" button.
  3. You'll see a list of existing taxes. Click "+ Add tax" to create a new one.
Taxes panel showing existing tax

For each tax, you need to configure:

  • Tax name: A descriptive name (e.g., "City Tax", "VAT", "Tourist Tax").
  • Type: Percentage (%) or Fixed amount in your currency.
  • Value: The tax rate (e.g., 5 for 5%) or fixed amount (e.g., 2.50).
  • Applied per:
    • Per stay: Applied once to the entire booking.
    • Per night: Multiplied by the number of nights.
    • Per guest per night: Multiplied by both the number of guests and the number of nights.
Add tax form

You can add as many taxes as needed. They will all appear in the price breakdown shown to your guests during the booking process.

Step 4: Copy the embed code and choose a language

Back in the main Direct Booking panel:

  1. Select your property from the dropdown.
  2. Choose the language for the booking widget. Supported languages: English, French, Spanish, German, Italian, Dutch, Portuguese, Russian, and Chinese.
  3. Click the "Copy" button next to the embed code.

The embed code looks like this:

<div id="nowistay-booking"></div>
<script src="https://traveler.nowistay.com/embed.js"
    data-token="YOUR_TOKEN"
    data-lang="en"></script>

To display the widget in a different language, simply change the Language dropdown — the embed code updates automatically with the correct data-lang value (e.g., "fr" for French, "es" for Spanish, "de" for German).

You can embed multiple widgets in different languages on separate pages of your website. For example, use an English widget on your English page and a French widget on your French page. Each uses the same property token, just with a different language code.

Step 5: Add the widget to your website

The embed code works on any website that supports custom HTML. Here's how to add it on the most popular website builders:

WordPress

  1. Edit the page where you want the booking widget to appear.
  2. Add a "Custom HTML" block (Gutenberg editor) or switch to the "Text" tab (Classic editor).
  3. Paste the embed code.
  4. Save or publish the page.

Webflow

  1. Open your page in the Webflow Designer.
  2. Add an "Embed" element (found under "Components" in the left panel).
  3. Paste the embed code into the code editor.
  4. Save and publish your site.

Wix

  1. Open your page in the Wix Editor.
  2. Click "Add Elements" then "Embed & Social" then "Custom embed" then "Embed a widget".
  3. Click "Enter code" and paste the embed code.
  4. Resize the element to fit your page layout.
  5. Publish your site.

Squarespace

  1. Edit your page and add a new "Code" block.
  2. Paste the embed code.
  3. Click "Apply" and save the page.

Any other website

If you have access to the HTML source of your website, simply paste the embed code wherever you want the booking widget to appear. The script will automatically create an iframe and load the booking form.

Here's an example of a property website with the Direct Booking widget embedded:

Example property website with embedded booking widget

How it works for your guests

Here's the step-by-step experience for a guest booking directly on your website:

1. Browse availability and select dates

The widget displays a calendar with available dates and nightly prices. Your guest selects their check-in and check-out dates. Unavailable dates are automatically grayed out, and minimum/maximum stay restrictions are enforced.

Calendar view showing available dates with prices
Dates selected with check-in and check-out displayed

2. Choose the number of guests

The guest selects how many people will be staying, up to the maximum capacity you've configured for the property.

Guest number selector

3. Review the price and enter personal information

The widget displays a detailed price breakdown: nightly rate for each night, cleaning fee, applicable taxes, and total amount. The guest then fills in their information: first name, last name, email, phone, and optionally their address.

A notice informs the guest that the dates are held for 30 minutes while they complete the booking.

If you configured a terms & conditions URL, the guest must check the acceptance box before proceeding.

Price breakdown and guest information form
Completed guest form with Book and Pay button

4. Complete the payment

After clicking "Book & Pay", the guest is redirected to a secure Stripe checkout page. They can pay with credit card, debit card, and any other payment methods you have enabled on your Stripe account (Klarna, Bancontact, iDEAL, etc.).

Stripe checkout page with payment methods

5. Booking confirmed

Once the payment is completed, everything happens automatically:

  • The booking is created in your Nowistay dashboard.
  • The dates are blocked across all connected channels (Airbnb, Booking.com, etc.) to prevent double bookings.
  • A cleaning task is generated automatically if you have cleaning automation enabled.
  • Both you and the guest receive a confirmation email with all the booking details.

Create a manual direct booking with payment request

Sometimes a guest contacts you directly — by phone, email, or social media — and wants to book. Instead of having them go through your website widget, you can create a manual booking and send them a payment request by email.

How it works

  1. Go to the Bookings section from the left-hand menu.
  2. Click "Create Booking".
  3. Select the property and fill in the dates, guest information (email is required), pricing details, and currency.
  4. Check the "Request payment from guest" option.
  5. Click "Create".
Manual booking form with payment request option

The payment flow

  • The guest receives an email with a secure payment link.
  • The booking appears with a pending payment status in your dashboard.
  • The payment link is valid for 35 minutes. The guest clicks it and pays on a secure Stripe checkout page.
  • Once paid, the booking is automatically confirmed: dates are blocked on all channels and cleaning tasks are created.

If the payment expires

If the guest doesn't complete the payment in time, the link expires. You can generate a new payment link from the booking details — the guest will receive a fresh email with an updated link. This can be done as many times as needed until the guest completes the payment.

Need help?

If you have any questions about setting up Direct Booking, feel free to contact us at hello@nowistay.com. We're happy to help!

Ready to Put Your Rental on Autopilot?

Join 300+ property managers who save hours every week with AI-powered guest communication.