marketingengineer.

↳ marketingengineer / teardown

Server-side tagging: wat écht werkte

We verplaatsten tracking van de browser naar een first-party servercontainer. Dit is de opzet, de cijfers voor en na, en de twee fouten die ons een week kostten.

Niet gemeten is niet gebeurd. Dat was de hele reden voor dit project: onze conversiedata lekte ergens tussen de browser en de advertentieplatformen, en elke optimalisatiebeslissing verderop was gebouwd op dat lek.

Dit is de teardown — de opzet waar we op uitkwamen, de cijfers voor en na, en de twee fouten die ons een week kostten.

Het probleem, gemeten

Voordat we iets aanraakten, hebben we het gat gemeten. Drie bronnen van waarheid, dertig dagen:

  • Backend-orders: 1.412
  • GA4-aankopen: 1.239 (−12,3%)
  • Google Ads-conversies: 1.184 (−16,1%)

Een zesde van onze conversies bereikte het biedalgoritme nooit. Smart Bidding optimaliseerde op een steekproef — en geen willekeurige: Safari- en Firefox-gebruikers, consent-weigeraars en trage verbindingen waren systematisch ondervertegenwoordigd.

De opzet

First-party servercontainer, een maand lang dubbel getagd tijdens de overgang:

  1. Taggingserver op een subdomein (data. in plaats van een CNAME naar een derde partij — houd de cookies first-party).
  2. GA4- en Ads-tags naar server-side. De browser vuurt één licht event naar ons endpoint; de server verdeelt het verder.
  3. Enhanced conversions gevoed vanuit de backend met gehashte e-mailadressen, niet uit de DOM geschraapt.
  4. Consentstatus doorgegeven, niet aangenomen. Geweigerd betekent geweigerd — gemodelleerde conversies mogen het gat vullen, verzonnen conversies niet.

De cijfers erna

Dezelfde drie bronnen, dertig dagen na de overstap:

  • Backend-orders: 1.389
  • GA4-aankopen: 1.331 (−4,2%)
  • Google Ads-conversies: 1.346 (−3,1%)

Het resterende gat bestaat vooral uit consent-weigeringen — het gat dat er hoort te zijn. De kosten per acquisitie daalden de zes weken erna met 9%, zonder andere wijzigingen. Smart Bidding kreeg simpelweg beter voer.

De twee fouten

Fout één: we vertrouwden de standaard event-mapping. De automatische GA4-naar-Ads-mapping van de servercontainer liet een week lang stilletjes onze custom value-parameter vallen. Vergelijk je platformcijfers dagelijks tijdens elke migratie — wij vingen het op omdat het dashboard een tegel had voor precies dat verschil.

Fout twee: we onderschatten de cold-start-latency. Het eerste verzoek na een stille periode duurde seconden — lang genoeg om gebruikers te laten wegklikken voordat het event vuurde. Een minimum aantal instances loste het op; de rekening steeg met minder dan één gemiste conversie per maand.

Steel dit

De checklistversie: meet eerst het gat, houd cookies first-party, voed enhanced conversions vanuit de backend, geef de echte consentstatus door, en vergelijk platformcijfers dagelijks met de backend tijdens de migratie.

Ship het, en vertel me wat er brak.