Installationsguide

Consentaur installeres med en enkelt linje kode. Denne guide forklarer hvordan du installerer scriptet korrekt, så dine tracking-scripts først kører, når dine besøgende har givet samtykke.


Hurtig installation

Kopier dit personlige script-tag fra dit dashboard og indsæt det i din hjemmesides <head> sektion:

<head>
<script src="https://cdn.consentaur.com/v1/DIT_SITE_ID.js"></script><!-- SKAL være først -->
<!-- Dine andre scripts herunder -->
<script src="https://www.googletagmanager.com/gtag/js?id=..."></script>
...
</head>

Hvor finder jeg mit Site ID?

DIT_SITE_ID i eksemplerne ovenfor er en pladsholder. Du skal erstatte det med dit faktiske, unikke site-ID.

Dit personlige script-tag, med det korrekte site-ID allerede indsat, kan kopieres direkte fra dit Consentaur dashboard. Gå til dit site og åbn siden Script. Den færdige kode er klar til at indsætte, du behøver ikke ændre noget.

Eksempel: Hvis dit site-ID er site_3f9a1c2b7d4e, vil dit script-tag se sådan ud:
<script src="https://cdn.consentaur.com/v1/site_3f9a1c2b7d4e.js"></script>

Vigtigt: Placering

Scriptet skal være det allerførste <script>-tag i din <head> sektion. Kun på den måde kan Consentaur nå at blokere cookies fra Google Analytics, Meta Pixel og andre tjenester, inden de indlæses.

Hvorfor skal scriptet stå først?

Browseren indlæser scripts oppefra og ned. Hvis Google Analytics-scriptet står over Consentaur, vil Google Analytics nå at sætte cookies, før Consentaur kan blokere dem. Ved at placere Consentaur som det første script, kan det:

  • Sætte Google Consent Mode v2 til "denied" som standard, inden Google-scripts indlæses
  • Overvåge og blokere alle efterfølgende scripts, der forsøger at sætte cookies uden samtykke
  • Vise cookiebanneret så hurtigt som muligt

Platformguider

WordPress

Med et plugin (anbefalet): Installer et plugin som Insert Headers and Footers (WPCode). Gå til pluginnets indstillinger og indsæt Consentaur-scriptet i "Header"-feltet. Sørg for at det står øverst, før eventuelle andre scripts.

Manuelt: Rediger dit temas header.php fil. Find <head>-tagget og indsæt Consentaur-scriptet lige efter:

<head>
  <script src="https://cdn.consentaur.com/v1/DIT_SITE_ID.js"></script>
  <?php wp_head(); ?>
</head>

Erstat DIT_SITE_ID med dit faktiske site-ID fra dit dashboard.

Shopify

Gå til Online Store → Themes → Edit code. Åbn theme.liquid og indsæt Consentaur-scriptet lige efter <head>-tagget, før alle andre scripts:

<head>
  <script src="https://cdn.consentaur.com/v1/DIT_SITE_ID.js"></script>
  {{ content_for_header }}
  ...
</head>

Erstat DIT_SITE_ID med dit faktiske site-ID fra dit dashboard.

Wix

Gå til Indstillinger → Tilpasset kode. Tilføj Consentaur-scriptet og vælg "Head" som placering. Vælg at det skal indlæses på "Alle sider".

Squarespace

Gå til Settings → Advanced → Code Injection. Indsæt Consentaur-scriptet i "Header"-feltet.

Custom / HTML

Indsæt scriptet direkte i din HTML-skabelon som det første script i <head>. Scriptet bør ikke have async eller defer attributter: det skal indlæses synkront for at kunne blokere andre scripts.

Manuel cookie-blokering

Consentaur blokerer automatisk scripts fra tredjepartsdomæner, der satte cookies under scanningen, også scripts som en tag manager eller anden kode tilføjer senere. Den genkender også kendte trackere, der sætter deres cookies på dit eget domæne, fx Meta Pixel, Hotjar, TikTok og LinkedIn, når scanningen har fundet deres cookies. Googles tags er dækket af Google Consent Mode (se nedenfor). Markér alle andre scripts med type="text/plain" og data-consentaur-category. Så kører browseren dem slet ikke, og Consentaur starter dem, når den besøgende giver samtykke til kategorien:

