Home Features How It Works Pricing Integrations FAQ Contact Français (FR)
← Back to Integrations Conversion tracking

Count only the bookings that actually got paid.

Google Ads, GA4 and Google Tag Manager, wired to a thank-you page on your own website — so every conversion is a real, paid booking attributed to the right ad.

// 01

The idea

  • →The customer books in the FareBookings form (an iframe on your site) and pays online.
  • →Once the payment is confirmed, FareBookings redirects the customer to a thank-you page on your own domain: https://www.yourdomain.com/thank-you/.
  • →That page loads your Google Tag Manager container, and a rule — "the URL contains /thank-you" — fires the Booking conversion in Google Ads and a booking_complete event in GA4.

Why on your domain, not on app.farebookings.com

The Google Ads cookie that stores the gclid — which ad the customer came from — lives on your domain. If the conversion fires on a different domain, Google Ads cannot attribute it to the ad.

Only paid bookings count

The thank-you page is only reached after the payment is confirmed. Getting as far as the payment step does not count.

Separately, the current FareBookings form also sends a purchase event to GA4 on its own. Use it as a cross-check — the Google Ads conversion itself comes from the thank-you page.

// 02

What you need

Google Tag Manager installed on every page of your website (on WordPress, for example with a header/footer code plugin: the <head> snippet plus the <noscript> right after <body>).
A GA4 property and its measurement ID (G-XXXXXXX).
Google Ads access. Standard access is enough to create conversions; linking GA4 requires Admin access.
The Success URL in FareBookings — admin panel → Company → Payment — pointing to https://www.yourdomain.com/thank-you/.
// 03

Step 1 — The thank-you page

  1. 01

    Create a page with the slug thank-you.

  2. 02

    On WordPress, use inline styles only (style="..."). WordPress strips <style> blocks and the CSS ends up printed as text on the page.

  3. 03

    Content: a "booking received" message, "check your email and spam folder", the driver details, flight tracking, a WhatsApp button (a normal wa.me link) and a button back to the home page.

  4. 04

    No tracking code on the page itself. Everything is fired by Tag Manager.

  5. 05

    Set it to noindex so it never shows up in search results:

WordPress (Yoast SEO): on the page, Yoast SEO box → Advanced → "Allow search engines to show this Page in search results?" → No.
PHP / HTML: <meta name="robots" content="noindex,nofollow">

A thank-you page left indexable can end up in Google — it has happened on a live client site, with impressions in Search Console, before noindex was added.

  1. 06

    If you use a caching plugin or delay JavaScript (for example WP Rocket's "Delay JavaScript execution"), check that Tag Manager still fires on /thank-you/. On the client site where this was built, nothing needed excluding — but always test.

// 04

Step 2 — Create the conversion in Google Ads

  1. 01

    Find your Ads tag ID (AW-…): Tools → Data manager → Google tag → Manage → copy the ID AW-XXXXXXXXXX.

  2. 02

    Goals → Conversions → + Create conversion action → Website → set it up manually:

NameBooking
CategoryPurchase
ValueA fixed value (your average fare), or "Don't use a value"
CountOne — if the customer reloads the thank-you page, it isn't counted twice.
Primary actionYes
  1. 03

    In the setup instructions choose "Use Google Tag Manager" and copy two values:

Conversion ID: the number of your AW ID (the digits after AW-).
Conversion label: the text after the slash in send_to (AW-123456789/AbCdEfGh…).

Don't mix them up

The Conversion ID is not the internal ID of each conversion action (the 10-digit numbers you see in the Ads interface). Those don't work in Tag Manager.

// 05

Step 3 — Google Tag Manager

Before creating the Ads tags, create and publish the Google tag for your AW ID. Without it, Google Ads keeps saying the tag "has not been installed yet".

The trigger

NamePage Path – thank-you
TypePage View → Some Page Views
ConditionPage Path contains /thank-you

The tags

Google Tag – GA4

Type: Google tag · ID G-XXXXXXX · Trigger: Initialization – All Pages

Google Tag – Ads

Type: Google tag · ID AW-XXXXXXXXXX · Trigger: Initialization – All Pages

Conversion Linker

Type: Conversion Linker (defaults) · Trigger: All Pages

Ads – Booking

Type: Google Ads Conversion Tracking · Conversion ID + Booking conversion label · Trigger: Page Path – thank-you

GA4 – Booking complete

Type: Google Analytics: GA4 Event · Measurement ID G-XXXXXXX · Event name booking_complete · Trigger: Page Path – thank-you

When you're done: Submit → Publish. Before publishing, check that "Ads – Booking" really appears in the tag list — a tag can fail to save the first time.

Bonus: phone and WhatsApp clicks (same container)

Just Links tel

Trigger type: Click – Just Links · Condition: Click URL starts with tel:

Just Links whatsapp

Trigger type: Click – Just Links · Condition: Click URL matches RegEx wa\.me|whatsapp\.com

Give each trigger one single condition: with two conditions both must be true at once and it never fires. These triggers feed two Ads tags (Phone click and WhatsApp click, category Contact) and two GA4 events (phone_click and whatsapp_click).

WhatsApp chat plugins (Social Chat and similar) don't create a click on a link, so Tag Manager can't see them. Use a floating button built with a plain <a href="https://wa.me/...">.

// 06

Step 4 — Mark the key events in GA4

Events only appear in GA4 after the first time they're received, and that can take up to 24 hours. Then: Admin → Data display → Events → switch on "Mark as key event" for booking_complete, phone_click, whatsapp_click and purchase.

// 07

Step 5 — Test it

  1. 01

    In Tag Manager click Preview and enter your website URL. If the connection with Preview is lost when you reach /thank-you/, open that page with ?gtm_debug=x added to the URL.

  2. 02

    Make a real booking with Stripe in test mode: card 4242 4242 4242 4242, any future date, any CVC.

  3. 03

    In Tag Assistant, when you land on /thank-you/, both Ads – Booking and GA4 – Booking complete must show as fired.

  4. 04

    In GA4: Reports → Realtime. You should see booking_complete (and purchase if the form sends it).

  5. 05

    In Google Ads the conversion may show "Misconfigured" or "No recent conversions" for days. That usually just means there haven't been real visits to /thank-you/ yet — it doesn't mean it's broken. Check it under Goals → Conversions → All conversions, filtering by date.

// 08

Which conversions should drive your bidding

Primary (what bidding optimises for): Booking (Purchase), Phone click and WhatsApp click (Contact), plus Calls from ads and Conversation started if you use them.
Secondary: Call clicks from ads, so the same call isn't counted twice.
Leave out of the account goals: automatic local actions (such as Menu views).
// 09

Limits, and what to improve next

Direct visits to /thank-you/

The trigger counts any visit to that URL. Noindex and the "One" count setting reduce the problem. The real fix: have the return URL carry ?booking=ID&value=AMOUNT&currency=GBP and pass those to the Ads tag as transaction ID and real value — Google Ads discards conversions that repeat a transaction ID.

Cash bookings and pay-the-driver

They don't go through the online payment, so they never reach /thank-you/ and don't count. Decide with each client whether those should be counted another way.

Enhanced conversions

Optional, and a good later step once the basics are counting correctly.

Want us to set this up on your website?

We wire the thank-you page, Tag Manager, Google Ads and GA4 for our clients, and test it with a real booking before handing it over.