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_storage a nově povinné parametry ad_user_data a ad_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ý:
      1. Získá hodnotu z Cookie proměnné vytvořené v kroku 1.
      2. Rozparsuje tento řetězec/JSON a extrahuje konkrétní stav pro jednotlivé kategorie (např. analytics a ads).
      3. Vrátí hodnotu ‘granted’ nebo ‘denied’ pro každou kategorii.
  • 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 denied na granted) ihned po interakci s cookie lištou.

     

    Petr Svoboda

    Jsem PPC specialista na volné noze a krom kampaní vám pomohu i s webovou analytikou, SEO, UX a celkovým konceptem vašeho marketingu.

    petr@marketak-ze-severu.cz | +420 774 051 339

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

      Napsat komentář

      Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *