Cookiebanner, consent & adblockers

Meten wat je pixel niet meer ziet

Toestemming, adblockers en browserbeperkingen halen bij veel sites tientallen procenten uit je meting. Roots leest je bestaande cookiebanner uit, meet cookieloos wanneer dat moet, draait first-party op je eigen domein en herstelt de rest server-side - ontdubbeld.

Waar je meting vandaag lekt

20-40%

Adblockers

Op B2B- en tech-doelgroepen blokkeert een fors deel van je bezoek gtag.js en fbevents.js. Die sessies bestaan simpelweg niet in je platformrapportage.

Safari + Firefox

ITP en ETP

Safari kapt client-side gezette first-party cookies af op 7 dagen (of 24 uur bij een link met click-ID). Je view-through en je langere funnel verdampen.

30-60%

Geweigerde consent

Sinds CMP's verplicht een weigerknop tonen, kiest een groot deel 'alleen noodzakelijk'. Consent Mode v2 modelleert dat gat, maar modelleren is geen meten.

0 klikken

Offline conversies

Telefoontjes, showroombezoek en deals die weken later in het CRM landen, komen zonder terugkoppeling nooit in de biedalgoritmes terecht.

Percentages verschillen sterk per branche en doelgroep. Daarom rapporteert Roots het verlies gemeten op jouw eigen verkeer, in plaats van een branchegemiddelde.

Consent

Wat we per toestemmingsstatus wel en niet doen

StatusMeting in RootsDoorgifte naar platforms
Toestemming gegevengrantedVolledige meting: visitor-ID in first-party localStorage, click-ID's, touchpoint-historie.Server-side CAPI inclusief gehashte e-mail/telefoon (SHA-256) voor betere match rates.
Marketing geweigerddeniedCookieloze meting: geen persistente identifier, sessie in geheugen, geaggregeerde bronrapportage.Geen doorgifte van identifiers naar advertentieplatforms. Alleen jouw eigen dashboard.
Geen CMP gedetecteerdunknownBehandeld als 'nog niet gegeven': cookieloos tot de banner een keuze doorgeeft.Doorgifte staat uit tot de status granted wordt.

Banners die we automatisch herkennen

  • · Google Consent Mode v2 (dataLayer, ad_storage / ad_user_data)
  • · Cookiebot (Cookiebot.consent.marketing)
  • · CookieYes (getCkyConsent categories.advertisement)
  • · IAB TCF v2 (__tcfapi, purpose 7 - meten van advertentieprestaties)
  • · Eigen banner via window.SR_CONSENT = 'granted' | 'denied'

Gebruik je iets anders? Eén regel volstaat om de status door te geven aan de pixel.

<!-- eigen banner koppelen -->
<script>
  // bij accepteren van marketing
  window.srAttribution.consent('granted');

  // bij weigeren
  window.srAttribution.consent('denied');
</script>

Techniek

Waarom onze meting overeind blijft waar platformpixels sneuvelen

First-party script en endpoint

Je zet een CNAME (bijv. metrics.jouwdomein.nl) naar Roots. Script én collect-endpoint draaien dan op je eigen origin. Filterlijsten richten zich op bekende third-party hosts; die matchen hier niet.

Neutrale naamgeving

Geen /collect?pixel=fb of /gtag/js in het pad. Geen bekende tracker-URL's, geen herkenbare querystrings die EasyPrivacy afvangt.

Geen third-party cookies

De visitor-ID staat in first-party localStorage. Wordt storage geblokkeerd, dan valt de pixel terug op een sessie-ID in geheugen - dan verlies je herhaalbezoek, niet de conversie zelf.

sendBeacon met fetch-fallback

Events vertrekken via navigator.sendBeacon, met keepalive fetch als terugval. Ook bij een snelle exit of een redirect naar de bedankpagina komt het event binnen.

Meting van het verlies zelf

Een bait-element plus een netwerkprobe detecteren adblockers; UA- en API-signalen detecteren ITP, ETP, Edge-preventie en de Chrome Privacy Sandbox. Je ziet dus per browser hoeveel je mist.

