Niko KarppinenJulkaistu Päivitetty
Cookiebot-opas
Vaiheittainen opas Cookiebotin käyttöönottoon sekä Google Consent Moden, Microsoft UET:n ja Clarityn suostumustilojen määrittämiseen ja testaamiseen.

Pyydä tekoälyä tiivistämään:
Tässä oppaassa Cookiebot asennetaan suoraan verkkosivustolle. Ohje etenee skriptien lisäämisestä toiminnan tarkistamiseen selaimessa. Sivuston ylläpitäjä saa ohjeet toteutukseen, markkinoinnin ja analytiikan asiantuntija suostumustilojen tarkistamiseen ja kehittäjä kopioitavat koodit muokattaviksi.
Ennen aloittamista
Opas käsittelee suoraan sivustolle tehtävää toteutusta: suostumuksen oletustilat ja Cookiebot-tagi lisätään sivuston <head>-osioon. Tarvitset Cookiebotin verkkotunnusryhmän tunnuksen (Domain Group ID) sekä pääsyn sivuston lähdekoodiin tai sisällönhallintajärjestelmän toimintoon, jolla skriptejä voi lisätä <head>-osioon.
Älä käytä näitä skriptejä yhdessä Google Tag Managerin Cookiebot CMP -mallipohjan tai muun suostumuksen oletustiloja ja päivityksiä jo hallitsevan integraation kanssa. Tarkista tai poista nykyinen toteutus ennen jatkamista, sillä samaa suostumustilaa hallitsevat integraatiot voivat toimia ristiriitaisesti.
Opas käsittelee teknistä toteutusta eikä ratkaise sen lainmukaisuutta. Evästeluokkien, aluekohtaisten toimintatapojen, säilytysajan ja banneritekstien on vastattava sivuston käytäntöjä ja sovellettavia vaatimuksia.
Vaihe 1 – Valitse suostumuksen oletustilojen asettamistapa
Molemmat alla olevat skriptit asettavat Google Consent Mode v2:n oletustilat. Jos sivusto käyttää Microsoft Advertisingia tai Clarityä, samoilla skripteillä voi asettaa myös Microsoft UET:n ja Microsoft Clarity Consent API v2:n oletustilat. Microsoft Advertising edellyttää suostumussignaaleja ETA-alueella, Britanniassa ja Sveitsissä. UET olettaa arvon granted, jos oletustilaa ei ole asetettu, joten mukaan valitun UET-integraation oletustilaksi on asetettava denied.
Basic ja Advanced Consent Mode kuvaavat tagin latausajankohtaa, eivät sitä, kumman oletustilan asettavan skriptin kopioit. Basic-tilassa tagin lataaminen estetään, kunnes tarvittava suostumus on annettu. Advanced-tilassa tagi latautuu denied-oletustilassa ja lähettää rajattuja mittaustietoja ilman evästeitä. Tässä oppaassa Microsoft UET käyttää Basic-tilaa. Google-tagit voivat käyttää kumpaa tahansa tilaa lataussääntöjensä mukaan. Katso Googlen Basic- ja Advanced-tilojen vertailu ja Cookiebotin UET-ohje.
UET lukee vain ad_storage-arvon. Microsoft Clarity on erillinen tuote, jonka Consent API v2 lukee sekä ad_Storage-arvon (markkinointi) että analytics_Storage-arvon (tilastointi). Kun valitset palvelun mukaan, skriptit alustavat sen suostumusarvot ennen kyseisen Microsoft-tagin latautumista. Sekä UET että Clarity ovat edellyttäneet suostumussignaaleja ETA-alueen, Britannian ja Sveitsin kävijöiltä 31.10.2025 alkaen.
Edistynyt toteutus: palauta tallennetut Cookiebot-valinnat
Käytä tätä versiota vain, jos palaavien kävijöiden varhaisten sivutapahtumien käsittely edellyttää lisäkoodia ja tiimisi pystyy ylläpitämään sitä. Skripti alustaa aina Google Consent Mode v2:n. Yllä olevilla Microsoft-valinnoilla lisäät mukaan UET Consent Moden ja Clarity Consent V2:n, jotka käyttävät samoja Cookiebotin evästeluokkia.
Sijoita koodi mahdollisimman lähelle <head>-osion alkua. WordPressissä se tulee ladata ennen wp_head-hookin suorittamista.
Tämä versio toimii varman eston periaatteella (fail closed): oletuksena se hyväksyy vain nimenomaisen suostumuksen, hylkää yli 366 päivää vanhan suostumuksen ja jättää ristiriitaiset tai epäselvät samannimiset CookieConsent-evästeet huomioimatta. Jos tallennettua suostumusta ei voida vahvistaa, kaikki ei-välttämättömät signaalit jäävät denied-tilaan. Cookiebotille annetaan aikaa lähettää ajantasainen päivitys.
Aseta Consent Moden oletustila vain yhdestä lähteestä. Poista aiempi suostumuksen oletustiloja tai päivityksiä hallitseva toteutus ennen tämän alustusskriptin käyttämistä.
<!--
Cookiebotin suostumustilojen alustusskripti.
Tukee seuraavia palveluita:
- Google Consent Mode v2
- Microsoft UET Consent Mode
- Microsoft Clarity Consent V2
SIJOITUS:
Suoraan <head>-osioon ennen seuraavia skriptejä:
1. Cookiebot
2. Google Tag Manager
3. gtag.js
4. Microsoft UET
5. Microsoft Clarity
Ei async- tai defer-attribuuttia.
Suositus: sijoita skripti inline-muodossa suoraan <head>-osioon, jotta Consent Moden oletustila asetetaan mahdollisimman aikaisin.
Jos käytetään ulkoista tiedostoa, sen on latauduttava synkronisesti ennen Cookiebotia, GTM:ää, gtag.js:ää, Microsoft UET:tä ja Clarityä.
TARKOITUS:
- Palauttaa palaavan kävijän aiemman Cookiebot-suostumuksen heti.
- Antaa varhaisten tapahtumien käyttää tallennettua suostumustilaa.
- Jos tallennettua suostumusta ei voida vahvistaa luotettavasti,
kaikki ei-välttämättömät signaalit jäävät denied-tilaan.
- Cookiebot säilyy suostumustietojen lähteenä ja päivittää tilan myöhemmin.
- Samoja Cookiebotin evästeluokkia käytetään Googlen,
Microsoft UET:n ja Microsoft Clarityn suostumustiloissa.
VASTAAVUUDET:
Cookiebot marketing
→ Google ad_storage
→ Google ad_user_data
→ Google ad_personalization
→ Microsoft UET ad_storage
→ Microsoft Clarity ad_Storage
Cookiebot statistics
→ Google analytics_storage
→ Microsoft Clarity analytics_Storage
Cookiebot preferences
→ Google functionality_storage
→ Google personalization_storage
HUOMAUTUS:
Aseta Consent Moden oletustila vain yhdestä lähteestä.
Poista aiempi oletustiloja tai päivityksiä hallitseva toteutus
ennen tämän skriptin käyttämistä.
-->
<script type="text/javascript" data-cookieconsent="ignore">
(function (window, document) {
'use strict';
/*
* ASETUKSET
*/
var CONFIG = {
/*
* Cookiebotin tallentaman suostumusevästeen nimi.
*/
cookieName: 'CookieConsent',
/*
* Kuinka kauan Google-tagit odottavat Cookiebotia, jos aiempaa
* kelvollista suostumusta ei löydy.
*
* 0 = ei odotusta.
*/
waitForUpdate: 1500,
/*
* Tallennetun suostumuksen sallittu enimmäisikä päivinä.
*
* 0 = ikätarkistus pois käytöstä.
*/
maxConsentAgeDays: 366,
/*
* Hyväksy alustuksen aikana vain nimenomainen suostumus.
*
* ETA/GDPR-toteutuksessa arvo on yleensä true.
*/
requireExplicit: true,
/*
* Google Consent Mode -asetukset.
*/
adsDataRedaction: true,
urlPassthrough: false,
/*
* Valinnaiset Microsoftin suostumusintegraatiot.
*/
includeMicrosoftUet: true,
includeMicrosoftClarity: true,
/*
* Ota käyttöön vain, jos sivusto käyttää IAB TCF:ää.
*/
enableTcfSupport: false,
/*
* Virheenkorjaustila.
*
* true = lisää dataLayeriin consent_bootstrap- ja
* consent_microsoft_update-tapahtumat.
*/
debug: false,
/*
* Cookiebotin evästeluokat → Google Consent Moden signaalit.
*/
mapping: {
marketing: [
'ad_storage',
'ad_user_data',
'ad_personalization'
],
statistics: [
'analytics_storage'
],
preferences: [
'functionality_storage',
'personalization_storage'
]
}
};
/*
* TÄSSÄ SKRIPTISSÄ KÄYTETTÄVÄT COOKIEBOT-KENTÄT
*
* Muut kentät ohitetaan jäsentämisessä.
* Myös ver ja stamp ovat mukana, jotta niiden toistuminen
* johtaa evästeen hylkäämiseen epäselvänä.
*/
var ALLOWED_FIELDS = {
necessary: true,
preferences: true,
statistics: true,
marketing: true,
method: true,
utc: true,
ver: true,
stamp: true
};
/*
* DATALAYER + GTAG
*/
if (
!window.dataLayer ||
typeof window.dataLayer.push !== 'function'
) {
window.dataLayer = [];
}
function gtag() {
window.dataLayer.push(arguments);
}
/*
* MICROSOFT CLARITYN JONO
*
* Mahdollistaa Clarity Consent V2 -komentojen lisäämisen jonoon
* ennen Clarity-skriptin latautumista.
*
* Määritellään ennen toistuvan suorituksen estoa, jotta jono
* on olemassa myös silloin, kun skripti suoritetaan kahdesti.
*/
if (CONFIG.includeMicrosoftClarity) {
window.clarity = window.clarity || function () {
window.clarity.q =
window.clarity.q || [];
window.clarity.q.push(arguments);
};
}
/*
* TOISTUVAN SUORITUKSEN ESTO
*/
if (window.__cmBootstrapDone) {
return;
}
/*
* OLETUSTILA
*
* Kaikkien hallittavien ei-välttämättömien signaalien
* oletusarvo on denied. Vahvistettu suostumus voi muuttaa
* signaalin arvon denied-arvosta granted-arvoksi.
*/
function createDeniedState() {
return {
ad_storage: 'denied',
ad_user_data: 'denied',
ad_personalization: 'denied',
analytics_storage: 'denied',
functionality_storage: 'denied',
personalization_storage: 'denied',
security_storage: 'granted'
};
}
var consent = null;
var state = createDeniedState();
/*
* TALLENNETUN COOKIEBOT-SUOSTUMUKSEN LUKEMINEN
*
* Jos evästeen käsittelyssä tapahtuu virhe, käytetään
* varmaa denied-oletustilaa.
*/
try {
if (CONFIG.enableTcfSupport) {
window.gtag_enable_tcf_support = true;
}
consent =
readStoredConsent();
if (consent) {
/*
* Vain vahvistetut, arvon true saaneet evästeluokat
* voivat muuttaa signaalin arvoksi granted.
*/
for (var category in CONFIG.mapping) {
if (
!Object.prototype.hasOwnProperty.call(
CONFIG.mapping,
category
)
) {
continue;
}
if (
consent[category] !== true
) {
continue;
}
var signals =
CONFIG.mapping[category];
for (
var i = 0;
i < signals.length;
i++
) {
state[signals[i]] =
'granted';
}
}
} else if (
CONFIG.waitForUpdate > 0
) {
/*
* Aiempaa vahvistettua suostumusta ei löytynyt.
*
* Pidetään ei-välttämättömät signaalit denied-tilassa ja
* annetaan Cookiebotille aikaa lähettää päivitys.
*/
state.wait_for_update =
CONFIG.waitForUpdate;
}
} catch (error) {
/*
* Viimeinen varmistus.
*/
consent = null;
state = createDeniedState();
if (
CONFIG.waitForUpdate > 0
) {
state.wait_for_update =
CONFIG.waitForUpdate;
}
}
/*
* GOOGLE CONSENT MODE
*/
gtag(
'consent',
'default',
state
);
/*
* Oletustilan asettava komento on nyt lisätty jonoon.
* Merkitään alustus heti suoritetuksi, jotta toistuva suoritus
* ei lähetä oletustilaa uudelleen, vaikka myöhempi toiminto
* epäonnistuisi.
*/
window.__cmBootstrapDone = true;
gtag(
'set',
'ads_data_redaction',
CONFIG.adsDataRedaction
);
gtag(
'set',
'url_passthrough',
CONFIG.urlPassthrough
);
/*
* MICROSOFT UET CONSENT MODE
*
* UET käyttää vain ad_storage-arvoa.
* Ilman erikseen asetettua oletustilaa UET olettaa arvon granted.
* Siksi oletustilaksi lähetetään denied aina, kun UET on mukana.
*
* Lähetetyt arvot tallennetaan paikallisiin muuttujiin, koska
* UET näyttää nykyisen tilan alkuperäisen oletustilan sijaan.
* Arvot raportoidaan virheenkorjauksen dataLayer-tapahtumissa.
* Niitä ei tallenneta window-objektiin, jotta sivun muu koodi
* ei voi ylikirjoittaa niitä.
*/
var uetConsentDefault = null;
var uetConsentUpdate = null;
if (CONFIG.includeMicrosoftUet) {
window.uetq =
window.uetq || [];
uetConsentDefault = 'denied';
window.uetq.push(
'consent',
'default',
{
ad_storage: uetConsentDefault
}
);
}
/*
* Palaava kävijä, jonka tallennettu suostumus on vahvistettu.
*/
if (
CONFIG.includeMicrosoftUet &&
consent
) {
uetConsentUpdate =
state.ad_storage;
window.uetq.push(
'consent',
'update',
{
ad_storage: uetConsentUpdate
}
);
}
/*
* MICROSOFT CLARITY CONSENT V2
*/
var lastClarityAdStorage = null;
var lastClarityAnalyticsStorage = null;
function setClarityConsent(
adStorage,
analyticsStorage
) {
if (!CONFIG.includeMicrosoftClarity) {
return;
}
/*
* Estetään saman tilan lähettäminen toistuvasti.
*/
if (
adStorage ===
lastClarityAdStorage &&
analyticsStorage ===
lastClarityAnalyticsStorage
) {
return;
}
window.clarity(
'consentv2',
{
ad_Storage:
adStorage,
analytics_Storage:
analyticsStorage
}
);
lastClarityAdStorage =
adStorage;
lastClarityAnalyticsStorage =
analyticsStorage;
}
setClarityConsent(
state.ad_storage,
state.analytics_storage
);
/*
* COOKIEBOTIN SUOSTUMUSPÄIVITYKSET
*
* Pitää Microsoft UET:n ja Clarityn suostumustilat ajan tasalla
* Cookiebotin kanssa myös kävijän myöhempien muutosten jälkeen.
*
* Googlen tilaa ei päivitetä tässä. Cookiebot lähettää itse
* gtag-suostumuspäivityksen, joten lisäpäivitys lähettäisi sen kahdesti.
*
* Cookiebot välittää suostumuksen myös UET:lle ja Claritylle.
* Nämä komennot lähettävät siis yleensä saman arvon uudelleen.
* Ne ovat päivitysten ainoa lähde, jos Cookiebot-skriptin
* data-ms-consent-mode- tai data-ms-clarity-consent-mode-attribuutin
* arvoksi on asetettu disabled.
*/
window.addEventListener(
'CookiebotOnConsentReady',
function () {
if (
typeof window.Cookiebot ===
'undefined' ||
!window.Cookiebot.consent
) {
return;
}
var marketingState =
window.Cookiebot.consent.marketing
? 'granted'
: 'denied';
var statisticsState =
window.Cookiebot.consent.statistics
? 'granted'
: 'denied';
/*
* Microsoft UET
*/
if (
CONFIG.includeMicrosoftUet &&
uetConsentUpdate !==
marketingState
) {
uetConsentUpdate =
marketingState;
window.uetq.push(
'consent',
'update',
{
ad_storage:
marketingState
}
);
}
/*
* Microsoft Clarity
*/
setClarityConsent(
marketingState,
statisticsState
);
if (CONFIG.debug) {
window.dataLayer.push({
event:
'consent_microsoft_update',
microsoft_uet_ad_storage:
CONFIG.includeMicrosoftUet
? marketingState
: null,
clarity_ad_storage:
CONFIG.includeMicrosoftClarity
? marketingState
: null,
clarity_analytics_storage:
CONFIG.includeMicrosoftClarity
? statisticsState
: null
});
}
},
false
);
/*
* VIRHEENKORJAUS
*/
if (CONFIG.debug) {
window.dataLayer.push({
event:
'consent_bootstrap',
consent_bootstrap_source:
consent
? 'stored_cookie'
: 'default_denied',
consent_bootstrap_preferences:
consent
? consent.preferences
: false,
consent_bootstrap_statistics:
consent
? consent.statistics
: false,
consent_bootstrap_marketing:
consent
? consent.marketing
: false,
google_ad_storage:
state.ad_storage,
google_analytics_storage:
state.analytics_storage,
microsoft_uet_default:
uetConsentDefault,
microsoft_uet_update:
uetConsentUpdate,
clarity_ad_storage:
CONFIG.includeMicrosoftClarity
? state.ad_storage
: null,
clarity_analytics_storage:
CONFIG.includeMicrosoftClarity
? state.analytics_storage
: null
});
}
/*
* EVÄSTEIDEN KÄSITTELY
*/
/*
* Lukee ja tarkistaa tallennetun Cookiebot-suostumuksen.
*
* Palauttaa arvon null, jos tilaan ei voi luottaa:
* eväste puuttuu, sitä ei voi jäsentää tai kahden
* CookieConsent-evästeen suostumusvalinnat poikkeavat toisistaan.
*/
function readStoredConsent() {
var values =
findCookieValues(
CONFIG.cookieName
);
if (!values.length) {
return null;
}
var accepted = null;
for (
var i = 0;
i < values.length;
i++
) {
var parsed =
parseConsent(
values[i]
);
if (!parsed) {
return null;
}
if (
accepted &&
!isSameConsent(
accepted,
parsed
)
) {
return null;
}
accepted = parsed;
}
return accepted;
}
function findCookieValues(name) {
var values = [];
var raw;
try {
raw =
document.cookie;
} catch (error) {
return values;
}
if (!raw) {
return values;
}
var parts =
raw.split(';');
for (
var i = 0;
i < parts.length;
i++
) {
var part =
trim(
parts[i]
);
var separator =
part.indexOf('=');
if (
separator === -1
) {
continue;
}
var cookieName =
part.slice(
0,
separator
);
if (
cookieName !== name
) {
continue;
}
var value =
part.slice(
separator + 1
);
if (value) {
values.push(value);
}
}
return values;
}
/*
* Tarkistaa yhden CookieConsent-arvon.
*
* Jokaisen valinnaisen evästeluokan on oltava totuusarvo,
* necessary-arvon on oltava true ja suostumuksen riittävän tuore.
* Kun requireExplicit on käytössä, oletettua suostumusta ei hyväksytä.
*/
function parseConsent(
rawValue
) {
var decoded;
try {
decoded =
decodeURIComponent(
rawValue
);
} catch (error) {
/*
* Evästeen arvo voi olla jo valmiiksi dekoodattu.
*/
decoded =
rawValue;
}
var fields =
readFields(
decoded
);
if (!fields) {
return null;
}
if (
fields.necessary !==
'true'
) {
return null;
}
if (
!isBoolean(
fields.preferences
)
) {
return null;
}
if (
!isBoolean(
fields.statistics
)
) {
return null;
}
if (
!isBoolean(
fields.marketing
)
) {
return null;
}
if (
CONFIG.requireExplicit
) {
if (
!fields.method ||
String(
fields.method
).toLowerCase() !==
'explicit'
) {
return null;
}
}
if (
!isRecent(
fields.utc
)
) {
return null;
}
return {
preferences:
fields.preferences ===
'true',
statistics:
fields.statistics ===
'true',
marketing:
fields.marketing ===
'true'
};
}
/*
* Lukee Cookiebot-evästeen kentät.
*
* Tukee esimerkiksi seuraavia muotoja:
* necessary:true
* method:'explicit'
* method:"explicit"
* utc:1683027386232
*
* Tunnetun avaimen toistuminen tekee rakenteesta epäselvän,
* joten koko eväste hylätään.
*/
function readFields(text) {
var fields = {};
var pattern =
/([A-Za-z_][A-Za-z0-9_]*)\s*:\s*(?:'([^']*)'|"([^"]*)"|([^,}\]]*))/g;
var match;
while (
(match =
pattern.exec(text)) !==
null
) {
var key =
String(
match[1]
).toLowerCase();
if (
!Object.prototype.hasOwnProperty.call(
ALLOWED_FIELDS,
key
)
) {
continue;
}
if (
Object.prototype.hasOwnProperty.call(
fields,
key
)
) {
return null;
}
var value;
if (
match[2] !==
undefined
) {
value =
match[2];
} else if (
match[3] !==
undefined
) {
value =
match[3];
} else {
value =
match[4] || '';
}
fields[key] =
trim(value);
}
return fields;
}
function isBoolean(value) {
return (
value === 'true' ||
value === 'false'
);
}
/*
* Tarkistaa suostumuksen iän.
*
* Cookiebot tallentaa utc-arvon yleensä epoch-millisekunteina.
* Epoch-sekunneilta näyttävä arvo muunnetaan millisekunneiksi.
* Tulevaisuuteen päivätty suostumus hylätään.
*/
function isRecent(value) {
if (
CONFIG.maxConsentAgeDays <=
0
) {
return true;
}
if (!value) {
return false;
}
var timestamp;
if (
/^\d+$/.test(value)
) {
timestamp =
Number(value);
if (
!isFinite(timestamp) ||
timestamp <= 0
) {
return false;
}
if (
timestamp <
100000000000
) {
timestamp =
timestamp * 1000;
}
} else {
/*
* Varatapa mahdollisia muita muotoja varten.
*/
timestamp =
Date.parse(value);
}
if (
!timestamp ||
isNaN(timestamp)
) {
return false;
}
var age =
new Date().getTime() -
timestamp;
if (age < 0) {
return false;
}
var maxAge =
CONFIG.maxConsentAgeDays *
24 *
60 *
60 *
1000;
return (
age <= maxAge
);
}
function isSameConsent(
a,
b
) {
return (
a.preferences ===
b.preferences &&
a.statistics ===
b.statistics &&
a.marketing ===
b.marketing
);
}
function trim(value) {
return String(value)
.replace(
/^\s+|\s+$/g,
''
);
}
})(window, document);
</script>
Suositus: aloita denied-oletustiloista
Tämä versio sopii useimpiin suoraan sivustolle tehtäviin toteutuksiin. Se asettaa oletustilan heti ja antaa Cookiebotin päivittää suostumustilan latauduttuaan.
Sijoita koodi mahdollisimman lähelle <head>-osion alkua. WordPressissä se tulee ladata ennen wp_head-hookin suorittamista.
Pidä Microsoft UET -tagin lataaminen estettynä Basic Consent Modessa, kunnes markkinointisuostumus on annettu. Kun valitset UET:n mukaan, luotu skripti alustaa window.uetq-jonon ja asettaa oletustilaksi denied. Cookiebot välittää kävijän ajantasaisen markkinointisuostumuksen samaan jonoon automaattisesti. Älä lisää tähän ehdotonta granted-päivitystä, sillä se suoritettaisiin ennen kävijän valintaa.
Clarity-valinta lisää jonoon molempien tallennustyyppien denied-oletustilat ennen Clarityn latautumista. Pidä Cookiebotin automaattiset integraatiot käytössä, jotta se voi välittää myöhemmät suostumusmuutokset.
Vaihe 2 – Lisää Cookiebot verkkosivustolle
Sijoita luotu Cookiebot-tagi ensimmäiseksi skriptiksi <head>-osioon. Tämä on erityisen tärkeää automaattista estoa käytettäessä, sillä ennen Cookiebotia latautuvat skriptit voivat jäädä sen hallinnan ulkopuolelle.
- Automaattinen esto käyttää
data-blockingmode="auto"-attribuuttia. Älä käytä sen kanssaasync- taidefer-attribuuttia. - Manuaalisessa estossa Cookiebot ladataan
async-attribuutilla. Merkitse silloin jokaiseen ei-välttämättömään skriptiin, iframeen ja kuvaan oikea suostumusluokka. Katso Cookiebotin automaattisen eston ja manuaalisen eston ohjeet.
Jos WordPress-lisäosa lisää sivulle Google Tag Managerin, tarkista lopullinen sivun lähdekoodi lisäosan asetusten lisäksi. Tässä toteutuksessa Cookiebotin on suorituttava ennen Google Tag Manageria ja muita tageja, jotka voivat asettaa ei-välttämättömiä evästeitä.
Edistynyt toteutus: poista automaattinen suostumusintegraatio käytöstä
Luotu tagi pitää Cookiebotin Google-, Microsoft UET- ja Microsoft Clarity -suostumusintegraatiot käytössä. Lisää käytöstä poistava attribuutti käsin vain, jos oma toteutuksesi hallitsee kyseisen palvelun kaikki suostumuspäivitykset: hyväksymisen ja kieltämisen, myöhemmät muutokset, suostumuksen peruuttamisen sekä palaavien kävijöiden suostumukset.
| Omalla koodilla korvattava integraatio | Cookiebot-tagiin lisättävä attribuutti |
|---|---|
| Google Consent Mode | data-consentmode="disabled" |
| Microsoft UET Consent Mode | data-ms-consent-mode="disabled" |
| Microsoft Clarity Consent Mode | data-ms-clarity-consent-mode="disabled" |
Poista käytöstä vain integraatio, jonka korvaat omalla toteutuksellasi. Jos palvelua ei käytetä lainkaan, jätä sen tagi ja siihen liittyvä koodi pois.
Valitse kiinteä kieli, jos sivuston kunkin kieliversion tulee näyttää banneri samalla kielellä. Valitse automaattinen kielentunnistus, jos Cookiebotin tulee käyttää kävijän selaimen kieltä.
Näytä kaikki data-culture-kielikoodit
| Kieli | data-culture-koodi |
|---|---|
| Arabia | AR |
| Bulgaria | BG |
| Katalaani | CA |
| Tšekki | CS |
| Kymri | CY |
| Tanska | DA |
| Saksa | DE |
| Nykykreikka | EL |
| Englanti | EN |
| Espanja | ES |
| Viro | ET |
| Baski | EU |
| Suomi | FI |
| Ranska | FR |
| Iiri | GA |
| Heprea | HE |
| Hindi | HI |
| Kroatia | HR |
| Unkari | HU |
| Indonesia | ID |
| Islanti | IS |
| Italia | IT |
| Japani | JA |
| Korea | KO |
| Liettua | LT |
| Latvia | LV |
| Makedonia | MK |
| Malaiji | MS |
| Norjan bokmål | NB |
| Hollanti | NL |
| Puola | PL |
| Portugali | PT |
| Brasilianportugali | PT-BR |
| Romania | RO |
| Venäjä | RU |
| Sinhala | SI |
| Slovakki | SK |
| Sloveeni | SL |
| Albania | SQ |
| Serbia | SR |
| Ruotsi | SV |
| Tamili | TA |
| Thai | TH |
| Turkki | TR |
| Ukraina | UK |
| Vietnam | VI |
| Kiina | ZH |
| Perinteinen kiina | ZH-HANT |
Vaihe 3 – Lisää evästeluettelo evästesivulle
Evästeluettelo (Cookie Declaration) on valinnainen. Lisää se sivulle, jolla haluat luetella sivustolta löydetyt evästeet ja seurantatekniikat, esimerkiksi evästesivulle. Luettelo käyttää vaiheessa 2 annettua verkkotunnusryhmän tunnusta. Voit valita sen kielen erikseen.
Vaihe 4 – Lisää painike evästeasetusten muuttamiseen
Cookiebotin Privacy Trigger -painikkeella kävijä voi jo muuttaa tai peruuttaa suostumuksensa. Jos haluat tarjota toisen tavan avata asetukset, lisää painike alatunnisteeseen tai tietosuojasivulle. Painike toimii Cookiebot-skriptin latauduttua.
<button type="button" onclick="Cookiebot.renew()">
Muokkaa evästeasetuksia
</button>
Vaihe 5 – Tarkista suostumustilat ja tagien toiminta
Tarkista Googlen suostumustilat ensisijaisesti Google Tag Assistantilla: varmista, että ensimmäinen Consent-tapahtuma sisältää oletustilan ja viimeisin Consent-tapahtuma päivityksen. Alla oleva konsolikoodi tarjoaa täydentävän tarkistuksen Googlen, UET:n ja Clarityn tiloista nykyisellä sivulla.
Tarkista ennen suostumuksen antamista seuraavat asiat:
- Kaikkien Google-signaalien arvo on
denied, paitsisecurity_storage-signaalin. - UET:n
ad_storage-oletusarvo ondenied, tai tagin lataaminen on estetty Basic-tilassa. - Clarityn molempien tallennustyyppien arvo on
DENIED.
Suorita koodi uudelleen suostumuksen antamisen ja peruuttamisen jälkeen. Varmista, että suostumustilat päivittyvät molemmissa tapauksissa.
(() => {
// Määritellään funktion sisällä, jotta koodin voi suorittaa toistuvasti.
const consentStatusString = status =>
status === undefined ? "" : status ? "granted" : "denied";
const consentStatusColor = status =>
status === "granted" ? "color: #4AF626" : "color: #ef2929";
/* =========================================================
GOOGLE CONSENT MODE
========================================================= */
console.log(
"%cGoogle Consent Mode",
"font-weight: bold; font-size: 16px;"
);
if (
!("google_tag_data" in window) ||
!window.google_tag_data?.ics?.entries
) {
console.log("Consent Mode -tietoja ei löytynyt");
} else {
const consentEntries = window.google_tag_data.ics.entries;
// Käy läpi kaikki suostumussignaalit paitsi 'wait_for_update'.
for (const entry in consentEntries) {
if (entry === "wait_for_update") continue;
const defaultStatus = consentStatusString(
consentEntries[entry]["default"]
);
const updateStatus = consentStatusString(
consentEntries[entry]["update"]
);
console.log(
`%c${entry}`,
"font-weight: bold; font-size: 14px;"
);
// Oletustila
if (defaultStatus !== "") {
console.log(
`\tdefault: %c${defaultStatus}`,
consentStatusColor(defaultStatus)
);
} else {
console.log("\tdefault: ei löytynyt");
}
// Päivitetty tila
if (updateStatus !== "") {
console.log(
`\tupdate: %c${updateStatus}`,
consentStatusColor(updateStatus)
);
} else {
console.log("\tupdate: ei löytynyt");
}
}
// wait_for_update
if ("wait_for_update" in consentEntries) {
console.log(
"%cwait_for_update",
"font-weight: bold; font-size: 14px;"
);
const initialConfig = window.dataLayer?.find(
item =>
item?.[0] === "consent" &&
item?.[1] === "default"
);
const waitForUpdate =
initialConfig?.[2]?.wait_for_update ?? "ei löytynyt";
console.log(
`\tdefault: %c${waitForUpdate}`,
"color: #FFA500"
);
}
}
/* =========================================================
MICROSOFT UET
========================================================= */
console.log(
"%cMicrosoft UET",
"font-weight: bold; font-size: 16px;"
);
console.log(
window.uetq ?? "UET-tietoja ei löytynyt"
);
/* =========================================================
MICROSOFT CLARITYN SUOSTUMUS
========================================================= */
console.log(
"%cMicrosoft Clarity",
"font-weight: bold; font-size: 16px;"
);
if (typeof window.clarity === "function") {
clarity(
"metadata",
(d, upgrade, consent) => {
console.log("consentStatus:", consent);
},
false,
true,
true
);
} else {
console.log("Clarity-tietoja ei löytynyt");
}
})();
Lähde: https://karppinen.one/fi/toteutusmallit/cookiebot-opas/
Jutun erittely
- SANAT
- 4 188
- Kelpo määrä tekstiä.
- OTSIKOT
- 8
- Väljä rakenne.
- LUKUAIKA
- 21 min
- Selviät kyllä.
- LINKIT
- 5
- Polkuja jonnekin.
- KOODILOHKOT
- 6
- Hieman teknistä.
- KUVAT
- 0
- Sekin on rohkea valinta.

