Cookie-banneret sier avvist, men sporingen lastes likevel: slik tester og fikser du det

Cookie-banneret sier avvist, men sporingen lastes likevel: slik tester og fikser du det

Oppdatert: 27. oktober 2026
15 min lesetid
Guide
Sikkerhetsrevisor
Markedsstrateg

22. oktober 2026 spurte en Shopify-butikkeier på r/shopify hvordan andre håndterer skript som fortsetter å laste etter at den besøkende har trykket Avvis. Banneret sa én ting, nettleseren gjorde noe annet. Det er det vanligste cookie-problemet på alle plattformer: banneret lagrer valget, men ingenting på siden er koblet til for å lytte på det. WooCommerce, Shopify, en headless-løsning på Next.js eller Astro og et vanlig WordPress-nettsted feiler på samme måte, fordi lekkasjene kommer fra innebygde videoer, skrifttyper, temakode og taggoppsett, ikke fra selve banner-utvidelsen.

Denne guiden viser hvordan du med bare nettleseren sjekker hva nettstedet sender etter Avvis, hvilke kall som vanligvis slipper gjennom, hva Googles avanserte samtykkemodus sender med vilje, og hvordan du stopper hvert av dem. Den viser til lovtekst og leverandørdokumentasjon underveis. Det er en praktisk testguide, ikke juridisk rådgivning.

Fra 1. januar 2025 gjelder ny ekomlov. Ekomloven § 3-15 sier at det ikke er tillatt å lagre eller skaffe seg tilgang til opplysninger i brukerens kommunikasjonsutstyr uten at brukeren er informert og har gitt samtykke, og at samtykket skal oppfylle kravene i personvernforordningen. Unntak gjelder ren overføring av kommunikasjon og det som er strengt nødvendig for en tjeneste brukeren uttrykkelig har bedt om.

Datatilsynets side om informasjonskapsler forklarer hva som er nytt: tidligere holdt det at nettleserens standardinnstillinger tillot cookies, nå må samtykket være frivillig, spesifikt, informert, utvetydig, dokumenterbart og like lett å trekke tilbake. Det skal være like lett å si nei som å si ja. Datatilsynet og Nkom har felles tilsyn med bestemmelsen.

#Hvilke bannerutforminger tilsynsmyndighetene har slått ned på

Rapporten fra EDPBs Cookie Banner Taskforce, vedtatt 17. januar 2023, samler praksis som europeiske datatilsyn vurderte i koordinerte klager. Den passer godt med Datatilsynets krav om at nei skal være like lett som ja:

  • Ingen avvis-knapp på første lag. Et stort flertall av tilsynene mente at et banner med godta-knapp, men uten avvisningsvalg på samme lag, er et brudd.
  • Forhåndsavkryssede bokser på andre lag. Arbeidsgruppen bekreftet at de ikke gir gyldig samtykke.
  • En lenke i stedet for en knapp for å avvise, og farger eller kontrast som fremhever “godta alle”. Kontrast må ifølge rapporten vurderes konkret, uten en fast standard.
  • Informasjonskapsler merket som nødvendige uten å være det. Rapporten minner om at nettstedseieren selv må holde listen oppdatert og kunne vise hvorfor hver kapsel er nødvendig.
  • Ingen enkel måte å trekke samtykket på. Tilsynene forventer en lenke eller et lite ikon som alltid er synlig og åpner personverninnstillingene igjen.

#Hvorfor laster skriptene selv om brukeren har avvist

Innlegget som startet tråden, beskrev skillet presist:

Apppiksler er enkle. Dem tar Shopify seg av. Alt det andre? YouTube-videoer, Google Fonts, chat-widgeter, SEO- og analyseskript: nei. I januar 2022 tilkjente en domstol i München en besøkende 100 euro fordi et nettsted sendte IP-adressen hans til Google via Google Fonts, uten samtykke.

(u/Plus_Cell394, r/shopify, 22. oktober 2026, egen oversettelse)