Server-side herstel met ontdubbeling

Elke conversie krijgt een dedup-ID. Dat ID gaat mee naar Meta CAPI, Google Enhanced Conversions, LinkedIn CAPI en TikTok Events API, zodat browser- en serverevent als één conversie tellen.

De hele installatie, in twee stappen

  1. 1. Zet een CNAME van metrics.jouwdomein.nl naar Roots. Wij regelen het certificaat en verifiëren automatisch.
  2. 2. Plak het script in je head. Formulieren, tel:- en mailto:-kliks worden meteen als conversie herkend; eigen events voeg je toe met één data-attribuut.

Minder dan 6 kB, asynchroon, geen invloed op je Core Web Vitals - en geen server-container die je zelf moet beheren.

<script async
  src="https://metrics.jouwdomein.nl/sr.js"
  data-key="sr_live_xxx"></script>

<!-- eigen conversie -->
<button data-sr-event="offerte_aanvraag"
        data-sr-value="450"
        data-sr-currency="EUR">
  Offerte aanvragen
</button>

Wat het je oplevert

Van 'ons rapport klopt niet' naar 'wij sturen op bewijs'

Je biedalgoritmes worden weer gevoed

Smart Bidding en Advantage+ optimaliseren op wat ze binnenkrijgen. Herstel je 25% van de ontbrekende conversiesignalen, dan verandert niet alleen je rapport - je CPA verandert mee, omdat het algoritme op een completer signaal traint.

Je stopt met discussies over 'welk cijfer klopt'

Eén onafhankelijke bron van waarheid naast GA4, Ads en Meta. Je ziet direct welk platform zichzelf rijk rekent en hoeveel overlap er zit tussen de claims.

Compliance is een verkoopargument, geen rem

Verwerkersovereenkomst, EU-hosting, instelbare bewaartermijn, verwijderverzoeken en een auditlog. Je legal- of privacy officer krijgt antwoord in plaats van een discussie.

Implementatie in een middag, niet in een kwartaal

Eén scriptregel, één CNAME. Geen GTM server-container die je zelf moet hosten en onderhouden, geen Cloud Run-rekening die met je verkeer meegroeit.

Häufig gestellte Fragen

Moeten we onze cookiebanner aanpassen?
Nee. Roots leest de bestaande banner uit. Wil je expliciet zijn richting bezoekers, dan noem je Roots in je cookieverklaring onder statistieken/marketing - dat is netjes en meestal voldoende.
Is meten zonder toestemming toegestaan?
Wij meten zonder toestemming cookieloos en geaggregeerd, zonder persistente identifier en zonder doorgifte naar advertentieplatforms. Dat is de modus die past bij 'alleen noodzakelijk'. De juridische eindafweging blijft bij jou als verwerkingsverantwoordelijke; wij zijn verwerker en leveren de DPA.
Omzeilen jullie adblockers?
We verstoppen niets voor de gebruiker: we respecteren consent en we sturen zonder toestemming niets naar advertentieplatforms. Wat we wél doen is je eigen meting op je eigen domein zetten, zodat een generieke filterlijst niet bepaalt of jij je eigen websitestatistieken hebt.
Hoe voorkomen jullie dubbeltellingen bij server-side events?
Elk event draagt een dedup-ID dat zowel de browser als de server meestuurt. Meta, TikTok en LinkedIn ontdubbelen daarop; bij Google gebruiken we conversie-ID's met dezelfde logica.
Wat als iemand JavaScript volledig uitzet?
Dan meet niemand iets, ook wij niet. Daarom bieden we daarnaast een server-side API en CRM-webhook, zodat conversies die in je backend ontstaan alsnog met de juiste bron binnenkomen.

Weet binnen een week hoeveel je mist

Zet de pixel op één site en bekijk na een paar dagen je eigen signaalverlies per browser, per consentstatus en per kanaal. Daarna zet je het server-side herstel aan.