Scripts en embeds blokkeren
Een banner betekent pas iets als trackers op het antwoord wachten. Op deze pagina lees je wat Cookiemark zelf tegenhoudt, hoe je de rest markeert en wat het niet kan tegenhouden.
Automatisch blokkeren
Cookiemark kent de scripts en embeds van veelgebruikte diensten. Verschijnt er een op je pagina, dan houdt het script hem tegen tot de bezoeker de categorie ervan toestaat. Je hoeft niets in te stellen. Het werkt zodra het script als eerste in je head staat.
Het script houdt de pagina op twee manieren in de gaten, omdat geen van beide in zijn eentje alles opvangt.
- Het onderschept scripts die door andere code worden aangemaakt. Krijgt zo'n script het adres van een bekende dienst, dan verandert Cookiemark het type voordat het script wordt toegevoegd. De browser voert het dan nooit uit.
- Het volgt alles wat de browser aan de pagina toevoegt terwijl die je HTML leest. Een bekend script krijgt een type dat de browser niet uitvoert, en een bekend frame raakt zijn adres kwijt tot de bezoeker toestemming geeft.
Staat de bezoeker de categorie toe, dan voert Cookiemark de tegengehouden scripts alsnog uit, in hun oorspronkelijke volgorde. Een extern script is klaar met laden voordat het volgende begint, dus code die ervan afhangt, blijft werken.
De diensten die Cookiemark herkent
| Dienst | Wacht op | Herkend aan |
|---|---|---|
| Google Tag Manager | Statistieken | googletagmanager.com/gtm.js, googletagmanager.com/ns.html |
| Google Analytics | Statistieken | googletagmanager.com/gtag/js, google-analytics.com |
| Google Ads | Marketing | googleadservices.com, googlesyndication.com, doubleclick.net |
| Meta Pixel | Marketing | connect.facebook.net, facebook.com/tr |
| Hotjar | Statistieken | static.hotjar.com, script.hotjar.com |
| Microsoft Clarity | Statistieken | clarity.ms |
| LinkedIn Insight Tag | Marketing | snap.licdn.com, px.ads.linkedin.com, _linkedin_partner_id |
| TikTok Pixel | Marketing | analytics.tiktok.com |
| Pinterest Tag | Marketing | s.pinimg.com/ct, ct.pinterest.com |
| HubSpot | Marketing | js.hs-scripts.com, js.hs-analytics.net, js.hsforms.net |
| Quriobot | Marketing | botsrv2.com, quriobot.com |
| YouTube | Marketing | youtube.com/embed, youtube-nocookie.com/embed, youtube.com/iframe_api |
| Vimeo | Marketing | player.vimeo.com |
| Google Maps | Marketing | google.com/maps/embed, maps.google.com/maps, maps.googleapis.com/maps/api |
| X (Twitter) | Marketing | platform.twitter.com, platform.x.com |
| Marketing | instagram.com/embed | |
| Spotify | Marketing | open.spotify.com/embed |
| Matomo | Statistieken | /matomo.js, /piwik.js, cdn.matomo.cloud |
| Piwik PRO | Statistieken | .containers.piwik.pro, .piwik.pro/ppms.js |
| Adobe Analytics | Statistieken | assets.adobedtm.com, /appmeasurement.js, .omtrdc.net, .2o7.net |
| Mixpanel | Statistieken | cdn.mxpnl.com, cdn4.mxpnl.com, api-js.mixpanel.com |
| Amplitude | Statistieken | cdn.amplitude.com |
| Heap | Statistieken | cdn.heapanalytics.com, heapanalytics.com/js |
| Segment | Statistieken | cdn.segment.com, cdn.segment.io |
| Mouseflow | Statistieken | cdn.mouseflow.com |
| Crazy Egg | Statistieken | script.crazyegg.com |
| Lucky Orange | Statistieken | tools.luckyorange.com, tools.luckyorange.net |
| FullStory | Statistieken | edge.fullstory.com, fullstory.com/s/fs.js |
| Smartlook | Statistieken | web-sdk.smartlook.com, rec.smartlook.com |
| Contentsquare | Statistieken | t.contentsquare.net |
| Datadog RUM | Statistieken | datadoghq-browser-agent.com |
| Yandex Metrica | Statistieken | mc.yandex.ru/metrika, mc.yandex.com/metrika |
| VWO | Statistieken | dev.visualwebsiteoptimizer.com, visualwebsiteoptimizer.com/j.php |
| Optimizely | Statistieken | cdn.optimizely.com |
| AB Tasty | Statistieken | try.abtasty.com |
| Kameleoon | Statistieken | .kameleoon.eu, .kameleoon.io |
| Usabilla | Statistieken | w.usabilla.com |
| Mopinion | Statistieken | deploy.mopinion.com |
| Qualtrics | Statistieken | siteintercept.qualtrics.com |
| Survicate | Statistieken | survey.survicate.com |
| WooCommerce order attribution | Statistieken | /woocommerce/assets/js/frontend/order-attribution, /sourcebuster/sourcebuster |
| Microsoft Advertising | Marketing | bat.bing.com |
| X Ads | Marketing | static.ads-twitter.com, analytics.twitter.com |
| Snap Pixel | Marketing | sc-static.net/scevent, tr.snapchat.com |
| Reddit Pixel | Marketing | redditstatic.com/ads, alb.reddit.com |
| Quora Pixel | Marketing | a.quora.com/qevents.js, q.quora.com |
| Criteo | Marketing | static.criteo.net, dynamic.criteo.com, sslwidget.criteo.com |
| Taboola | Marketing | cdn.taboola.com, trc.taboola.com |
| Outbrain | Marketing | widgets.outbrain.com, amplify.outbrain.com |
| AdRoll | Marketing | s.adroll.com, d.adroll.com |
| The Trade Desk | Marketing | js.adsrvr.org, insight.adsrvr.org |
| Xandr | Marketing | acdn.adnxs.com, ib.adnxs.com, secure.adnxs.com |
| Adform | Marketing | track.adform.net, s2.adform.net, s1.adform.net |
| Amazon Ads | Marketing | amazon-adsystem.com |
| Awin | Marketing | dwin1.com, zenaps.com |
| TradeTracker | Marketing | tm.tradetracker.net, ts.tradetracker.net |
| Daisycon | Marketing | .daisycon.io |
| impact.com | Marketing | utt.impactcdn.com, impactradius-event.com |
| Leadinfo | Marketing | cdn.leadinfo.net, collector.leadinfo.net, leadinfo.net, api.leadinfo.com |
| Dealfront (Leadfeeder) | Marketing | sc.lfeeder.com, lftracker.leadfeeder.com |
| Albacross | Marketing | serve.albacross.com |
| Snitcher | Marketing | cdn.snitcher.com |
| Klaviyo | Marketing | static.klaviyo.com, static-tracking.klaviyo.com, a.klaviyo.com |
| Mailchimp | Marketing | chimpstatic.com/mcjs-connected |
| ActiveCampaign | Marketing | diffuser-cdn.app-us1.com, trackcmp.net |
| Brevo | Marketing | sibautomation.com, cdn.brevo.com/js/sdk-loader |
| Salesforce Account Engagement (Pardot) | Marketing | pi.pardot.com, cdn.pardot.com |
| Marketo | Marketing | munchkin.marketo.net |
| ShareThis | Marketing | platform-api.sharethis.com, buttons-config.sharethis.com |
| AddToAny | Marketing | static.addtoany.com |
| OptinMonster | Marketing | a.omappapi.com |
| Facebook embeds | Marketing | facebook.com/plugins, web.facebook.com/plugins |
| TikTok embeds | Marketing | tiktok.com/embed |
| Wistia | Marketing | fast.wistia.com, fast.wistia.net |
| Vidyard | Marketing | play.vidyard.com |
| Loom | Marketing | loom.com/embed |
| Dailymotion | Marketing | dailymotion.com/embed, geo.dailymotion.com |
| JW Player | Statistieken | cdn.jwplayer.com, content.jwplatform.com |
| SoundCloud | Marketing | w.soundcloud.com/player |
| Disqus | Marketing | .disqus.com/embed.js, disquscdn.com |
| Intercom | Voorkeuren | widget.intercom.io, js.intercomcdn.com |
| Zendesk | Voorkeuren | static.zdassets.com, ekr.zdassets.com, v2.zopim.com |
| Drift | Voorkeuren | js.driftt.com |
| Crisp | Voorkeuren | client.crisp.chat |
| tawk.to | Voorkeuren | embed.tawk.to |
| LiveChat | Voorkeuren | cdn.livechatinc.com |
| Olark | Voorkeuren | static.olark.com |
| Zoho SalesIQ | Voorkeuren | salesiq.zoho.eu, salesiq.zoho.com, salesiq.zohopublic |
| Smartsupp | Voorkeuren | smartsuppchat.com, smartsupp-widget |
| Tidio | Voorkeuren | code.tidio.co |
| Trengo | Voorkeuren | static.widget.trengo.eu |
| Freshchat | Voorkeuren | wchat.freshchat.com, snippets.freshchat.com |
| Userlike | Voorkeuren | userlike-cdn-widgets |
| Calendly | Voorkeuren | assets.calendly.com, calendly.com/ |
| Typeform | Voorkeuren | embed.typeform.com, form.typeform.com |
| Jotform | Voorkeuren | form.jotform.com, cdn.jotfor.ms |
Staat Google Consent Mode op geavanceerd, dan worden de drie Google-diensten hierboven niet tegengehouden. Ze laden meteen en volgen zelf de toestemmingsstatus. In Google Consent Mode v2 lees je wat het verschil is.
Een dienst uitzetten
Open de site, ga naar Cookies en kijk onder Diensten. Elke dienst heeft een schakelaar. Zet je er een uit, dan laden de scripts en frames ervan zonder te vragen. Doe dat alleen voor een dienst die geen cookies plaatst en niets verzamelt, of een dienst die je op een andere manier tegenhoudt.
Je eigen regels
Voor een dienst die we niet kennen, voeg je een regel toe onder Cookies, Je eigen regels. Een regel bestaat uit een stukje tekst en een categorie. Elk script of frame waarvan het adres die tekst bevat, wacht op die categorie. Gebruik een deel dat uniek is voor de dienst, zoals widget.example-chat.com, zodat je niet per ongeluk andere scripts tegenhoudt.
Zelf een script markeren
Je kunt elk script in je HTML markeren, zodat het op toestemming wacht. Verander het type in text/plain en voeg data-cookiemark toe met de categorie. De browser voert een script met dat type niet uit, en Cookiemark voert het uit zodra de categorie is toegestaan.
<script type="text/plain" data-cookiemark="statistics"
src="https://analytics.example.com/tracker.js"></script>Inline scripts werken op dezelfde manier. Automatisch blokkeren kijkt alleen naar adressen, dus een inline snippet heeft deze markup altijd nodig.
<script type="text/plain" data-cookiemark="marketing">
// This code runs once the visitor allows marketing.
startMyPixel('1234567');
</script>Moet een script als module draaien, voeg dan data-cmk-type="module" toe. Cookiemark geeft het script dat type als het hem uitvoert.
<script type="text/plain" data-cookiemark="statistics"
data-cmk-type="module" src="/js/stats.js"></script>Categorieën combineren
In het attribuut zet je één categorie of een combinatie van categorieën.
| Waarde | Het script draait als |
|---|---|
statistics | Statistieken zijn toegestaan. |
statistics,marketing | Beide zijn toegestaan. |
statistics|marketing | Minstens één van de twee is toegestaan. |
De categorieën zijn preferences, statistics en marketing. Een script dat als necessary is gemarkeerd, draait meteen.
Markup van de plugin en van Cookiebot
Cookiemark leest ook data-cookieconsent in plaats van data-cookiemark. Dat is het attribuut van de plugin CookieConsent en van Cookiebot. Scripts en frames die je voor een van beide hebt gemarkeerd, blijven werken als je overstapt.
Iframes en andere embeds
Een ingesloten video, kaart of post van een bekende dienst wordt net zo behandeld als een script. Cookiemark haalt het adres weg, verbergt het frame en toont op die plek een placeholder. De placeholder noemt de categorie en heeft een knop om die toe te staan.
Wil je een frame tegenhouden dat Cookiemark niet kent, zet het adres dan in data-src in plaats van src en voeg de categorie toe.
<iframe data-src="https://www.youtube-nocookie.com/embed/VIDEO-ID"
data-cookiemark="marketing" data-cmk-label="YouTube"
width="560" height="315" title="Our product in two minutes"></iframe>Met het optionele data-cmk-label zet je de naam van de dienst op de placeholder. Geef het frame een width en een height, dan krijgt de placeholder dezelfde vorm. De pagina verspringt dan niet als de video laadt. Afbeeldingen met data-src en hetzelfde attribuut worden op dezelfde manier vrijgegeven, zonder placeholder.
De placeholder
De knop op de placeholder staat de categorie van die embed toe en laat de rest van de keuze van de bezoeker zoals die was. Het is een echte keuze, dus die wordt opgeslagen en vastgelegd zoals elke andere. Frames die niemand kan zien, zoals een trackingpixel van één bij één pixel, krijgen geen placeholder. Die blijven zonder placeholder tegengehouden.
De teksten van de placeholder pas je aan onder Teksten. In de tekst staat %s op de plek waar de naam van de categorie komt.
Als een bezoeker toestemming intrekt
Een script dat al is uitgevoerd, kun je niet meer stoppen. Zet een bezoeker een categorie uit die eerder was toegestaan, dan herlaadt Cookiemark daarom standaard de pagina. Vóór het herladen verwijdert het de cookies uit die categorie die in je cookielijst staan, op je domein en de bovenliggende domeinen. Het herladen kun je uitzetten onder Instellingen.
Cookies die een derde partij op een eigen domein heeft geplaatst, zijn voor geen enkel script op je site bereikbaar. Die verlopen vanzelf.
Wat blokkeren in de browser niet kan tegenhouden
Cookiemark draait in de browser van de bezoeker en kan dus alleen ingrijpen op wat er gebeurt nadat het is gestart. Houd rekening met deze grenzen.
- Een script boven de regel van Cookiemark draait voordat Cookiemark bestaat. Zet de regel dus altijd als eerste in de head.
- Een inline script zonder
srcwordt nooit automatisch herkend. Markeer het zelf. - Een verzoek dat een script al heeft verstuurd, kun je niet terughalen. Daarom herlaadt de pagina als iemand toestemming intrekt.
- Een tag die in Tag Manager draait, is geen script op je pagina. Tag Manager bepaalt wanneer hij draait, dus geef hem een trigger voor toestemming.
Een scan laat zien wat er nog doorheen glipt. Die toont elke cookie die je pagina's plaatsen voordat een bezoeker kiest, en wie hem plaatst.