Et banner styrer bare det som er registrert hos det. Kode som står fast i temaet, er limt inn i et bunntekstfelt, kommer fra en innebyggingsblokk eller lastes av en utvidelse som ignorerer bannerets grensesnitt, kjører ved sideinnlasting uansett svar. Banneret viser “Avvist” og har rett om sin egen status. Siden spurte det bare aldri.

#Gjelder regelen bare informasjonskapsler

Nei. EU-domstolen slo fast i Planet49 (C-673/17) at en forhåndsavkrysset boks ikke er gyldig samtykke, og at artikkel 5 nr. 3 i ePrivacy-direktivet gjelder uansett om opplysningene er personopplysninger. EDPBs retningslinjer 2/2023 om det tekniske virkeområdet (versjon 2.0, vedtatt 7. oktober 2024) tar med JavaScript der en aktør instruerer nettleseren til å sende asynkrone forespørsler med opplysninger, og har egne avsnitt om sporingspiksler og sporing basert bare på IP-adresse. Retningslinjene minner samtidig om at regelen kan gjelde uten at samtykke alltid kreves, fordi det finnes unntak. Om et unntak passer, er et juridisk spørsmål. Om kallet skjer i det hele tatt, kan du teste selv.

Chrome, Brave, Firefox og Edge fungerer likt her.

  1. Åpne en ny profil eller et privat vindu uten utvidelser. Annonseblokkere skjuler nettopp de kallene du leter etter.
  2. Åpne utviklerverktøyene før siden lastes. Kryss av for “Preserve log” og “Disable cache” i Network-fanen.
  3. Last forsiden og ikke rør banneret. Noter alle eksterne domener. Før et valg skal ingenting valgfritt lastes.
  4. Trykk Avvis og gå gjennom en produktside, en side med video, kontaktsiden og handlekurven. Lekkasjer sitter ofte i maler forsiden ikke bruker.
  5. Filtrer listen på domenebiter: google, gstatic, doubleclick, facebook, tiktok, youtube, hotjar, clarity, navnet på chatleverandøren.
  6. I Application-fanen (Storage i Firefox) går du gjennom Cookies, Local storage og Session storage for hver opprinnelse. Alt utover lagringen av selve avslaget og funksjonelle øktcookies må kunne forklares.
  7. Gjenta testen med Godta, så du ser at verktøyene virker når de er tillatt. Test også en tilbakevendende besøkende som trekker samtykket uten å tømme nettleseren.

Skriv resultatet inn i en tabell: domene, side, før valg, etter Avvis, etter Godta. Det er rettelseslisten din.

#Hva som oftest lekker etter Avvis

KildeSlik ser det ut i NetworkVanlig årsak
Innebygd YouTube eller Vimeoyoutube.com, ytimg.com, googlevideo.com ved sideinnlastingVanlig iframe i innhold eller temablokk
Google Fontsfonts.googleapis.com og fonts.gstatic.comTema eller utvidelse henter skrift fra Google i stedet for lokalt
Chat-widgetLeverandørskript og websocket på hver sideKode limt inn i bunntekst eller temainnstillinger
Kartmaps.googleapis.com, kartfliserButikkfinner eller kart på kontaktsiden
Piksler hardkodet i temaetconnect.facebook.net, analytics.tiktok.com, Google Ads-taggerKode i toppfelt, utenfor samtykkesystemet
Tagger i taggbehandlerenTagger utløses i GTM-forhåndsvisning ved avslagTagger uten samtykkeinnstillinger eller utløsere på alle sider

Google beskriver personvernforbedret modus for YouTube (youtube-nocookie.com) som at visninger i den innebygde spilleren ikke påvirker personaliseringen på YouTube. Det står ikke at spilleren ikke sender noe til Google, så domenebytte alene er ingen løsning.

