The booking widget (on your own website)

Updated on 2026-07-01

BedFlow includes a standalone booking widget (public/booking-widget.html) that you can embed on your own website — no iframe needed, pure HTML/CSS/JS.

Where do you find it?

The widget lives on your BedFlow server: https://bedflow.eu/booking-widget.html.

Embed it in your WordPress / Statamic / own site via a link or iframe:

<a href="https://bedflow.eu/booking-widget.html" class="book-button">Book directly</a>

Features

  • 6-step flow: dates → rooms → extras → guest details → overview → confirmation
  • Multilingual (NL / EN / FR / DE) with automatic language detection + runtime switching
  • Responsive (mobile, tablet, desktop)
  • Multi-room: guest can book several rooms in one session
  • Extras: wellness, breakfast, surcharges, honesty bar items
  • Mandatory costs: automatically included in the price (see below)
  • Wellness slot picker: integrated with WellnessBookingService
  • Live availability: via /api/booking/availability and /api/booking/calendar
  • Proforma + Stripe: after submitting, the guest receives an email with a payment link
  • Customisable colours: the widget reads colours + logo per property from the Branding tab

Price breakdown in the overview

In the reservation summary the guest sees how each extra's price is built up: unit price × quantity × persons × nights. A cheese board for 4 people shows as Cheese board (€18.00 × 4 pers) — the same breakdown as the tourist tax. That way a per-person or per-night extra is never a surprise at checkout.

Mandatory costs (e.g. final cleaning or linen at a vacation home) are automatically ticked in the extras step with a Required label. The guest cannot untick them and they immediately count towards the total. Read more: Mandatory costs.

Country list in the guest's language

The guest form contains the full country list (all 249 ISO countries). The country names appear in the language of the widget — a French guest sees Belgique / Pays-Bas / Allemagne, not an English list — and are sorted alphabetically per language. At the top sits a quick-pick group with popular countries (Belgium, Netherlands, Germany, France, United Kingdom, Luxembourg, United States), followed by the rest.

Channel in the DB

Widget bookings get source = 'direct' and channel = 'website'. That way you can filter them in your Email Automations (e.g. a different email for website guests vs OTA guests).

Enable/disable

Settings → Integrations → Booking Widget — toggle on/off. Disabled = the widget shows "Bookings currently unavailable".

Settings that determine widget behaviour

In Settings → Settings → Booking Widget tab:

  • Check-in / check-out hours
  • Minimum / maximum nights
  • Free cancellation up to X days — the info text the guest sees in the widget
  • Deposit percentage (or fixed amount)
  • Multi-night discount
  • Tourist tax per adult per night
  • Ask date of birth toggle (default off)
  • Per-language texts per step: you can override the main title of each step

Per property, under Settings → My property:

  • Cancellation policy (section Cancellation): choose the policy (Flexible / Late-cancel / Non-refundable) that Booking.com and your own widget show, and set the free-cancellation window in hours — up to 4320 hours (180 days). That also allows a long cancellation window, normal for vacation rentals: 48 = 2 days, 168 = 1 week, 1008 = 6 weeks.
  • Terms links (section Booking widget behaviour): the URLs of your terms and conditions and your cancellation policy. Filled in → the guest sees clickable links next to the consent checkbox. Left empty → the widget shows the same text without a link, so the guest never clicks a broken (404) link.
  • Colours + logo via the Branding tab.

FAQ

Can I set a cancellation window of 6 weeks? Yes. You set the window in hours: 1008 hours = 6 weeks. The maximum is 4320 hours (180 days).

My guest complained the country list was in English — is that fixed? Yes. The country list now follows the language of the widget and is correctly sorted per language.

The terms link in the widget gave a 404. What now? Fill in the URLs of your own terms pages under Booking widget behaviour on your property. As long as they are empty, the widget deliberately shows no link.