<!-- Kører, når den besøgende giver samtykke til marketing -->
<script
  type="text/plain"
  data-consentaur-category="marketing"
  src="https://example.com/tracking.js"
></script>

<!-- Kører, når den besøgende giver samtykke til statistik -->
<script type="text/plain" data-consentaur-category="analytics">
  // Inline analytics-kode
</script>

Scripts kører i den rækkefølge, de står på siden. Til et JavaScript-modul tilføjer du data-consentaur-type="module".

Scripts til login, CAPTCHA og betaling blokeres aldrig automatisk, så de virker også før samtykke: log ind med Google, Apple eller Microsoft, reCAPTCHA, hCaptcha, Cloudflare Turnstile, Stripe, PayPal og Klarna. Ved Meta Pixel blokerer Consentaur pixelens egne scripts, ikke det Facebook SDK, som Facebook Login bruger. Bruger du Facebooks sociale plugins, fx Synes godt om-knappen, så markér SDK-scriptet som vist ovenfor, med data-consentaur-category="marketing".

Gyldige kategorier:

  • necessary: Nødvendige cookies (blokeres aldrig)
  • analytics: Statistik og analyse
  • marketing: Marketing og annoncering
  • preferences: Præferencer og funktionalitet

YouTube, Google Maps og andet indlejret indhold

Indlejret indhold som videoer fra YouTube og Vimeo, Google Maps, Spotify, SoundCloud, Instagram, X, TikTok og Facebooks plugins sætter cookies, så snart det indlæses. Consentaur holder det tilbage, indtil den besøgende giver samtykke til kategorien, og viser i stedet en boks, der siger, hvem indholdet kommer fra, med en knap, der accepterer kategorien og viser indholdet med det samme.

Consentaur fanger indlejret indhold, mens siden indlæses, men Chrome og Firefox kan nå at begynde at hente det, før et script kan stoppe det. Det sikre er at skrive data-consentaur-src i stedet for src. Så indlæser browseren det aldrig af sig selv:

<!-- Indlæses først, når den besøgende giver samtykke til marketing -->
<iframe
  data-consentaur-src="https://www.youtube.com/embed/VIDEO-ID"
  data-consentaur-category="marketing"
  width="560" height="315"
  title="Vores video"
  allowfullscreen
></iframe>

Kategorien bestemmer, hvornår indholdet vises. Uden data-consentaur-category bruger Consentaur kategorien for kendte udbydere: statistik for Vimeo og marketing for de andre. Skal en iframe aldrig holdes tilbage, fx dit eget bookingsystem, så tilføj data-consentaur-ignore. Cookie-scanningen viser i dashboardet, hvilke indlejringer på dit website der endnu ikke er markeret.

Google Consent Mode v2

Consentaur understøtter Google Consent Mode v2 automatisk. Når scriptet indlæses, sættes alle consent-signaler til "denied" som standard. Når en besøgende giver samtykke, opdateres Google Consent Mode automatisk:

  • analytics_storage: Styres af "Statistik"-kategorien
  • ad_storage, ad_user_data, ad_personalization: Styres af "Marketing"-kategorien
  • personalization_storage: Styres af "Præferencer"-kategorien
  • functionality_storage, security_storage: Altid "granted"

Du behøver ikke opsætte Google Consent Mode separat: Consentaur håndterer det for dig. Indtil den besøgende giver samtykke, kører Googles tags derfor uden cookies. Hvis de slet ikke skal indlæses før samtykke, så slå Bloker Googles tags indtil samtykke til under sitets indstillinger i dashboardet.

Consentaur kan vise en automatisk opdateret oversigt over dit websites cookies, grupperet efter kategori. Koden finder du under Cookie-deklaration på dit sites side i dashboardet. Indsæt den på din cookie- eller privatlivspolitik-side:

<script src="https://cdn.consentaur.com/v1/DIT_SITE_ID-declaration.js" defer></script>
<div data-consentaur-declaration></div>

Oversigten viser de cookies, der er registreret for dit site, og følger med, når du scanner igen. Når Consentaur-scriptet også er på siden, indeholder den et link, som besøgende kan bruge til at ændre deres samtykke.