Skrifttyper er tilfellet med en dom. LG München I (3 O 17493/20, 20. januar 2022) kom til at det krenket den besøkendes rettigheter å sende den dynamiske IP-adressen hans til Google via Google Fonts uten samtykke, påla nettstedet å slutte og tilkjente 100 euro i erstatning. Retten la vekt på at Google Fonts kan brukes uten at nettleseren kobler seg til en Google-server.

Oppdatering . Den samme lekkasjen finnes på produktsider i WooCommerce når galleriet viser en video. En innebygd YouTube- eller Vimeo-spiller er selv en tredjepartsinnlasting som starter når siden vises, før noen klikker, med mindre et forhåndsbilde står i stedet for den til den besøkende trykker på avspilling. Vi endret dette i utvidelsen vår Reel, som legger til produktvideo i galleriet i WooCommerce. Fra versjon 1.0.27 viser videoer fra YouTube og Vimeo et forhåndsbilde med avspillingsknapp, og spilleren lastes først når kunden trykker på den. Besøkende som aldri starter videoen, laster ingenting fra spilleren, YouTube spilles fra youtube-nocookie.com, og forhåndsbildet fyller den reserverte 16:9-rammen, så ingenting flytter seg. Med automatisk avspilling slått på bygges spilleren inn direkte som før. Versjon 1.1.0 la til videoen som siste lysbilde i galleriet; også der lastes spilleren først ved klikk, og automatisk avspilling gjelder ikke. Sjekk din egen butikk i Network-fanen i utviklerverktøyene med samtykke avvist. Dukker det opp forespørsler til youtube.com, ytimg.com eller Vimeo-domener før noe klikk, trenger innbyggingen et forhåndsbilde som laster spilleren først ved klikk.

#Googles samtykkemodus v2: hva grunnleggende og avansert fortsatt sender

Ser du kall til Google Analytics etter Avvis, sjekk først hvilken modus du kjører. Googles oversikt over samtykkemodus skiller mellom:

  • Grunnleggende: Google-taggene er blokkert til brukeren har svart på banneret. Ifølge Google sendes ingen data før samtykke, ikke engang standardstatusen.
  • Avansert: taggene lastes med en gang med avslag som standard. Så lenge samtykke mangler, sender de samtykkestatus og målinger uten informasjonskapsler. Med analytics_storage avslått leser og skriver ikke Google Analytics egne cookies, men målinger sendes fortsatt til Analytics-domener “for grunnleggende måling og modellering”.

Avansert modus gir altså kall til Google etter Avvis med vilje. Om det holder for ditt nettsted, er nettopp spørsmålet etter § 3-15, og det avgjør du med rådgiveren din, ikke med taggen. En kommentator på r/woocommerce sa det samme fra testerens side:

For Google betyr ikke en nettverksforespørsel alene at oppsettet er feil: avansert Consent Mode kan sende pinger uten informasjonskapsler mens samtykke er avslått.

(u/anamap_alex, r/woocommerce, 7. oktober 2026, egen oversettelse)

To konfigurasjonsfeil fra Googles implementeringsveiledning gir ekte lekkasjer i begge moduser: standardkommandoen må kjøre før config og event, og et banner som lastes asynkront trenger wait_for_update.

#Shopify, WooCommerce og headless: kode som går forbi banneret

Ifølge Shopifys dokumentasjon om web pixels følger web pixel-apputvidelser Customer Privacy API og kjøres først etter samtykke i regioner der det kreves. Temakode får ikke den beskyttelsen. Til den bruker du Customer Privacy API med analyticsProcessingAllowed(), marketingAllowed() og hendelsen visitorConsentCollected. Standardtilstanden avhenger av butikkens personverninnstillinger: i regioner uten samtykkekrav er alt tillatt, så et marked med feil innstilling ser ut som et ødelagt banner.

