TRACKING SETUP
If you open devtools on this page, this is what you'll find.
Our tracking setup is a sales asset, not a backroom detail. Here it is, in plain language.
The short answer
Six things: server-side GTM on its own subdomain, the Meta Conversions API deduplicated against the browser pixel, GA4 wired through sGTM with a deliberate event taxonomy, Google Enhanced Conversions on the booking action, a weekly offline conversion upload carrying deal stages back to both platforms, and region-scoped Consent Mode v2. It is the same stack we build for clients, and every claim on this page can be checked from your own browser.
Server-side GTM
Runs on its own subdomain with a proper cookie lifespan, ahead of the browser container.
Safari deletes cookies set by JavaScript after seven days without a visit, so a buyer who clicks an ad and returns a fortnight later arrives as a new person and the ad that found them gets no credit. Setting it server-side from your own subdomain is what makes the attribution window match the length of a real property decision rather than the length of a browser policy.
Meta Conversions API
Deduplicated against the browser pixel via a shared event_id, with fbclid captured and stored.
Without the shared event_id the same lead arrives twice and the account optimises against inflated conversion counts. Storing fbclid at the point of the click is what lets a booking reported three weeks later still be matched to the ad that produced it.
GA4
Wired through sGTM with a clean event taxonomy. Not 40 auto-events nobody reads.
Enhanced measurement will happily record every scroll and outbound click on the site. A report nobody opens is not measurement, and the noise makes the six events that matter harder to find.
Google Enhanced Conversions
Wired for the Book-a-call action.
It hands Google a hashed version of the details the visitor already typed into the form, so conversions that would otherwise go unattributed because of a blocked cookie still count.
Offline conversion upload
Deal stages pushed back to Meta and Google on a weekly cron: call_booked → call_held → proposal → won.
This is the station most accounts are missing and the one the whole loop turns on. Until closed-won data reaches the ad platform, the algorithm is optimising toward whoever fills in forms, because a form fill is the last thing it was told about. Feeding the outcome back is what moves an account from cheap leads to cheap bookings.
Consent Mode v2
Implemented properly, with a banner that isn't hostile about it.
Signals are region-scoped rather than denied globally: visitors in the EEA and UK get a banner and a genuine choice, everyone else is not asked for a consent their jurisdiction does not require. A blanket denied default is the common misconfiguration, and it silently throws away modelling for traffic that never needed a banner.
How to check any of this yourself
Everything above is a claim about software that is running while you read this, so none of it needs to be taken on trust.
- Open devtools, Network, and filter on the sGTM subdomain. The requests are there or they are not.
- View source and search for gtag('consent'. The default call and the region list are both in the page.
- Run our tracking health check against your own domain and compare what it finds to this list.
- Ask us to screen-share the offline upload job on a call. It is a cron, and it either has a run history or it does not.
Why this stack is built this way
- Why are my Facebook and Instagram leads such poor quality?Because the platform is optimising for exactly what you asked it for, and you almost certainly asked for form fills. Here is what it can and cannot see, and the three levels of telling it the truth.
- What is a good cost per lead for a real estate project?There is no such number in isolation. Here is the one that replaces it, the five rates it depends on, and how to work out yours in about five minutes.
- How do you get your company cited by AI assistants?There is no ranking factor to game and no submission form. Three things decide it: whether a crawler can read you without JavaScript, whether your company resolves to one entity, and whether you have published anything specific enough to quote.
Sources
- Tracking Prevention in WebKit (Safari) — WebKit
- Conversions API documentation — Meta for Developers
- About deduplication for Meta Pixel and Conversions API events — Meta Business Help Centre
- About enhanced conversions for leads — Google Ads Help
- About offline conversion imports — Google Ads Help
- Set up consent mode on websites — Google for Developers
Primary sources only: the statute, the regulator or the platform’s own documentation. Checked 2026-09-27.
Ready to see what a fixed loop would do to your cost per booking?
Book a 30-min call