JavaScript API

Consentaur eksponerer en global window.Consentaur instans, som du kan bruge til at styre samtykke fra din egen kode. Det er nyttigt, hvis du f.eks. vil tilføje en "Cookie-indstillinger"-knap i din footer.

Åbn samtykke-indstillinger

Vis indstillingspanelet, så brugeren kan ændre sine samtykkevalg:

// Eksempel: Tilknyt til en knap i din footer
document.getElementById('cookie-settings-btn')
  .addEventListener('click', () => {
    window.Consentaur.showSettings()
  })

Eller direkte i HTML med en inline handler:

<button onclick="window.Consentaur.showSettings()">
  Cookie-indstillinger
</button>

Du kan også give et hvilket som helst element attributten data-consentaur-settings. Så åbner det indstillingerne ved klik, helt uden JavaScript.

Hent nuværende samtykke

Læs den aktuelle samtykkestatus, f.eks. for at betinget indlæse scripts:

const consent = window.Consentaur.getConsent()
// { necessary: true, analytics: true, marketing: false, preferences: false }

if (consent?.analytics) {
  // Indlæs analytics-script manuelt
}

Vent på den besøgendes valg

Tredjeparts-widgets som chat, video og kort bør først indlæses, når den besøgende har svaret på cookiebanneret. Så ligger de ikke oven på banneret, og de sætter ingen cookies før tid. onConsent() kalder din funktion, når der er truffet et valg. Findes der allerede et gyldigt samtykke fra et tidligere besøg, kaldes den med det samme:

let chatLoaded = false

window.Consentaur.onConsent((consent) => {
  // consent.action:     'accept_all' | 'reject_all' | 'customize' | 'stored'
  // consent.categories: { necessary, analytics, marketing, preferences }
  if (chatLoaded) return
  chatLoaded = true
  loadChatWidget()   // dit eget kald, fx indsæt chat-scriptet
})

Det samme signal sendes som et event på window, hver gang samtykket besluttes eller ændres:

window.addEventListener('consentaur:consent', (event) => {
  const { action, categories } = event.detail
})

// Er der allerede truffet et valg?
window.Consentaur.hasDecided()   // true / false
Sætter din widget cookies i en kategori (fx marketing), skal den kun indlæses, når netop den kategori er accepteret: tjek consent.categories.marketing, eller lad Consentaur blokere scriptet automatisk med data-consentaur-category. At vente på et valg erstatter ikke samtykket til den enkelte kategori.

Mobil

Under Banner → Layout → "Layout på mobil" i dit dashboard kan du vælge Kompakt. På skærme op til 640 px bredde vises banneret så som én linje tekst med "Læs mere", "Afvis alle" og "Acceptér alle" side om side og "Tilpas" som et link. Valgmulighederne, kategorierne og den måde samtykket gemmes på er de samme, kun layoutet er anderledes. Kompakt fylder ca. 20 % af skærmen på en almindelig telefon mod ca. 30 % for standardlayoutet, hvor banneret vises som på desktop.

Har din hjemmeside en chat-knap eller lignende, der ellers lægger sig oven på banneret, så indlæs den først, når den besøgende har svaret. Se Vent på den besøgendes valg ovenfor.

Luk Consentaurs scanner gennem bot-beskyttelse

Consentaur scanner jævnligt din hjemmeside, så din cookieliste og dit banner er opdateret. Bot-beskyttelse som Cloudflare, DataDome, HUMAN eller Imperva kan tage scanneren for en uønsket bot og svare med en kontrol i stedet for din hjemmeside. Dit dashboard viser så, at bot-beskyttelsen blokerer scanneren, og din cookieliste kan ikke tjekkes, før scanneren kommer igennem.

Luk scanneren igennem med en hemmelig request-header, som kun du og Consentaur kender:

  1. Åbn dit sites Indstillinger i dashboardet. Under Avanceret, i Scanneradgang gennem bot-beskyttelse, vælger du Generér en hemmelighed og kopierer den.
  2. Opret en regel i din bot-beskyttelse, der springer bot-tjek over for requests med headeren X-Consentaur-Scan og præcis den hemmelighed. Se nedenfor for Cloudflare og andre udbydere.
  3. Gem headeren og hemmeligheden i dashboardet, og vælg Scan nu. Når scanningen kommer igennem, forsvinder meddelelsen.

