Cookiebanner, consent & adblockers
Meten wat je pixel niet meer ziet
Toestemming, adblockers en browserbeperkingen bepalen welke contactmomenten meetbaar zijn. Roots leest je bestaande cookiebanner uit, gebruikt waar toegestaan first-party meting en kan beschikbare conversies server-side ontdubbeld doorgeven. Niet gemeten gebeurtenissen worden niet alsnog zichtbaar.
Waar je meting vandaag lekt
Verschilt per site
Adblockers
Adblockers kunnen bekende meetscripts en verzoeken blokkeren. Roots rapporteert het waargenomen verlies op je eigen verkeer, zonder een algemeen percentage te beloven.
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.
Eigen consentkeuze
Geweigerde consent
Wie alleen noodzakelijke cookies kiest, beperkt welke gegevens meetbaar en deelbaar zijn. Gemodelleerde conversies zijn schattingen, geen direct waargenomen gebeurtenissen.
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
| Status | Meting in Roots | Doorgifte naar platforms |
|---|---|---|
Toestemming gegevengranted | Volledige 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 geweigerddenied | First-party meting in Roots: bezoek- en sessie-ID, URL, bron en click-ID's kunnen worden vastgelegd. | Geen doorgifte van identifiers naar advertentieplatforms. Alleen jouw eigen dashboard. |
Geen CMP gedetecteerdunknown | First-party meting in Roots loopt door zolang geen geldige keuze is ontvangen. | Wordt technisch niet als weigering behandeld. Activeer doorgifte pas met een correct gekoppelde cookiebanner. |
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 opslag geblokkeerd, dan kan een tijdelijke sessie-ID in het geheugen worden gebruikt. Herhaalbezoek en soms ook conversiekoppeling kunnen dan verloren gaan.
sendBeacon met fetch-fallback
Events vertrekken via navigator.sendBeacon, met keepalive fetch als terugval. Dit vergroot de kans dat een event bij een snelle exit of redirect nog wordt verzonden, zonder ontvangst te garanderen.
Meting van het verlies zelf
Een bait-element en netwerkprobe signaleren mogelijke blokkade. Browser- en API-signalen geven aanvullende context. Het dashboard toont waargenomen uitval, niet gebeurtenissen die nergens zijn vastgelegd.
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. Zet een CNAME van metrics.jouwdomein.nl naar Roots. Wij regelen het certificaat en verifiëren automatisch.
- 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.
7.3 kB gzip, asynchroon; 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
Biedalgoritmes gebruiken de signalen die zij ontvangen. Aanvullende, toegestane conversiesignalen kunnen de invoer completer maken; het effect op CPA of campagneprestaties moet je daarna in een vaste evaluatieperiode toetsen.
Je verklaart waarom cijfers verschillen
Zet één onafhankelijke meting naast GA4, Ads en Meta. Verschillen worden bespreekbaar vanuit meetmethode, attributiemodel, meetvenster en waargenomen overlap.
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.
Veelgestelde vragen
- 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?
- Het huidige meetscript kan ook zonder marketingtoestemming first-party bezoek- en sessiegegevens vastleggen. Bij een expliciete weigering vindt geen platformdoorgifte plaats. De juridische grondslag en inrichting blijven de verantwoordelijkheid van jou als verwerkingsverantwoordelijke.
- Omzeilen jullie adblockers?
- Nee. Bij expliciete weigering sturen we niets naar advertentieplatforms. Een onbekende status geldt technisch niet als weigering; koppel daarom een ondersteunde cookiebanner voordat je doorgifte activeert. Adblockers en browserbeperkingen kunnen meting blijven blokkeren.
- 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.