The Client
A moving company in Germany. Besides private and business moves, it takes on specialist transports and related services that need more planning than a standard move.
New customers arrive through the website in several ways: an online moving request, a phone call, or a WhatsApp message. The company advertises on Google Ads, so it needs to know which campaigns actually lead to those enquiries, and it serves customers in Germany, so the tracking has to respect German consent rules from the first page view.
The Problem
The site needed a complete measurement chain, from the visitor's consent to a conversion in Google Ads, built so each layer depends on the one before it:
- Consent first: visitors in Germany have to be asked before analytics or advertising tags may store anything, and that choice has to reach every tag, not just the banner.
- One place for the tags: analytics and advertising tags needed to run from a single Google Tag Manager container, so the setup stays clear and maintainable.
- Analytics the business can use: GA4 had to show how visitors find the site and which of them go on to make contact.
- Conversions Google Ads can bid on: enquiries had to arrive in Google Ads as conversions, so campaigns are measured and optimized on real leads instead of clicks.
- A fast, cached site: the WordPress site runs NitroPack, which caches pages and optimizes scripts, so the tracking had to load reliably alongside it.
What I Built
One chain in which every layer passes its data to the next, and nothing skips the consent step.
Borlabs Cookie sets every Google signal to denied ↓ Borlabs Cookie loads the Google Tag Manager container ↓ The visitor's choice updates Consent Mode V2 ↓ GA4 records the visit and the enquiry events ↓ Google Ads receives the enquiries as conversions
Borlabs Cookie as the gatekeeper
I set up Borlabs Cookie on the WordPress site as the consent layer and let it load the Google Tag Manager container itself. Because of that, GTM can never start before the consent defaults are in place, and there is no second copy of the container hidden in a theme or plugin.
Consent Mode V2, advanced
Before the visitor chooses, all four Google signals (ad_storage, analytics_storage, ad_user_data, ad_personalization) default to denied, Google waits up to 500 ms for a stored choice, and ad data redaction is on. Google tags send only cookieless pings until the visitor allows more, which keeps the company compliant while giving Google enough signal to model the conversions it cannot observe.
Google Tag Manager as the single source
GA4 and Google Ads both run from the one container, with their tags, triggers and variables side by side. Changes to tracking happen in GTM, not in the website's code.
GA4 for the enquiry journey
GA4 records visits and the actions that matter for a moving company, so the business can see which channels bring in people who actually ask for a move.
Google Ads conversion tracking
I set up the Google Ads conversion tracking and connected it to the enquiries, so campaign performance is judged on leads, and bidding can optimize for them.
The Stack
Everything runs on the company's existing WordPress site.
| Layer | Tool | Role |
|---|---|---|
| Website | WordPress, NitroPack | Company website, caching and script optimization |
| Consent | Borlabs Cookie, Google Consent Mode V2 (advanced) | Banner, consent storage, default and updated consent signals |
| Tag loading | Borlabs Cookie | Loads the GTM container after the consent defaults |
| Tag management | Google Tag Manager | All tags, triggers and variables |
| Analytics | Google Analytics 4 | Visits and enquiry events |
| Advertising | Google Ads | Conversion tracking for enquiries |
The Result
The whole chain works: consent is collected and respected, GA4 records the visits and enquiries, and Google Ads receives the conversions it optimizes on.
| Layer | Outcome |
|---|---|
| Consent | Every visitor is asked first; all Google signals start as denied |
| Tag loading | One GTM container, loaded only through the consent layer |
| Analytics | GA4 records the visits and enquiries |
| Advertising | Google Ads receives the enquiries as conversions |
- Consent to conversion, end to end: Borlabs Cookie, Consent Mode V2, GTM, GA4 and Google Ads connected and working together.
- Delivered in 2 days, from the first setup to a working tracking chain.
If you need tracking that works from the banner to the bid, get in touch.