The booking widget (on your own website)

Updated on 2026-09-12

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
  • Meal plan and cancellation policy: the room card shows "Breakfast included" (or half board …) as set on the room or property, and the practical info shows the real cancellation policy — including the late-cancellation charge or "non-refundable"
  • Mandatory costs: automatically included in the price (see below)
  • Wellness slot picker: guests reserve their wellness moment right away while booking
  • Live availability: the calendar always shows up-to-date availability
  • 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

Rate options: several rates per room type

Want to let the guest choose between, say, Standard with breakfast and Hot deal — no breakfast, non-refundable? Set that up per room type under Room types → Services & policy → Rate options on your own booking site.

  • The room price is always the first option ("Standard"), with the room's meal plan and cancellation policy. You only add the variants.
  • Per option you pick a name, a price difference (percentage of the room price, or a fixed amount per night — negative is a discount, positive a surcharge), the meals (or "as the room") and the cancellation (or "as the room").
  • The widget shows the options in the room card, priced for the chosen number of guests. The guest picks one; the choice appears in the overview, on the proforma and in the confirmation email.
  • Largest discount wins. If an option carries a discount and a length-of-stay discount applies too, BedFlow applies only the larger one — never both. A surcharge always comes on top of the room price.
  • Non-refundable = full payment upfront. Choose non-refundable for an option and the guest pays the full amount at booking, regardless of your deposit setting. It says so next to the option in the widget, in the overview, on the proforma and in the emails.
  • Without options nothing changes: the widget shows one price as always. Channels via Channex (Booking.com, Expedia, …) are not affected.

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.

How do you recognise widget bookings?

Widget bookings come in as direct bookings with 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
  • 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

The deposit (percentage, fixed amount or first night, plus the payment term) you set yourself under Settings → Deposit — that setting drives the widget, the payment page and the confirmation email. See Deposit.

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 Legal links): 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. Always fill in these two URLs before going live: without a link to the text the guest agrees to, the checkbox "I agree to the terms and conditions and the cancellation policy" is legally worthless. You fill them in once: the same two links appear in the widget, on your quotes and in the guest page footer. Is your website the BedFlow mini-site itself? Then fill in the cancellation policy as a legal page under My website — once your domain is live, that page is automatically used as the link as long as you leave this URL empty.
  • 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.

On the booking channels too — for a long time the closing time only applied on your own site: Booking.com, Airbnb or Google knew nothing about it and kept taking bookings for that same night. Tick Also close today on the booking channels. BedFlow then closes today for arrivals on every connected channel as soon as that hour has passed, within the quarter hour. If someone does call afterwards, reopen the day in the restrictions calendar — it then stays open until tomorrow. The switch is off by default and only works with a closing time filled in.

All of this applies online. 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 Legal links 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.