WooCommerce, WordPress og headless har ingen sandkasse på plattformnivå. Sjekk felt for kode i topp og bunn, utvidelser som skriver ut egne tagger (anmeldelser, chat, Meta- og Google-integrasjoner) og innebygd innhold i innlegg. Ser du to kall til fbevents.js etter Godta, er pikselen lastet to ganger, fra GTM og fra en utvidelse. Vår guide til Google Analytics 4 viser hvordan Google-tagger kobles til samtykke, og artikkelen om tredjepartsskript viser hvordan du ser hva hvert skript laster.

Oppdatering . Samtykkeverktøyet er selv kode som kjører på hver side, og trenger oppdateringer og overvåking som enhver annen utvidelse. Wordfence sin ukentlige sårbarhetsrapport for 12. til 18. oktober 2026 lister fire samtykkeutvidelser. I Complianz til og med 7.5.5 kunne en besøkende uten innlogging legge lagret skriptkode (stored XSS) inn via kommentarinnhold; den kjøres først når kommentaren er godkjent, og versjon 7.5.6 retter feilen. WPConsent til og med 1.1.9 hadde en lignende feil via kommentarer når funksjonen Script Blocking er slått på (rettet i 1.2.0). Record of Consent Extension for Complianz til og med 2.5 lagret innsmuglet skript via parameteren uid (rettet i 2.6), og Lightweight Cookie Notice til og med 1.19 hadde en offentlig kjent sikkerhetsnøkkel for W3 Total Cache skrevet rett inn i koden, noe som betyr noe hvis nettstedet også kjører W3 Total Cache (rettet i 1.20). Gi samtykkeutvidelsen samme oppdateringsrytme og sårbarhetsvarsler som resten av installasjonen. Vår sikkerhetsrevisjon av WordPress dekker den sjekken.

#Hvordan finner jeg skriptet som sendte kallet

Chromes referanse for Network-panelet beskriver verktøyene som gjør testen til en feilsøking:

  • More filters > 3rd-party requests skjuler alt fra ditt eget opphav. Etter Avvis står bare kallene som må forklares igjen.
  • Filteret domain: tar jokertegn, for eksempel domain:*.google.com, og flere egenskaper kan kombineres med mellomrom. cookie-name: viser hvilket svar som satte en bestemt informasjonskapsel.
  • Kolonnen Initiator viser om kallet kom fra HTML-parseren, en omdirigering eller et skript, og for skript lenker den til linjen i kildefilen. Da ser du om synderen er temaet, en utvidelse, taggbehandleren eller en innlimt kodebit.
  • Network request blocking blokkerer et URL-mønster. Blokker et mistenkt domene, last siden på nytt og se om noe slutter å virke før du fjerner det for godt.

Som dokumentasjon eksporterer du loggen med Export HAR (sanitized). Chrome utelater da sensitive data som informasjonskapsler, så filen kan legges ved en sak. Ta én eksport etter Avvis og én etter Godta. Datatilsynet krever at samtykke skal være dokumenterbart, og to daterte HAR-filer viser hva siden faktisk gjorde.

#Samtykkeinnstillinger i Google Tag Manager, tagg for tagg

Hjelpesiden for samtykke i Tag Manager beskriver tre funksjoner:

  1. Utløseren Consent Initialization - All Pages. Alle nettbeholdere har den. Den utløses før alle andre utløsere, også Initialization, og er bare ment for tagger som setter eller oppdaterer samtykke, som bannermalen. Kjører banneret på en senere utløser, rekker andre tagger å starte før det finnes noen samtykkestatus.
  2. Additional Consent Checks i hver tagg (Advanced Settings > Consent Settings). Standardvalget “Not set” betyr ingen ekstra sjekk. “Require additional consent for tag to fire” gjør at taggen bare utløses når alle oppførte samtykketyper er gitt. En tagg uten innebygd samtykkesjekk, for eksempel en Meta-piksel lagt inn som Custom HTML, utløses ellers uansett hva den besøkende valgte.
  3. Consent Overview. Slås på under Admin > Container Settings. Oversikten deler taggene i “Consent Not Configured” og “Consent Configured” og lar deg endre mange samtidig. Hver markedsføringstagg i den første gruppen er en mulig lekkasje.

