GA4 cookies snadno a rychle
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:
- _ga (unikátní pro každé zařízení)
- 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í:
- Verze Google Analytics 4
- Úroveň domény
- Náhodné číslo
- Č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:
- Verze Google Analytics 4
- Úroveň domény
- Časová známka určující začátek relace
- Počet relací
- Indikátor relace se zapojením
- Časová známka poslední události
- 60sekundový odpočet
- 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 😊