Lim inn inline som første element i <head> — før GTM, gtag og alle andre script:
<script data-lang="nb" data-policy-url="/personvern" data-policy="no-2026.1" data-core="https://DITT-HOST/cmp.js">
/* innholdet i loader.js limes inn her (inline, ikke src) */
</script>
Hvorfor inline? Nettleserens preload-scanner kan hente andre script mens en ekstern loader lastes. Inline loader = ingen race.
Attributter:
data-lang: nb | nn | sv | en (ellers auto fra <html lang>/nettleser)data-policy-url: lenke til personvernerklæringdata-policy: versjon av tekst/policy — endres den, vises banneret på nyttdata-datalayer: navn på dataLayer hvis ikke dataLayerdata-strict-gtm="1": blokker selve GTM-containeren til samtykkedata-block-extra="host/sti=kategori,…": egne mønstreScript som ligger direkte i HTML-en må merkes (loaderen kan ikke stoppe dem ellers):
<script type="text/plain" data-cookiehawk-cat="statistics" data-cookiehawk-src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
Kategorier: functional | statistics | marketing.
update ved valg.cookiehawk_consent_update pushes til dataLayer med {functional, statistics, marketing} — bruk som trigger for tagger som ikke støtter Consent Mode.cookiehawk_consent_update.Bruk pluginen i wordpress-plugin/cookiehawk-consent/ (zip mappen → Programtillegg → Last opp). Den legger loaderen først i <head> og har innstillinger for språk, personvern-URL og strict GTM.
Kjør skanneren mot siden: før valg = 0 kall til samtykkekrevende tjenester, etter avvis = 0, etter aksept = alle. Rapporten viser eventuelle kall som gikk før loaderen rakk å gripe inn (script som ligger fast i HTML og må merkes).
Se SPIKE-BLOKKERING.md: fetch/XHR/beacon/Worker, srcdoc, shadow DOM, server-side tagging og trackere som aktivt omgår blokkering dekkes ikke. «Null kall» krever riktig tag-gating og verifiseres per nettsted.