Proč je Consent Mode v2 klíčový?
- Stručně bez Consent Mode v2 vám nemusí některé funkce pro Google Analytics 4 a Google Ads správně fungovat. Nemusí se pak vytvářet publika pro remarketing a další. Týká se dnes i dalších nástrojů jako je Sklik či Microsoft Clarity.
- Co Consent Mode V2 přináší: Nutné parametry jako
ad_storage,analytics_storage,functionality_storage,personalization_storage,security_storagea nově povinné parametryad_user_dataaad_personalization. - Probereme tak v rychlosti metodu, jak implementovat CMV2 nezávisle na cookie liště.
Disclaimer: Nejsem specializovaným webovým analytikem, berte tak rady s nadhledem, že zde mohou být nepřesnosti. Každá situace navíc vyžaduje individuální zhodnocení a různé přístupy (ze zkušenosti).
Problém: Nespoléhejte se jen na Datalayer
- Běžná implementace: Cookie lišty (např. Complianz, Cookiebot, OneTrust) posílají stav souhlasu do Data Layeru (pomocí funkce gtag() či pomocí
dataLayer.push()). - Úskalí: Latence, nesprávné formátování, nebo jako v případě free verze Complianz, žádná data o souhlasu se neposílají, což znemožňuje správné spuštění CMV2.
- Poten. řešení: Extrakce stavu souhlasu přímo ze zdrojového místa – z cookie, kterou nastaví cookie lišta.
Implementace v GTM: Cookie parsing pro stav souhlasu
1. Identifikace a Extrakce Cookie
- První krok: Zjistíme, jakou cookie a jakým formátem ukládá zvolená cookie lišta stav souhlasu uživatele (např.
cc_cookie). To můžeme zjistit například přes Průzkumníka (zkratka F12) v Chrome v sekci Application. - Vytvoření GTM proměnné pro Cookie (1st party Cookie):
- Zvolíme v GTM typ proměnné: 1st Party Cookie.
- Zadáme přesný název cookie (např.
cc_cookie). Tato proměnná vrátí celý obsah cookie.

2. Parsování (Extrakce) Hodnot Souhlasu
- Většina cookie lišt ukládá data v komplexním formátu (např. JSON nebo řetězec s oddělovači).
- Vytvoření GTM proměnné pro Parsování (Custom JavaScript Variable):
- Tato proměnná bude obsahovat kód, který:
- Získá hodnotu z Cookie proměnné vytvořené v kroku 1.
- Rozparsuje tento řetězec/JSON a extrahuje konkrétní stav pro jednotlivé kategorie (např.
analyticsaads). - Vrátí hodnotu ‘granted’ nebo ‘denied’ pro každou kategorii.
- Tato proměnná bude obsahovat kód, který:
- Níže uvádím příklad pro kategorii reklam, kterou můžeme klasifikovat v CMV2 jako ad_storage.

//Funkce pro extrakci stavu souhlasu uživatele s cookie lištou
function () {
var cookieValue = null;
cookieValue = {{ConsentCookie}};
if (cookieValue === undefined){
return "denied"
} else if (cookieValue.includes("marketing:true")) {
return "granted"
} else {
return "denied"
};}
Disclaimer: Nenechte si radit od AI chatu, jak má vypadat kód pro váš případ. Naseká vám tam chyby, protože nebude znát kontext kódu. 🙂
3. Mapování do Consent Mode šablony od Simo Ahava
- Použití Simo Ahava’s Consent Mode v2 Template: Tato šablona je za mě standard pro spolehlivou implementaci. Umožňuje definovat počáteční stav (“default”) a stav po aktualizaci (“update”). Zde použijeme parsované hodnoty z kroku 2.

- Vytvoření Custom Event Trigger: Potřebujeme spouštěč, který se spustí co nejdříve při načtení stránky (např. Initialization).
4. Spouštíme stav “Update” pro CMV2
- Kdy spustit stav Update: Je to individuální na každém případu, ale běžně si odchytávám moment, kdy uživatel dá souhlas s cookies. Následně dávám systému 400 ms na to aby aktualizoval obsah cookie od consent lišty a teprve pak spouštím šablonu pro “update” CMV2.

//Timer pro oddálení dalších triggerů - vytváří event "consent_changed" v datalayeru
<script>
(function() {
// CHANGE THESE THREE:
var eventName = 'consent_changed'; // The event name that is pushed into dataLayer
var interval = 400; // The interval in milliseconds
var limit = 1; // The number of times the timer fires
// OTHER SETTINGS:
var timerNumber = 1;
var startTime = new Date().getTime();
var fireTimer = function() {
var timeNow = new Date().getTime();
window.dataLayer.push({
'event' : eventName,
'custom.timerCurrentTime' : timeNow,
'custom.timerElapsedTime' : timeNow - startTime,
'custom.timerStartTime' : startTime,
'custom.timerEventNumber' : timerNumber,
'custom.timerId' : timerId,
'custom.timerInterval' : interval,
'custom.timerLimit' : limit
});
timerNumber += 1;
if (limit < timerNumber) {
window.clearInterval(timerId);
}
};
var timerId = window.setInterval(fireTimer, interval);
})();
</script>- Po uplynutí timeru spouštím “Update” při eventu “consent_changed”. Pro tento stejný event také spouštím znova Sklik RTG kód a další kódy, které mohli být poprvé bloknuté nebo odeslané s jiným consent signálem.

Výhoda: Tím, že čteme a parsujeme cookie přímo, informujeme GTM o stavu souhlasu ihned, jakmile je cookie dostupná, což je rychlejší než čekat na asynchronní dataLayer.push() od cookie lišty. Zajišťujeme tak maximální spolehlivost pro stavy “Default” i “Update”.
Nevýhoda: Pokud provádíte aktualizaci cookie lišty, musíte provést testování a ověřit, že se název ani struktura cookie, ze které čerpáte data, se nezměnily.
Závěr: Spolehlivost a Rychlost pro PPC Optimalizaci
- Tato metoda poskytuje vyšší spolehlivost při sběru signálů pro Consent Mode V2.
- Vliv na PPC: Spolehlivý Consent Mode V2 zajišťuje, že Google Ads má dostatek dat pro Conversion Modeling (Modelování konverzí) a efektivní Optimalizaci Biddingových strategií i v případě, že uživatel nesouhlasí se všemi cookies.
- Doporučení: Vždy testujte implementaci pomocí GTM Preview Mode a Google Tag Assistant v prohlížeči, abyste ověřili, že se stav souhlasu správně přepíná (z
deniednagranted) ihned po interakci s cookie lištou.

1 comments on “Google Consent Mode v2: Implementace přes GTM a Cookie Parsing”