GA4 cookies snadno a rychle

Jaká cookies Google používá a proč je důležité chápat jejich význam

Autor: Daniil Podtesov

Publikováno: 19. 8. 2024 | 7 minut čtení

Už jste se někdy zamýšleli nad tím, jak Google rozlišuje mezi relacemi a uživateli? Nebo jak určí, která relace obsahuje zapojení a která ne? My rozhodně ano, a abychom získali odpovědi, rozhodli jsme se analyzovat účel analytických GA4 cookies, které se do prohlížeče ukládají na základě souhlasu s analytickým zpracováním cookies.

Jaká jsou cookies Googlu a proč je důležité chápat jejich význam?

Nástroje Googlu používají různá cookies pro analytické a marketingové účely. V tomto článku se zaměříme na cookies služby Google Analytics, sloužící ke sběru dat, která pomáhají poskytovatelům služeb chápat, jak uživatelé s jejich službami interagují. Zaměříme se konkrétně na dvě analytická cookies z gtag.js:

  1. _ga (unikátní pro každé zařízení)
  2. ga<measurement_id> (jedna pro každou službu GA4)

Tyto cookies se používají k rozlišení unikátních uživatelů a jejich relací. Pochopením jejich jednotlivých částí získáme hlubší chápání toho, jak GA4 měří chování uživatelů. Podívejme se tedy, jak fungují jednotlivé komponenty těchto cookies.

Jak najít uložená cookies?

Cookies v prohlížeči najdeme následovně: v DevTools (tlačítko F12), v záložce Application, v sekci Cookies.

Na obrázku vidíme, že v prohlížeči je uloženo hned několik ga<measurement_id> cookies, ale jen jedno _ga cookie. To proto, že na stránce crossmasters.com probíhá měření do několika GA4 služeb; jednotlivá ga<measurement_id> cookies odlišují jednotlivé relace, zatímco cookie _ga Google Analytics používá k rozlišení uživatelů. Pojďme se podívat na význam obou cookies hlouběji:

_ga cookie

Jak jsme již zmínili, _ga je v Google Analytics cookie zařízení platné po 400 dní, umožňující Google Analytics rozlišovat uživatele. Jakákoli stránka, kde jsou implementovány Google Analytics, používá _ga cookie. Každé toto cookie je pak unikátní pro dané zařízení. Je důležité zmínit, že se toto cookie ukládá jen v případě, že uživatel dal souhlas se zpracováním dat pro analytické účely.

Hodnota tohoto cookie se skládá ze čtyř částí:

  1. Verze Google Analytics 4
  2. Úroveň domény
  3. Náhodné číslo
  4. Časová známka určující, kdy bylo cookie vytvořeno

První část cookie je poměrně přímočará, jde o verzi Google Analytics 4, která se používá u konkrétního měření.

Úroveň domény určuje, na jaké úrovni stránky k měření dochází. Zatímco úroveň domény example.com bude 1, v případě sub.example.com bude její hodnota 2. Tato informace nám pomáhá pochopit strukturu daného webu a jeho subdomén.

Hodnota dalšího parametru v sobě nenese žádný explicitní význam, ale v cookie celkově hraje důležitou roli, protože umožňuje jednoznačnou identifikaci uživatele. Náhodné číslo vytvořené v GA4 identifikuje a odlišuje konkrétního uživatele webu.

Poslední komponent cookie je časová známka, která nese časový údaj o okamžiku, kdy bylo cookie vytvořeno. Jednodušeji řečeno označuje okamžik, kdy uživatel vytvořil cookie tím, že navštívil stránku buď poprvé za 2 roky, nebo poté, co si v prohlížeči vymazal cookies.

Jak jsme již zmínili dříve, GA4 používá k identifikaci jednotlivých zařízení cookie. Z něj se můžeme extrakcí náhodného čísla a časové známky (třetí a čtvrté části) dostat k tzv. Effective User ID. Proč je to důležité? Pokud jste někdy zkoumali parametr user_pseudo_id v BigQuery, možná jste si všimli, že má úplně stejnou strukturu. To znamená, že Effective User ID můžeme použít k porovnání GA4 dat s BigQuery či k analýze chování na webu přímo v BigQuery.

ga<measurement_id> cookie

Druhé cookie, které budeme analyzovat, je ga<measurement_id> cookie, unikátní pro jednotlivé služby GA4. Hodnota tohoto cookie se skládá z většího počtu komponentů nežli v prvním případě, a sice:

  1. Verze Google Analytics 4
  2. Úroveň domény
  3. Časová známka určující začátek relace
  4. Počet relací
  5. Indikátor relace se zapojením
  6. Časová známka poslední události
  7. 60sekundový odpočet
  8. Neidentifikované údaje

Hodnota cookie se tedy dohromady skládá z 8 částí, z nichž každá obsahuje určitou informaci o interakci uživatele s webem. První dvě části jsme již vysvětlili u předchozího cookie, pojďme je tedy přeskočit.

Relace jsou středobodem webové analytiky. V GA4 jako ID relace slouží časová známka začátku relace, která vyjadřuje počet vteřin, který uběhl od 1. ledna 1970. Za zmínku stojí také to, že je teoreticky možné, aby u dvou relací byla tato časová známka stejná. Proto Google k jednoznačnému rozlišení relací spojuje ID zařízení (náhodné číslo dohromady s časovou známkou vytvoření _ga cookie) a časovou známku začátku relace.

Pro potvrzení, že jde skutečně o časovou známku relace, se podívejme na náš příklad:

v = new Date(1690013078*1000)
Sat Jul 22 2023 10:04:38 GMT+0200 (Central European Summer Time)

Následující až dvouciferný údaj informuje o počtu relací uživatele. Každá relace vyhraňuje unikátní úsek aktivity uživatele na daném webu. Konkrétní ohraničení relace je možné v GA4 uzpůsobit konkrétnímu případu.

V našem případě dochází k vypršení relace ve chvíli, kdy je uživatel na webu neaktivní po dobu 30 minut.

Indikátor relace se zapojením je klíčovým nástrojem pro určení, zda uživatelé s webem aktivně interagují (1) nebo ne (0). V podstatě funguje jako test, do jaké míry má uživatel zájem o obsah webu. Měření tohoto indikátoru umožňuje určit rozsah interakce uživatelů s daným webem. Pokud uživatelé na webu zůstávají a na webu například navštíví několik stránek, naznačuje to, že obsah webu je poutavý a relevantní pro zájmy uživatelů.

Jedním z klíčových komponentů cookie je časová známka poslední události, která určuje moment, kdy v relaci došlo k poslední události. Skrze tuto hodnotu jsme schopni mapovat chování uživatele napříč časem.

Neméně důležitý je 60sekundový odpočet v rámci cookie, který pomáhá s měřením doby strávené uživateli na dané stránce a nabízí cenné informace o interakci uživatele s webem. Je ale nutné vzít v potaz, že význam tohoto parametru jsme získali na základě experimentace; oficiální dokumentací GA4 není ani potvrzen, ani vyvrácen.

Naneštěstí odpočet byl posledním parametrem, který se nám podařilo identifikovat. Poslední dvě pozice v hodnotě cookie tedy zůstávají neznámými.

Závěr

Správné chápání významu _ga a ga<measurement_id> cookies je pro optimalizaci výkonu webu a zákaznické zkušenosti zcela klíčové. Analýza jeho jednotlivých částí nám umožňuje získat cenné poznatky o chování uživatelů a jejich interakcích s webem. A právě tyto poznatky mohou společnostem a tvůrcům obsahu webů pomoci činit rozhodnutí na základě dat a pozvednout úroveň své online reprezentace.

Bonus

Pro vás, kteří jste dočetli až do konce a máte pocit, že vám analýza těchto cookies může pomoct s problémem, který zrovna řešíte, jsme připravili řešení, které vám umožní si jednoduše prozkoumat vlastní cookies. Níže přikládáme skript, který vše zařídí za vás:

function parseGaCookies() {
    const getCookie = (name) => {
        const value = "; " + document.cookie;
        const parts = value.split("; " + name + "=");
        if (parts.length == 2) return parts.pop().split(";").shift();
    }

    const gaCookies = document.cookie.split('; ').filter(cookie => cookie.startsWith('_ga_'));
    const parsedCookies = [];

    gaCookies.forEach(cookie => {
        const cookieParts = cookie.split('=');
        const cookieNameParts = cookieParts[0].split('_');
        const rawStreamIds = cookieNameParts[2];
        const streamIds = rawStreamIds.split(',').map(id => id.startsWith('G-') ? id : 'G-' + id);
        const duplicateStream = streamIds.length > 1;
        const cookieValue = getCookie('_ga_' + rawStreamIds);

        if(cookieValue.startsWith('GS1')) {
            const components = cookieValue.split('.');

            if (components.length !== 9) {
                console.log("Invalid cookie format. Please make sure to provide a valid GA4 cookie.");
                return;
            }

            const version = components[0].replace('GS', '');
            const domainLevel = components[1];
            const sessionStartAt = new Date(components[2] * 1000);
            const sessionsCount = components[3];
            const engagedSession = components[4];
            const lastEventAt = new Date(components[5] * 1000);
            const countdown = components[6];
            const mysteryZero1 = components[7];
            const mysteryZero2 = components[8];
            const engagedTime = Math.round((lastEventAt - sessionStartAt) / 1000);

            parsedCookies.push({
                "Measurement IDs": streamIds,
                "Version": version,
                "Domain Level": domainLevel,
                "Session Start At": sessionStartAt.toISOString(),
                "Sessions Count": sessionsCount,
                "Engaged Session": engagedSession,
                "Last Event At": lastEventAt.toISOString(),
                "Engaged Time": engagedTime,
                "Countdown": countdown,
                "Mystery Zero 1": mysteryZero1,
                "Mystery Zero 2": mysteryZero2,
                "Duplicate Stream": duplicateStream
            });
        }
    });

    console.log(JSON.stringify(parsedCookies, null, 2));
    return parsedCookies;
}

// Example usage:
parseGaCookies();

Použití skriptu je jednoduché. Stačí v DevTools (F12) najít záložku Console, do konzole pak vložit právě výše uvedený kód a zmáčknout Enter.

Skript pak automaticky identifikuje cookies, které máte v prohlížeči na dané stránce uložené a popíše jejich význam.

A my už jen doufáme, že vám naše řešení přinese užitek 😊