Kontroller så i Tag Assistant. Googles veiledning for feilsøking av samtykkemodus sier at du skal velge den tidligste Consent-hendelsen i oppsummeringen, sjekke at ad_storage, ad_user_data, ad_personalization og analytics_storage er satt, og sammenligne kolonnene On-page Default og On-page Update. En typisk feil er at standarden settes for sent: siden åpnes, en annonsetagg utløses, og først da settes standarden til denied. Google fraråder også å kalle gtag-samtykkekommandoen fra en Custom HTML-tagg. Bruker du regionale standarder, gjentar du kontrollen med simulert plassering i Chrome, for eksempel Norge og et land utenfor EØS.

#Shopify, WordPress, Next.js og Cloudflare Zaraz: hva verktøyene stopper

  • Shopify med eget banner: Valget lagres med setTrackingConsent() for formålene analytics, marketing og preferences, og ifølge dokumentasjonen bare etter en handling fra den besøkende, aldri automatisk. shouldShowBanner() forteller om den besøkende er i en region med banner, ikke om samtykke allerede er gitt. privacyBanner.showPreferences() åpner innstillingene igjen og passer bak en fast lenke i bunnteksten. For headless-butikker med Hydrogen viser Shopify til Hydrogen Analytics og samtykke, der økten styres på serveren slik at samtykket følger med til kassen.
  • WordPress og WooCommerce: WP Consent API standardiserer hvordan banner-utvidelsen og andre utvidelser utveksler samtykkekategorier, men håndterer ikke samtykke selv. Ifølge beskrivelsen returnerer funksjonen for samtykketype false hvis ingen samtykkeutvidelse setter den, og da regnes alle kategorier som tillatt. Innebygde iframes fra tredjeparter må fortsatt blokkeres av samtykkeutvidelsen.
  • Next.js: Ifølge dokumentasjonen for @next/third-parties henter GoogleTagManager beholderen etter hydrering, og YouTubeEmbed bruker lite-youtube-embed. Ingen av dem sjekker samtykke. lite-youtube-embed bruker youtube-nocookie.com, men standard forhåndsbilde hentes fra i.ytimg.com, et Google-domene, før noen klikker.
  • Cloudflare Zaraz: Zaraz-dokumentasjonen om samtykke sier at et nytt verktøy ikke har noe formål tildelt og hopper over samtykke som standard. Gi hvert verktøy et formål. zaraz.showConsentModal() åpner samtykkevinduet på nytt.

#Feilsøkingstabell: symptom, årsak og hvor du ser

Hva du ser etter AvvisSannsynlig årsakHvor du ser
Kall til Google Analytics, ingen _ga-kapselAvansert samtykkemodus virker som tenktValget av modus, ikke taggen
_ga- eller _gcl-kapsler dukker oppStandard mangler eller settes etter taggeneTag Assistant, tidligste Consent-hendelse
Meta- eller TikTok-piksel utløsesTagg med “Not set” eller piksel fra en utvidelse utenfor GTMConsent Overview, kolonnen Initiator
Lekkasje bare på produkt- eller bloggsiderInnebygging eller widget i den malenTest hver mal
Lekkasje bare for noen landRegionale standarder eller Shopify-regioner mangler et landSimulert plassering i Chrome, butikkens personverninnstillinger
Skript kjører videre etter tilbaketrekkingBanneret lagrer nytt valg, men sender ingen oppdateringSamtykkeoppdatering i Tag Assistant

#Slik tester du at det virker å trekke tilbake samtykket