Cloudflare

Hvad du kan gøre, afhænger af din Cloudflare-plan:

  • Pro, Business og Enterprise bruger Super Bot Fight Mode. En custom rule med handlingen Skip lukker requests med din header forbi den.
  • Free bruger Bot Fight Mode, som ingen regel kan springe over. Slå den fra under Security → Settings (filtrér på Bot traffic, og gå til Bot fight mode), eller opgrader til Pro for at få Super Bot Fight Mode.

Opret reglen i dit domænes Cloudflare-dashboard. Menunavnene følger det engelske dashboard:

  1. Gå til Security → Security rules.
  2. Vælg Create rule → Custom rules, og giv reglen et navn, f.eks. "Consentaur scanner".
  3. Under When incoming requests match vælger du Edit expression og indsætter udtrykket nedenfor med din hemmelighed i stedet for DIN-HEMMELIGHED.
  4. Under Then take action vælger du Skip, og blandt det, der skal springes over, vælger du All Super Bot Fight Mode rules. Hvis dine egne custom rules eller rate limiting rules også udfordrer bots, så vælg også All remaining custom rules og All rate limiting rules.
  5. Under Place at vælger du First, så reglen kører før dine andre custom rules, og vælg Deploy.
any(http.request.headers["x-consentaur-scan"][*] eq "DIN-HEMMELIGHED")

Cloudflare skriver headernavne med små bogstaver i udtryk, uanset hvordan de staves i requesten. Hemmeligheden sammenlignes præcist, også store og små bogstaver. Har du valgt et andet headernavn, så brug det med små bogstaver. Mens du genererer en hemmelighed, viser dashboardet udtrykket med din hemmelighed udfyldt.

Under Attack mode

Med I'm Under Attack mode slået til kontrollerer Cloudflare alle besøgende, og en custom rule kan ikke slå det fra for scanneren. Cloudflare anbefaler en configuration rule: Under Rules → Overview vælger du Create rule → Configuration Rule, bruger samme udtryk og tilføjer under Then the settings are indstillingen I'm Under Attack, som du slår fra. Så gælder det kun requests med din hemmelighed.

Med Cloudflares Bot Management til Enterprise er dine regler for bot score selv custom rules. Skip-reglen ovenfor, placeret først og med All remaining custom rules valgt, dækker dem.

Anden bot-beskyttelse

  • AWS WAF med Bot Control: tilføj et scope-down statement til den managed rule group, der hedder Bot Control, så requests, hvis X-Consentaur-Scan-header præcist matcher din hemmelighed, holdes udenfor. AWS beskriver netop det for betroede bots, der sender en fælles hemmelighed i en header. Dine andre regler gælder stadig.
  • HUMAN (Bot Defender): opret en custom policy rule med en header-betingelse på X-Consentaur-Scan og din hemmelighed og handlingen Allow, og giv den højere prioritet end de regler, der blokerer eller udfordrer.
  • DataDome: custom rules kan ikke sammenligne en headers værdi, og en regel, der kun tjekker headerens navn, ville lukke alle igennem. Bed DataDomes support om at tillade requests med din hemmelige header.
  • Akamai Bot Manager: definér scanneren som en custom bot i en kategori, du tillader. Kan din opsætning matche en request-header, så match X-Consentaur-Scan med din hemmelighed; ellers spørg dit Akamai-team.
  • Imperva: undtagelserne for bots matcher ikke på headere. Bed Imperva support om at tilføje scanneren som en god bot, der genkendes på din hemmelige header.
  • Sucuri og Wordfence: deres allowlists virker med IP-adresser eller adresser på dit site, ikke med headere. Kontakt deres support eller os på support@consentaur.com.

