Metode & compliance
Hvis I søger efter GDPR på hjemmesiden, cookie-samtykke eller regler for tracking, har I typisk allerede et banner. Det er sjældent problemet. Problemet er, at banneret siger ét, og netværksfanen siger noget andet: analytics kører før nogen har trykket, en pixel ligger i GTM "fordi marketing bad om det", og chat-widgeten sender sideindhold til en leverandør, I aldrig har sat på databehandlerlisten.
Vi møder to slags sites. Det ene har et banner, der kun kan accepteres — reject er gemt, eller pre-ticked. Det andet har et pænt CMP og stadig tolv kald til tredjepart på første load. Begge fejler den samme test: kan I pege på hver datastrøm, sige hvilket grundlag den har, og slå den fra, når grundlaget er samtykke, og samtykket mangler? Hvis nej, har I et website-problem. Ikke et jura-problem, I kan outsource til en tekst i footeren.
TL;DR
De vigtigste pointer
- GDPR på et website er tre lag: hvad I skriver, hvilke cookies I sætter, og hvilke kald browseren faktisk laver.
- Et banner er kun ærligt, hvis reject er lige så nemt som accept, og hvis scripts faktisk venter.
- Nødvendige cookies er få. Analytics, pixels, session replay og de fleste chat-widgets er det ikke.
- GTM er ikke et grundlag. Det er et rør. Hvis noget ligger i røret uden samtykke, er det jeres kald.
- Privatlivspolitikken skal spejle netværksfanen — ikke en skabelon fra 2018.
- Kortlæg datastrømmene, før I køber et nyt CMP. Ellers pynter I på et læk.
Hvorfor det her overhovedet er vigtigt
Et website er en af de steder, I behandler personoplysninger uden at tænke på det som et system. En IP, et cookie-id, en formular, et chatvindue, en video der kalder hjem. GDPR spørger om formål, grundlag, minimering og de registreredes rettigheder. Cookie-reglerne — ePrivacy, som Danmark har implementeret — spørger derudover, om I må sætte eller læse noget i browseren, før der er et gyldigt samtykke, medmindre det er strengt nødvendigt for den tjeneste, brugeren bad om.
De to regler bliver ofte mast sammen til "vi skal have et banner". Banneret er UI. Det løser ingenting, hvis Tag Manager fyrer Facebook, LinkedIn og et heat-map af, før nogen har valgt. Det løser heller ingenting, hvis I påstår legitim interesse i al analytics, mens værktøjet sætter tredjeparts-cookies og bygger en profil på tværs af sites.
Det her er et andet problem end hvor serveren står. Hosting og underleverandører i cloud er en residency- og DPA-samtale. Website-GDPR er det, der forlader browseren på en fremmed maskine: hvem får URL, user-agent, formularfelter, optage af sessionen. I kan have data i en EU-region og stadig lække et browse-mønster til fem amerikanske pixels. Begge dele skal I kunne forklare. De erstatter ikke hinanden.
Vi skriver det, fordi bureauer elsker at sælge et CMP som færdigt arbejde. CMP'et er et værktøj. Arbejdet er at kende jeres kald, at gate dem, og at lade politikken beskrive virkeligheden. Uden det er I compliant i Figma og i brud i production.
De tre lag: politik, cookies og det browseren faktisk sender
Første lag er teksten. Privatlivspolitik og cookie-deklaration skal sige, hvem I er, hvad I samler ind, hvorfor, hvor længe, og hvem der er databehandler. Det er kedeligt, og det er nødvendigt. Det er også det lag, folk opdaterer sidst. En politik der stadig nævner et værktøj, I slukkede, eller mangler det chat-produkt, I tændte i sidste uge, er et signal om, at I ikke har et inventar.
Andet lag er cookies og lignende teknik — localStorage, pixels, fingerprint-agtige signaler. Nødvendige er de, uden hvilke den tjeneste brugeren bad om, ikke virker: kurv, login-session, load-balancing, et samtykke-valg I skal huske. Alt der måler, retargeter, personaliserer på tværs eller optager sessionen, er typisk samtykke. "Vi bruger det til at forbedre sitet" er et formål. Det er ikke automatisk et grundlag.
Tredje lag er netværket. Åbn DevTools. Reload. Se hvad der går, før I klikker. Det er jeres rigtige datakort. Et kald til et analyse-domain, et dobbeltklik-id, en CNAME der ligner first-party men peger på en vendor — det er behandling. Hvis banneret stadig viser "afventer valg", og kaldet allerede er sket, er banneret dekoration.
De tre lag skal stemme overens. Politik uden kald er fiktion. Kald uden politik er det, en tilsynssag peger på. Cookies uden kald kan være rester. Kald uden cookies kan stadig være personoplysninger. Tænk i strømme, ikke i "har vi husket cookie-banneret".
Hvad der typisk er nødvendigt — og hvad der typisk kræver et ja
Nødvendigt er det, der får den handling, brugeren bad om, til at virke. En kurv. En session efter login. Et load-balancer-cookie. Et samtykke-cookie der husker "nej tak". Et security-token. Det er en kort liste. Den bliver ikke længere, fordi marketing kalder et værktøj "essentielt". Hvis sitet virker uden kaldet, var kaldet ikke nødvendigt.
Analytics er det hyppigste selvbedrag. First-party, cookieless, aggregeret måling kan i nogle designs forsvares uden samtykke — det er et juridisk kald, og det kræver, at I faktisk har slået identifikatorer og deling fra. Klassisk pageview med et klient-id, der følger brugeren, og som I blander med ads, er ikke det design. Antag ikke "statistik er legitim interesse" og lad GTM stå åben. Byg målingen, så I kan forklare den, eller spørg om lov.
Marketing-pixels, A/B-værktøjer der profiler, session replay, most heatmaps, embedded sociale feeds og "smart" chat der sender URL og snippet til en model, er samtykke-land. Chat kan være funktionel, hvis den er jeres egen, først åbner efter et klik, og ikke lækker siden til en tredjepart før tid. Den chat, der injector et script på alle sider og lytter med det samme, er det ikke.
Embeds er det, folk glemmer. YouTube, maps, en booking-iframe, et review-widget. De sætter ofte cookies, I ikke har listet. En ærlig løsning er at vise en pladsholder og først loade embeddet efter ja — eller efter et bevidst klik på "vis kort". Det er mere arbejde end at paste et iframe. Det er også det, der gør politikken sand.
Funktionelt first-party vs. det banneret skal kunne slukke
Typisk funktionelt
Uden det virker den handling, brugeren bad om, ikke.
- Login-session, kurv, CSRF, load-balancing
- Selve samtykke-valget, så I kan huske et nej
- Indhold I hoster selv, uden tredjeparts-id
- En chat der først loader efter et bevidst åbent klik og jeres DPA
Typisk samtykke — eller lad være
Det der måler, retargeter, optager eller deler.
- Ads-pixels, CAPI, linked audiences
- Session replay og de fleste heatmaps
- Klassisk analytics med et vedvarende klient-id
- Embeds og tags i GTM, I ikke kan pege på et grundlag for
Sådan kortlægger I datastrømmene på en eftermiddag
Uden det her inventar er ethvert CMP gætteri. I kan ikke styre det, I ikke har set.
- 01
Åbn et rent vindue og reload forsiden
Inkognito, uden adblock. Netværksfanen, cookies, localStorage. Skriv hvert tredjeparts-domain ned. Det I ikke kan navngive, er risiko — ikke "sikkert noget fra temaet".
- 02
Gentag efter reject, efter accept, og på en tak-side
De tre tilstande lyver ofte forskelligt. Reject skal ligne et site uden marketing-kald. Accept må tænde det, I har beskrevet. En receipt-side er der, pixels elsker at gemme sig.
- 03
Gennemgå Tag Manager som om det var produktion
Hvert tag: navn, trigger, om det venter på samtykke, hvilke felter det sender. Fjern det, I ikke kan forklare. GTM er et deploy-rør. Det er ikke et frirum.
- 04
Par datastrøm med grundlag og databehandler
For hver strøm: formål, grundlag, leverandør, DPA, hvor data lander. Tomme celler er opgaver. "Vi har altid haft den pixel" er ikke et grundlag.
- 05
Først derefter: ret banner, gates og politik
Gør reject synlig. Gate scripts så de ikke loader før ja. Opdater politikken til det, I faktisk gør. Så kan I skifte CMP senere uden at starte forfra.
“Et cookie-banner er ærligt, når netværksfanen efter "nej tak" er kedelig. Ellers er det grafik.”
Sådan gates scripts — så banneret ikke er teater
Det tekniske krav er simpelt at sige og nemt at fejle: intet samtykke-krævende script må evalueres, før valget er ja. Ikke "må ikke sætte cookie". Evalueres. Et script der kører og så "vælger ikke at sætte", har ofte allerede sendt IP og URL. Server-side tagging flytter kaldet. Det sletter det ikke. Hvis I sender de samme events til samme vendor, har I stadig en behandling — I har bare gjort den sværere at se i browseren.
På et Next.js-site betyder det: tredjepart i en loader, der læser samtykke-state, ikke i root-layout som default. Chat, analytics, pixels, embeds. Consent Mode og tilsvarende signaler er nyttige, når I allerede har et ærligt inventar. De er ikke en fritagelse til at loade tagget alligevel. Et default-on tag med "consent unknown" er det mønster, vi ser oftest — og det er det forkerte default.
På WordPress betyder det: temaet og de plugins, der injector i head, ikke kun CMP-pluginet. Et SEO-plugin, et chat-plugin og et pixel-plugin kan alle ignorere banneret. Ét sted der styrer, hvad der må loade, slår fem plugins der hver især "støtter GDPR".
Tilbagekaldelse er det, I glemmer bagefter. Brugeren skal kunne sige nej i morgen. Så skal I slukke de tags, slette de cookies I kan, og lade politikken sige hvordan. Hvis "administrer cookies" linker til en død anker, har I bygget et museum. Sæt det i footeren, og test at et nej faktisk fjerner kaldet ved næste load.
Hvad I typisk bør gøre i den situation, I står i
Venstre er det, I typisk har. Højre er det næste skridt, vi typisk anbefaler.
Situation
Banneret findes, men kaldene kører før et valg
Næste skridt
Gate tags. CMP uden gate er UI — ret load-rækkefølgen først
Situation
I kan ikke liste tredjeparts-domains på én side
Næste skridt
Inkognito-inventaret. Køb ikke et nyt banner, før I har listen
Situation
Marketing insisterer på at alle pixels er "essentielle"
Næste skridt
Slå dem fra en uge. Virker sitet, var de ikke essentielle
Situation
I har en kundeportal med login bag sitet
Næste skridt
Skil marketing-sitet fra app-sessionen. Portal-cookies er ikke et alibi for ads
Situation
Politikken nævner værktøjer, I ikke længere bruger
Næste skridt
Opdater teksten til netværksfanen. En gammel skabelon er et brud i slow motion
Tjekliste før I kalder sitet GDPR-klar
Hvis I mangler flere af punkterne, er banneret sat op før arbejdet — ikke omvendt.
- Reject er synlig på første skærm og koster ikke flere klik end accept
- Et rent reject-load viser ikke marketing- eller replay-kald
- Hvert tredjeparts-domain har formål, grundlag og en databehandler I kan pege på
- GTM og tema-plugins fyrer ikke tags med default-on ved ukendt samtykke
- Privatlivspolitik og cookie-liste matcher det, I faktisk loader efter ja
- Brugeren kan ændre valget senere, og det slukker kaldet ved næste load
Spørgsmål vi får igen og igen
Må vi bruge Google Analytics uden samtykke?
Ikke som det oftest er sat op. Et klient-id, der følger en browser, blandet med ads eller delt med andre produkter, er sjældent det, I kan kalde strengt nødvendigt — og legitim interesse er ikke et frirum, I kan påberåbe jer uden at have tænkt minimering og indsigelse. Cookieless, første-parts, aggregeret måling kan være et andet design. Det kræver, at I faktisk har slået det andet fra. Spørg en jurist om jeres konkrete setup. Antag ikke at et GA-snippet i head er harmløst.
Er et cookie-banner nok til at overholde GDPR?
Nej. Banneret er samtykke-UI til det, der kræver samtykke. GDPR er også formål, databehandlere, sletning, indsigt, minimering og at I ikke samler ind "fordi feltet var på formularen". Et site uden banner og uden tracking kan være mere ærligt end et site med banner og tolv pixels. Start med inventaret. Så ved I, om I overhovedet har brug for et CMP.
Hvad med chat-widgets og AI-assistenter på sitet?
Hvis scriptet loader på alle sider og sender URL, snippet eller formularfelter til en leverandør, er det en behandling — ofte før nogen har bedt om hjælp. Gate det bag samtykke eller bag et bevidst klik, hav en DPA, og skriv det i politikken. En assistent der først vågner efter "åbn chat", og som ikke lækker siden i baggrunden, er et andet produkt end en tracker med en taleboble på.
Tæller server-side tagging som at vi "ikke tracker i browseren"?
Nej. I har flyttet røret. Formålet og modtageren er de samme, hvis I stadig sender de samme events. Det kan være fornuftigt af performance- og kontrolhensyn. Det fjerner ikke pligten til grundlag, og det fjerner ikke, at I skal kunne slukke for det, der kræver samtykke. En CNAME der ligner jer, men tilhører en vendor, er stadig deres behandling — bare sværere at få øje på.
Hvad skal vi kræve af et bureau, der "sætter GDPR op"?
Et inventar af kald, et banner hvor reject er ærligt, gates der er testet i tre tilstande, og en politik der matcher. Hvis de kun kan levere et plugin og en standardtekst, har de sat UI op. Bed om et screenshot af netværksfanen efter reject. Hvis den ikke er kedelig, er opgaven ikke færdig — uanset hvad tilbuddet kaldte det.
Hvis banneret siger ét, og netværksfanen noget andet
Lad os kortlægge de kald, sitet faktisk laver.
En eftermiddag med inventar, gates og en ærlig reject-sti er ofte nok til at skille et rigtigt samtykke fra et banner, I har sat for at få ro.