Ekomloven krever samtykke etter personvernforordningen, og Datatilsynet skriver at det skal være like lett å trekke samtykket tilbake som å gi det. Det er også den testen de fleste hopper over. Gjør den slik:

  1. Åpne et privat vindu, trykk Godta og gå til en produktside. Noter hvilke tredjepartskall og informasjonskapsler som kommer.
  2. Finn lenken eller ikonet som åpner personverninnstillingene igjen. Finnes den ikke, er det første funn.
  3. Slå av statistikk og markedsføring og lagre. Ikke tøm nettleseren.
  4. Last siden på nytt og gå gjennom produktside og handlekurv. Kallene fra punkt 1 skal være borte, bortsett fra det avansert samtykkemodus sender med vilje.
  5. Åpne Tag Assistant og sjekk at det finnes en ny Consent-hendelse med oppdatert status etter endringen.
  6. Sjekk Application-fanen: informasjonskapsler som allerede er satt, forsvinner ikke av seg selv. Noter dem, og avklar med leverandøren av banneret om de slettes ved tilbaketrekking.

#Slik tetter du hver lekkasje

  • Video og kart: bytt iframen med en plassholder som lager iframen først etter klikk eller samtykke. Server forhåndsbildet fra egen server, ellers er det selv et tredjepartskall.
  • Skrifttyper: last ned filene, server dem fra eget domene med @font-face og fjern alle lenker til fonts.googleapis.com.
  • Chat: vis en lokal “Chat med oss”-knapp og last leverandørskriptet etter klikk eller samtykke.
  • Hardkodede piksler: flytt dem til taggbehandleren eller plattformens pikselsystem, så samtykkesjekken gjelder.
  • Taggbehandler: sett samtykkekrav på hver tagg og test i forhåndsvisning med avslag.

Kjør så testen på nytt og fyll ut tabellen igjen. Kolonnen “etter Avvis” skal nå bare vise ditt eget domene og tjenester du bevisst tillater, med begrunnelsen skrevet ved siden av. Datatilsynet krever at samtykket er dokumenterbart, og tabellen er et godt utgangspunkt for den dokumentasjonen.

Vår EU-gjennomgang for WooCommerce tar denne testen på hver mal, og den gratis nettstedsjekken viser tredjepartskall for en offentlig adresse.

Neste steg

Gjør artikkelen om til faktisk implementering

Denne blokken styrker intern lenking og sender leseren videre til de mest relevante tjenestene og innholdet.

Utforsk andre WordPress-tjenester og kunnskapsbase

Ofte stilte spørsmål

Praktiske svar for å bruke temaet i faktisk arbeid.

Trenger et kall uten informasjonskapsel også samtykke#
Det kan det. EDPBs retningslinjer regner JavaScript som får nettleseren til å sende opplysninger, som tilgang til brukerens utstyr, og Planet49-dommen sier at regelen gjelder uansett om det er personopplysninger. Om et unntak i ekomloven § 3-15 andre ledd passer, er en juridisk vurdering for ditt tilfelle.
Holder det med youtube-nocookie.com for å stoppe YouTube-sporing#
Nei. Google beskriver personvernforbedret modus som at visninger i den innebygde spilleren ikke påvirker personaliseringen på YouTube. Det står ikke at spilleren ikke kontakter Google. Bare en plassholder som lager iframen etter klikk eller samtykke, hindrer kallet.
Hvorfor oppfører Shopify-apppiksler seg, men ikke skriptene i temaet mitt#
Web pixel-apputvidelser kjører i Shopifys sandkasse og følger Customer Privacy API automatisk. Et skript lagt inn i theme.liquid kjører utenfor sandkassen og lastes ved hvert sidebesøk til du knytter det til analyticsProcessingAllowed() eller marketingAllowed().
Løser lokale skrifttyper problemet fra dommen i München#
For skrifttyper, ja: retten begrunnet det med at Google Fonts kan brukes uten at nettleseren kobler seg til en Google-server. Sjekk etterpå at ingen utvidelse, tema eller innebygd innhold fortsatt laster fonts.googleapis.com eller fonts.gstatic.com.

Relaterte artikler