Hold det sikkert

  • Brug en lang, tilfældig hemmelighed. Generér en hemmelighed i dashboardet laver en ud fra 32 tilfældige bytes.
  • Spring kun bot-tjekkene over. Spring ikke managed rules over, og slå ikke hele firewallen fra for requests med headeren: alt andet skal stadig beskytte dem.
  • Skift hemmeligheden en gang imellem, og når nogen, der kendte den, stopper. Opdatér begge steder: sæt den nye hemmelighed ind i din regel, gem den i dashboardet, og fjern så den gamle. Lad reglen acceptere begge hemmeligheder, indtil du har gemt den nye, så undgår du en blokeret scanning midt imellem.
  • Consentaur gemmer hemmeligheden krypteret og viser kun de sidste tegn, når den er gemt. Scanneren sender kun headeren over HTTPS og kun til dit eget domæne og dets subdomæner (og til det domæne, din forside viderestiller til, hvis sitet er flyttet), aldrig til andre websites som analyse- eller annoncetjenester.
  • Headeren er måden at lukke scanneren igennem på. Vi offentliggør ikke scannerens IP-adresser, så en regel baseret på IP-adresser virker ikke.

Audit af sider bag et login

Scanneren besøger dit website som en anonym besøgende. Den logger aldrig ind, så den ser aldrig de cookies og gemte elementer, dit website kun sætter for brugere, der er logget ind, f.eks. en sessionscookie eller et dashboards indstillinger i lokal lagring. Med en audit viser din egen browser Consentaur, hvad de hedder.

  1. Åbn dit sites side Cookies i dashboardet, og gå til Audit, mens du er logget ind. Vælg evt. en startside (f.eks. /login), og klik på Start audit.
  2. Dit website åbner i en ny fane med en lille bjælke: Consentaur-audit kører. Log ind, og brug de sider, dine brugere bruger, når de er logget ind.
  3. Klik på Afslut i bjælken eller i dashboardet. Det, auditten fandt, står på din cookieliste markeret Set i din audit. Tjek kategorier og beskrivelser, som for scannede cookies.

Hvad auditten sender

Kun navnene på de cookies, elementer i lokal lagring og sessionslagring og IndexedDB-databaser, dine sider kan se, sammen med sidens adresse. Aldrig indholdet. Linket indeholder en engangskode efter #-tegnet, som din webserver, dens logs og din statistik aldrig modtager. Banneret fjerner den fra adresselinjen med det samme, og koden holder op med at virke, når du afslutter auditten, eller efter 30 minutter.

Auditten kører kun i den browser, du åbner linket i. Dine besøgende bliver aldrig auditeret, og deres browsere sender aldrig noget.

Login-cookies, auditten ikke kan se

De fleste login-cookies er HttpOnly: Din browser holder dem uden for rækkevidde af sidens scripts, også auditten. Under Har dit site et login? på siden Cookies kan du tilføje dem:

  • Login-biblioteker: Auth.js, NextAuth.js, Supabase, Clerk, Firebase, Django, Laravel, ASP.NET Core Identity og WordPress. Consentaur udfylder navnene ud fra det, den har fundet på dit site, og tilføjer cookies med levetiden fra bibliotekets dokumentation.
  • Egen login-cookie: navnet på din egen login-cookie, om den bevares, efter browseren er lukket, og hvor længe. Du finder den i browserens udviklerværktøjer (Application, Cookies), mens du er logget ind.

Cookies, der kun sættes efter login, vises med "Sættes kun, når du logger ind" i dit banner og din cookiedeklaration. Har dit website en Content Security Policy, skal auditten bruge de samme adresser som banneret: scripts fra cdn.consentaur.com og forespørgsler til api.consentaur.com.

Fejlfinding

Cookiebanneret vises ikke

  • Tjek at script-tagget er indsat korrekt i <head>
  • Åbn browserens konsol (F12) og kig efter fejlmeddelelser fra Consentaur
  • Hvis du allerede har givet samtykke, slet cookien consentaur_consent (og nøglen af samme navn i localStorage) og genindlæs siden

Cookies sættes før samtykke

  • Sørg for at Consentaur-scriptet er det første script i <head>
  • Fjern async og defer fra Consentaur-scriptet, hvis du har tilføjet det
  • Scan dit site igen for at opdatere listen over cookies, der skal blokeres

Content Security Policy (CSP)

Hvis din hjemmeside bruger en Content Security Policy, skal du tillade scripts fra cdn.consentaur.com:

Content-Security-Policy: script-src 'self' https://cdn.consentaur.com;