Conversion tracking — measure what your ads return
Updated on 2026-10-01
Settings → Integrations → Guest experience → Google Analytics (measurement)
If you advertise on Google or Facebook, you want to know one thing: which euro of ad budget produced a booking. Without that measurement you only see clicks, and you cannot switch off what does not work.
BedFlow reports your paid bookings to your own Google Analytics 4. Not from the guest's browser, but from our server — and that makes all the difference.
Why from the server
The classic approach is a snippet of code on your website that fires as soon as a booking is complete. That fails in two situations that are very common in accommodation:
- The guest leaves your site to pay. With a standalone wellness booking, they go to the payment page and do not come back. So there is no longer a page on which that code can fire.
- The guest only pays later. Someone who clicks the payment link in their email the next day closed your website long ago.
On top of that, a growing share of your visitors use an ad blocker. It blocks tracking scripts in the browser, but has no hold over what our server does.
Measuring from the server solves this: we see the payment come in, so we report it.
What you need
Two values from your own Google Analytics 4. You will find both in the same place: Admin → Data streams → your website.
- Measurement ID — at the top right of the stream details, in the form
G-XXXXXXXXXX. - API secret — in that same screen, click Measurement Protocol API secrets → Create. The first time, you need to accept Google's terms once.
Setting it up in BedFlow
- Go to Settings → Integrations, category Guest experience, and click Configure on Google Analytics (measurement).
- Fill in Measurement ID and API secret (Measurement Protocol).
- Click Save. The tile now shows Active.
The secret is a key that allows data to be written to your Analytics. BedFlow stores it encrypted and never shows it in an export or log file. Don't share it and don't include it in a screenshot.
What is measured
Every reported booking arrives as a purchase with its real value, the booking number as the transaction ID, and two extra fields.
boekingstype (booking type) — what the guest came for:
| boekingstype | meaning |
|---|---|
verblijf |
an overnight stay |
wellness |
a standalone wellness booking, without an overnight stay |
kanaal (channel) — how the booking came in:
| kanaal | meaning |
|---|---|
website |
via your own booking module or website |
relaxy |
a wellness request via Relaxy — not a website conversion, so don't count it as revenue from your ads |
Register boekingstype and kanaal in Google Analytics as event-scoped custom dimensions, so you can filter on them in your reports.
In addition, the booking module sends the event bedflow_booking_completed to your own website in the browser, with verblijf_met_wellness as the booking type when wellness was booked together with the overnight stay. You only need this if your web designer triggers your own tracking on that event.
When is a booking reported?
| Type of booking | When | Condition |
|---|---|---|
| Overnight stay | On the first payment (deposit or full amount) | The booking came in via the booking module on your own website, the guest accepted cookies, and your website passes the visitor's Google identifier on to the booking module (see below). Bookings from Booking.com, Airbnb, by phone or at the front desk are never reported. |
| Standalone wellness | On payment | Always, even without cookie consent (see below). |
A booking is reported once; if the guest pays the balance later, there is no second report.
Overnight stays: your website must pass on the Google identifier. The booking module sits in a separate frame on your website and cannot read your website's Google cookies itself. Your website therefore has to pass the visitor's identifier along in the web address of the booking module (the parameters gcid and gsid). The standard embed code does not do this. If you also want to measure overnight stays, ask your web designer to add this, or email support@bedflow.eu.
Guest consent
The integration uses the identifier that the Google tag sets on your own website, and only when your visitor has accepted the cookie banner.
- Standalone wellness without consent: the revenue is still reported, but the source remains unknown — that booking cannot be attributed to an ad.
- Overnight stay without consent: it is not reported.
That is the correct outcome and not a fault. So expect Google to consistently show fewer conversions than you see in BedFlow. Your own figures in BedFlow are the complete ones.
What you do with it
As soon as conversions come in, you can switch in Google Ads from bidding on clicks to bidding on conversions or on value. Your ad budget then shifts automatically to the keywords that produce bookings rather than visitors.
Allow about a day before the first conversion becomes visible in Google Ads, and fifteen to thirty conversions before the bidding algorithm has enough to steer by.
Does this also work without my own website?
For standalone wellness bookings, yes: the measurement goes from our server to your Analytics, where your booking module also lives. For overnight stays, you need your own website with the Google tag that passes on the identifier (see above); without that identifier, BedFlow does not report an overnight stay.
Frequently asked questions
I don't see anything in Google Analytics. Check that both fields are filled in and that a booking has been paid via your website since then. The measurement is only sent on payment, not when the booking is created. Do you see wellness but no overnight stays? Then your website is not yet passing the Google identifier on to the booking module.
My figures in Analytics and in BedFlow differ. That is expected. BedFlow counts every booking, from every channel; Analytics only receives the website bookings that may be measured with consent, plus standalone wellness.
Can I also do this for Facebook or another platform? Today, BedFlow sends to Google Analytics 4. From there you can pass your conversions on to Google Ads via the standard link between the two.