From counting leads to bidding on what they're worth
How a multi-million-euro B2B merchandise brand fixed the data its ad platforms were learning from, then taught Google, Meta and Microsoft the difference between a cheap lead and a valuable one.
Monday Merch · Corporate merchandise · Europe · mondaymerch.com
- 50% → 13%
- Website traffic with no identifiable source, before and after
- >3×
- New-customer opportunities in July and August versus the same weeks the previous year
- 9 vs 2
- Won deals, value-bidding tests versus control, at roughly 75% lower spend per win
- Industry
- Corporate merchandise & branded swag
- Model
- B2B ecommerce + quote-led sales
- Region
- Europe
- Scale
- Multi-million-euro revenue, two-domain estate (marketing site plus products storefront), sales team working deals in a CRM
- Stack
- GTM web + server · GA4 · Odoo CRM · Google, Meta, Microsoft & OpenAI Ads · CookieFirst
- Engagement
- Audit, remediation, CRM-to-platform value pipeline
- Period
- June to August 2026
01 · The problem
The account looked healthy. The business couldn't tell if that was true.
Monday Merch sells branded merchandise to companies across Europe. Prospects research on the marketing site, move to a separate products storefront to build a quote, and the deal is then worked by a sales team in Odoo. Paid media on four platforms feeds the top of that funnel, and every platform was optimising toward whatever the tracking told it.
2Half the journey was invisible
3Every lead counted the same
July
Phase 1 · Fix the foundation
Audit the full tag estate, remove the defects producing false data, standardise the event model, and give Google Ads a real funnel to optimise toward instead of a single count.
August
Phase 2 · Teach the platforms what an opportunity is worth
Connect the CRM to every ad platform through a first-party server, so each opportunity is reported with its expected value and updated as the deal moves.
02 · Phase 1, fix the foundation
Four defects, and the worst of them were producing confident, wrong numbers
The container had accumulated years of tags across platform migrations, with a server-side layer added later. Nothing was obviously broken. The problems only show up when you compare what the tags send against what the business actually did.
Critical
Every event counted twice, and one duplication path was invisible to GTM
Found. Two parallel tag sets per event, some of them double-triggered. Two competing GA4 configurations. And, entirely outside the container, the Odoo CRM was pushing its own lead events straight to GA4, a second pathway that no amount of container auditing would have surfaced.
Why it mattered. Every efficiency metric the business used was calculated on an inflated base. 22 duplicate and legacy tags became 13 single-purpose ones, and the CRM-side duplication was closed separately.
High
The storefront was missing from the cross-domain configuration
Found. The Conversion Linker listed only the marketing domain. The products storefront, where quotes actually happen, was not in the linked-domains list.
Why it mattered. This was the single largest driver of the 50% unattributed traffic. One configuration field, verified by a live click-through test, and the buyer's journey became one session again.
High
Lead events arrived under four different names, so none of them counted
Found. Quote requests, contact forms and calendar bookings each sent a differently-named lead event. None matched GA4's standard, so a lead-led business showed zero leads in the report built for exactly that purpose.
Why it mattered. Standardised to one event fired from three sources. The downstream growth report, which had been counting the old names, was corrected in the same pass.
Medium
Google Ads could see one conversion, not a funnel
Found. A single generic quote action. No add-to-cart, checkout, booking or lead-form conversions, and no value attached to any of them.
Why it mattered. We built five dedicated conversion actions, each with its own trigger and label, and attached an estimated euro value to lead submissions derived from the budget range the prospect selects. The first step from counting to valuing.
| Phase 1 outcome | Before | After |
|---|---|---|
| Sessions with no identifiable source | Roughly 50% | 13% |
| GA4 tags in container | 22 duplicate and legacy | 13 single-purpose |
| Lead duplication pathways | 2, running independently | 0 |
| Google Ads conversion actions | 1 generic | 5, per funnel stage, value-bearing |
| Event naming | Non-standard and inconsistent | GA4 standard taxonomy across the container |
| Conversion delivery | Browser tags, per platform | One server-side stream, routed to every platform |
03 · Phase 2, teach the platforms what an opportunity is worth
The CRM knows which deals are valuable. The ad platforms didn't.
Clean website data solves half the problem. The other half is that the most important events in a B2B funnel, an opportunity being qualified, moving stage, or being won, happen inside the CRM, days or weeks after the click, where no pixel can see them. Phase 2 built the pipeline that carries those moments back to every ad platform with a value attached.
One conversion that evolves, not five that disagree
Meta, Microsoft and OpenAI see the same truth
How the offline conversion pipeline works
- The CRM owns the lifecycle. Odoo emits an event whenever an opportunity is created, changes stage, changes value, is won, is lost, or is removed. Each carries a stable identifier for that opportunity, the current stage, the customer type, the market, and the matching details the platforms need.
- The server decides what it is worth. A lookup returns the probability that an opportunity at that stage, for that customer type, in that country will close. Multiplied by the opportunity value, that becomes the expected value sent to Google Ads.
- Three operations, not one. The first eligible event creates the conversion. Later stage or value changes restate it against the same identifier. Removal retracts it. Google Ads therefore holds one evolving conversion per opportunity rather than a pile of snapshots that disagree.
- Every platform gets the version it can use. Meta and Microsoft receive qualified and won as separate server events with full customer matching. Google receives the single evolving conversion. All of them are built from the same payload, so the platforms are working from one source rather than four.
- Identity resolved once, on the server. Email, phone, user ID and the click identifiers are read from the event, then from the server cookie if the event does not carry them, then hashed before they leave. Doing it in one place is what stops six tags each solving it slightly differently.
- Delivery is verified at the API, not the tag. Every platform's outbound request body and its response are inspected before the tag is trusted. A green tick in the tag manager only means the request was sent.
One place where the rules live
Owned, not rented
04 · What happened next
Better signals, and the first evidence that they work
Two months on, the tracking foundation is clean and the platforms are being fed opportunity value instead of raw lead counts. The early read comes from two places: a year-on-year comparison, and a set of controlled bidding experiments run inside Google Ads.
>3×
New-customer opportunities in July and August versus the same weeks the previous year
Client CRM reporting. Year on year, not attributed to any single cause.
9 vs 2
Won deals across five value-based bidding experiments, treatment versus control
Early results, with one market driving most of the lift. Directional, not conclusive.
~3×
Won value from the value-bidding treatment versus control, at roughly 75% lower spend per win
Same experiment set, as measured by Google Ads experiments.
05 · What's next
Clean data is the start, not the finish
Retire the legacy integrations
Older direct CRM-to-platform connections still run alongside the new pipeline. A deliberate cutover once the new signals are proven, so nothing gets counted twice again.
Scale the value-bidding tests
The early experiments are encouraging but concentrated in one market. Next is expanding across countries and campaign types, and moving the Meta and Microsoft budgets onto the new CRM signals.
Marketing Mix Model
At this level of spend, platform attribution is no longer enough. A Bayesian MMM will show which channels drive incremental revenue, and put a number on what the tracking work itself was worth.
How this was verified. Container version history across six releases; live Tag Assistant sessions under both granted and denied consent; GTM Preview with one qualifying and one non-qualifying event before every publish; a live cross-domain click-through test; inspection of outbound API request and response bodies for every platform, not just tag status; and reconciliation of the downstream growth report against the corrected event names. Results reported from the client's own CRM reporting and Google Ads experiments.
Are your ad platforms learning from the truth?
Most accounts we audit have at least one of the six defects in this study. Start with what people actually searched before they clicked. The free audit connects to your Google Ads account and shows you in minutes.
Run a free Google Ads audit