The booking widget (on your own website)

Updated on 2026-08-07

BedFlow includes a booking widget that you embed on your own website: your guest sees your calendar, picks dates and rooms and books straight with you — without paying an OTA commission.

Where do you find it?

The widget runs on your BedFlow address: https://bedflow.eu/book/{your-property-slug}, for example https://bedflow.eu/book/burgemeestershof. If you have your own verified domain, it lives on that home page.

You don't have to write the embed code yourself. Go to Integrations → Booking Widget → Configure: a ready-made block is waiting there. Click it and it's copied; paste it on your own site where the calendar should appear.

<!-- BedFlow booking module -->
<iframe src="https://bedflow.eu/book/burgemeestershof" style="width:100%;min-height:760px;border:0" loading="lazy" title="Book online"></iframe>

Prefer a button over an embedded calendar? The same slide-over also shows the plain link, ready to sit behind a "Book now" button or in an email.

A separate widget per property unit

Renting out several holiday homes and want each page of your site to show only that one home's calendar? Under Configure, tick which rooms or homes the widget may show. The code below it adapts immediately:

<iframe src="https://bedflow.eu/book/your-property?rooms=12" style="width:100%;min-height:760px;border:0" loading="lazy" title="Book online"></iframe>

Repeat per home and you have as many widgets as you like, each with its own calendar and its own snippet. Tick nothing and the widget shows all your rooms.

Prices, discounts and restrictions stay exactly the same as in the full widget — only the list is filtered. And because the selection is checked against your own property, a copied snippet can never show someone else's rooms.

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

Integrations → Booking Widget — flip the switch on or off. Disabled = the widget shows "Bookings currently unavailable". Configure on that same tile holds the embed code, the room selection and the limits below.

Settings that determine widget behaviour

Per property under Integrations → Booking Widget → Configure: minimum and maximum nights, how far ahead, and the closing time. The rest sits on the global Booking Widget tab (super admin):

  • 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.

Until when can a guest book?

Two limits, both per property under Integrations → Booking Widget → Configure.

How far aheadHow far ahead may a guest book? (days), 365 by default. The calendar shows no further, and a direct link with a later date is refused. Renting out two seasons ahead? You can go up to 1095 days.

Until when on the day itself — two settings you can use together or separately:

  • Online booking for today closes at — a clock time, for example 18:00. After that, today disappears from the calendar. This stops the booking that arrives at 11pm for that very night.
  • Minimum notice (hours) — counted to the start of your check-in hours. With 4 hours and check-in from 15:00, today closes at 11:00.

Fill in both and whichever closes first applies. Leave them empty and nothing changes: today stays bookable all day. The closing time follows your property's time zone — 22:00 in Óbidos is an hour later than 22:00 in Wetteren.

This applies to the online widget only. If someone turns up at your door at 11pm, you simply add them in your own calendar.

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.

Can I put one calendar per holiday home on my site? Yes. Under Configure, tick that one home and copy the code that appears below it. Repeat per home.

Can I block last-minute bookings? Yes, with a closing time or a minimum notice period — see Until when can a guest book? above. Your own calendar is untouched, so adding a walk-in is always possible.