Web má cookie lištu. Návštěvník klikne na „Odmítnout vše“, lišta jeho volbu poctivě uloží a vy jste přesvědčení, že je hotovo. Google Ads přesto hlásí chybějící signály souhlasu.
Lišta nic nezkazila. Jen nic neřekla tagům, tedy kouskům kódu na webu, které posílají data do nástrojů jako Google Analytics nebo Google Ads. Sbírá souhlas, ale tagy na stránce ho samy číst neumí. Tuhle spojku obstarává consent mode v2: způsob, jak lišta sdělí tagům, co smějí. A jestli to funguje, si ověříte během pár minut přímo v prohlížeči.
V článku vysvětlím, co je consent mode, proč ho Google chce, jaký je rozdíl mezi Basic a Advanced (a proč „Advanced“ neznamená „lepší“) a jak si stav souhlasu ověříte ve vývojářských nástrojích prohlížeče (DevTools, klávesa F12).
Proč potřebujeme consent mode v2: řízení souhlasů
Lišta je vrátný. Consent mode je vysílačka, kterou vrátný hlásí zbytku budovy, koho pustil. Bez vysílačky může vrátný dělat svou práci sebelíp a tagy stejně nebudou vědět nic.
Přesněji: lišta (CMP, tedy consent management platform) souhlas sbírá a ukládá. Consent mode ho předává tagům, aby podle něj upravily chování. Tagy pak posílají data v requestech, tedy požadavcích, které prohlížeč odešle na server, třeba Googlu. Consent mode sám lištu nemá a souhlas nesbírá.

Nasazený consent mode neznamená soulad s GDPR, technicky jen předává souhlas dál. Co se na liště nejčastěji pokazí, jsem sepsal v článku o 5 nejčastějších chybách v nastavení cookie lišt.
Jaké souhlasy consent mode má
Consent mode pracuje se sedmi typy souhlasu. U čtyř z nich Google popisuje, jak podle nich jeho tagy mění chování, zbylé tři můžete použít pro vlastní tagy. Každý má hodnotu granted (povoleno) nebo denied (zakázáno) (dokumentace). Označení v1 a v2 v tabulce jsou dvě generace consent mode, rozdíl popisuji níže.
| Typ | K čemu slouží | Kdo ho čte |
|---|---|---|
ad_storage | ukládání (cookies, ID zařízení) pro reklamu | Google tagy (od v1) |
analytics_storage | ukládání pro analytiku, například délka návštěvy | Google tagy (od v1) |
ad_user_data | souhlas s odesíláním dat o uživateli Googlu pro reklamu | Google tagy (od v2) |
ad_personalization | souhlas s personalizovanou reklamou (remarketing) | Google tagy (od v2) |
functionality_storage | funkční úložiště, například jazyk | vlastní použití |
personalization_storage | personalizace, například doporučená videa | vlastní použití |
security_storage | bezpečnost, autentizace, prevence podvodů | vlastní použití |
Souhlasy tvoří dvě logické dvojice:
ad_storageaanalytics_storageurčují, co se smí uložit v prohlížeči návštěvníka. Přideniedtagy příslušné cookies nezapíšou ani nepřečtou.ad_user_dataaad_personalizationurčují, co smí Google s daty dělat.ad_user_dataje souhlas s tím, že se data o uživateli smějí odeslat Googlu pro reklamní účely, například pro měření konverzí v Google Ads.ad_personalizationje souhlas s jejich použitím pro personalizovanou reklamu, typicky remarketing (zobrazování reklam lidem, kteří už web navštívili).
Každý typ je samostatný signál, takže lišta může například povolit analytiku a reklamu zakázat.
Co Google vyžaduje
Google vyžaduje signály souhlasu u návštěvníků z Evropského hospodářského prostoru (EHP), Spojeného království a Švýcarska a vychází přitom ze své EU User Consent Policy. Pro personalizovanou reklamu musí být granted obě hodnoty, ad_user_data i ad_personalization. Je-li ad_personalization denied, remarketing v Google Ads nedostává data. Je-li ad_user_data denied, je omezený export konverzí podle click ID, tedy identifikátoru kliknutí na reklamu (nápověda Google Ads).
Od v1 k v2
První verze vyšla v září 2020 a pro marketingové účely měla dva typy souhlasu: ad_storage a analytics_storage. V listopadu 2023 přibyly ještě ad_user_data a ad_personalization. Google to v dokumentaci zdůvodňuje tím, že posiluje vymáhání své EU User Consent Policy (gtag dokumentace). Verze v2 tedy není nový produkt, jsou to dva nové signály.
Co se změnilo v červnu 2026 (stav k říjnu 2026)
Od 15. 6. 2026 o tom, zda tag Google Analytics 4 (GA4) sbírá reklamní cookies a identifikátory Google Ads, rozhoduje jen consent mode (nastavení souhlasu pro reklamy). Vypnuté Google Signals (funkce GA4 pro propojení dat s přihlášenými uživateli Googlu) ho už nezastaví. Signals teď řídí jen propojení dat GA4 s přihlášenými uživateli pro behaviorální reporty v GA4. Později v roce 2026 má o tom, zda se data z GA4 použijí k personalizaci reklam v Ads, rozhodovat výhradněad_personalization, datum Google zatím neoznámil (Google Analytics nápověda).
Jak consent mode nastavíte: default a update
Princip má dva kroky. Nejdřív nastavíte výchozí stav (default), pak ho po rozhodnutí uživatele změníte (update). V praxi tohle většinou zajišťuje cookie lišta nebo značka, přes kterou do GTM lištu nasazujete. Je ale dobré si zkontrolovat, že tomu tak opravdu je.
Tohle je upravená ukázka podle oficiálního návodu pro gtag, Set up consent mode on websites:
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
// Výchozí stav: do rozhodnutí uživatele je všechno zakázáno.
// Musí proběhnout PŘED načtením Google tagu a na každé stránce.
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied'
});
</script>
<!-- Až tady se načítá Google tag (gtag.js) -->
<script>
// Tuto funkci volá CMP až z události v liště, ve chvíli,
// kdy uživatel přijme vše. NESMÍ se vložit jako volný skript:
// jinak by se povolilo všechno všem hned po načtení stránky.
function onUserAcceptsAll() {
gtag('consent', 'update', {
'ad_user_data': 'granted',
'ad_personalization': 'granted',
'ad_storage': 'granted',
'analytics_storage': 'granted'
});
}
</script>
Musíte si pohlídat:
defaultmusí přijít před Google tagem a před jakýmkoliconfigneboevent, a to na každé stránce. Google říká přímo: „Pokud se váš kód pro souhlas volá ve špatném pořadí, výchozí hodnoty souhlasu nefungují“ (v originále „If your consent code is called out of order, consent defaults won’t work.“).updatese volá hned po rozhodnutí uživatele. Volbu si musí pamatovat CMP a při dalším načtení stránky ji zase předat.
Ukázka odpovídá režimu Advanced, Google tag se načte hned (rozdíl vysvětluji níže). A pokud default nastavuje už vaše CMP nebo její šablona v Google Tag Manageru (GTM), ruční snippet nepřidávejte, výchozí hodnoty by se přepsaly nebo zdvojily.

Vědecká poznámka
Default denied funguje jako nulová hypotéza ve statistice: dokud nemáte důkaz o opaku, platí výchozí předpoklad. Tady zní „návštěvník nesouhlasí“. Důkazem je až klik v liště a update je vyhodnocení testu: výchozí předpoklad buď zamítne, nebo potvrdí.
Kromě souhlasů existuje ještě několik parametrů, které ovlivňují chování tagů:
wait_for_updateje čas v milisekundách, po který tagy počkají na asynchronní CMP, než odešlou hit (request s daty).regionomezí výchozí nastavení na vybrané země nebo regiony (kódy ISO 3166-2, napříkladCZneboDE-BY). Použije se nastavení s nejkonkrétnějším regionem. Bezregionplatí default pro všechny návštěvníky.url_passthrough: když jsou cookies odmítnuté, přenáší informace o kliknutí na reklamu, například GCLID (identifikátor kliknutí na reklamu v Google Ads), mezi stránkami téhož webu v URL odkazů, aby se cestou neztratily. Týká se tagů Google Ads a Floodlight (měřicí tag Google Marketing Platform).ads_data_redaction: přiad_storage='denied'naopak odstraní identifikátory kliknutí z requestů, které posílají tagy Google Ads a Floodlight. Podrobnosti k oběma najdete v dokumentaci.
Consent mode v GTM
V GTM byste měli spouštět tagy CMP na trigger Consent Initialization – All Pages, který se spouští před všemi ostatními tagy, i před triggerem Initialization (nápověda GTM). CMP šablony z Community Template Gallery používají API setDefaultConsentState a updateConsentState, takže gtag('consent', …) v nich ručně volat nemáte.
Consent mode Basic vs Advanced: Advanced neznamená automaticky lepší
Google rozlišuje dva režimy, ve kterých consent mode pracuje: Basic a Advanced. Oba používají stejné typy souhlasu (například analytics_storage) a v requestech je předávají stejnými parametry. Liší se tím, kdy se načtou tagy a co z nich odchází, dokud uživatel nesouhlasí. Právě tahle volba se při nasazení snadno přehlédne.
Tři pojmy, které budu dál potřebovat:
- Cookieless ping je měření bez cookies: tag pošle Googlu zprávu, že návštěva nebo událost proběhla, ale bez identifikátoru uživatele.
- Modelování znamená, že Google chybějící data od odmítnutých uživatelů dopočítá statistickým odhadem.
- BigQuery je databáze Googlu, kam GA4 umí exportovat surová data jednotlivých událostí.
| Basic | Advanced | |
|---|---|---|
| Načtení Google tagů | až po interakci s lištou | hned při otevření stránky |
| Co odchází při odmítnutí | nic, ani stav souhlasu | cookieless pings |
| Modelování v GA4 | žádné | možné, ale jen nad prahy |
| Modelování konverzí v Google Ads | obecný model | model specifický pro inzerenta |
| Odmítnutí uživatelé v BigQuery | chybí | události bez trvalého ID |
Basic: z odmítnutých návštěv nechodí nic
V režimu Basic se Google tagy nenačtou, dokud uživatel v liště neklikne. Pokud odmítne, Googlu neodejde nic, ani stav souhlasu. Cena za to: v GA4 nezískáte modelovaná data, kterými se doplňují mezery (nápověda GA4). V Google Ads se modelování konverzí opírá jen o obecný model. A odmítnutí uživatelé chybí i v BigQuery exportu, protože do Googlu se o nich nedostalo nic.
Advanced: cookieless pings a co přinášejí
V režimu Advanced se tagy načtou hned a výchozí stav je denied. Dokud uživatel nesouhlasí, posílají cookieless pings. Podle nápovědy Google mohou obsahovat:
- časové razítko,
- user agent (typ prohlížeče a operačního systému),
- referrer (stránka, ze které návštěvník přišel),
- rozlišení obrazovky,
- IP adresu (součást běžné komunikace),
- stav souhlasu,
- náhodné číslo vygenerované při každém načtení stránky.
Bez ads_data_redaction se při ad_storage='denied' odesílá i celá URL stránky, která může obsahovat parametr GCLID, viz nápověda GA4.
V režimu Advanced dostanete:
- Modelování konverzí v Google Ads. Má ale minimální požadavky na objem dat – stav ukáže diagnostika konverzí v Google Ads.
- Behaviorální modelování v GA4. Aby to začalo fungovat, musíte mít alespoň 1 000 událostí denně s
analytics_storage='denied'po dobu 7 dní a alespoň 1 000 denních uživatelů sgrantedalespoň 7 z posledních 28 dní. Máte-li jen lehce nad těmito limity, neznamená to automaticky, že bude modelování dostupné (nápověda GA4). - Cookieless události v BigQuery, tedy surová data bez trvalého identifikátoru uživatele (tj. bez jakéhokoliv modelování, které zmiňuji výše).
Advanced tedy nedoplní chybějící uživatele do BigQuery. Dodá počty událostí, které nejde spojit do uživatelů ani relací.
Riziko: data odcházejí před souhlasem
Cookies se v režimu Advanced nepoužijí, ale prohlížeč při pingu přesto předá technické údaje. Primárně se tím zabývá směrnice ePrivacy (o soukromí v elektronických komunikacích), čl. 5(3) (pravidlo o ukládání a čtení dat v zařízení uživatele), v ČR § 89 odst. 3 zákona o elektronických komunikacích. Evropský sbor pro ochranu osobních údajů (EDPB) vykládá v Guidelines 2/2023 čl. 5(3) šířeji než jen na cookies. Patří sem podle něj i situace, kdy JavaScript na stránce nařídí prohlížeči odeslat data na server, a týkat se to může i IP adresy nebo user agentu, pokud jejich odeslání vyvolá právě takový kód. Pokud se tento výklad uplatní, může souhlas vyžadovat i samotné odeslání cookieless pingu, tedy přesně to, co Advanced dělá ještě před kliknutím v liště.
Google uvádí, že IP adresy návštěvníků z EU, Švýcarska a Spojeného království v GA4 neukládá a po určení geolokace je okamžitě zahodí (nápověda GA4). Riziko je tedy hlavně v tom, že k přenosu dochází před souhlasem. Výslovné stanovisko dozorového úřadu ke Google consent mode jsem nenašel.
Simo Ahava doporučuje jako výchozí volbu Basic a Advanced jen po pečlivé úvaze s právním týmem. Obecnější otázku, zda se Google tagy smějí načíst před souhlasem, řeším v článku o rozsudku z Hannoveru. Jak se mohou pravidla vyvíjet dál, popisuji v textu o Digital Omnibus.
Jak se rozhodnout
Můj pohled: pokud web neinzeruje v Google Ads na návštěvníky z EHP a nesplní prahy GA4, Advanced přinese hlavně riziko. Pokud inzeruje, může mít model konverzí specifický pro inzerenta reálnou hodnotu (pokud účet splní požadavky na objem dat), kterou je třeba vážit proti riziku spolu s právníkem nebo pověřencem pro ochranu osobních údajů (DPO).
A ještě jednou: mějte na paměti, že Advanced neznamená automaticky lepší.
Jak to vypadá technicky: parametry gcs a gcd
Součástí requestů, které Google tag posílá, jsou parametry, které Googlu sdělují stav souhlasu. Google v dokumentaci zmiňuje mimo jiné gcs a gcd, ale jejich formát nedokumentuje a píše, že se může změnit. Pro ladění doporučuje Tag Assistant, svůj ladicí nástroj pro tagy. Parametr gcd se navíc posílá vždy, i když consent mode neaktivujete. Jeho přítomnost proto nic nedokazuje.
Pozor: dekódování níže není oficiální. Význam hodnot
gcsagcdvychází z komunitního reverse engineeringu (zejména Simo Ahava a dodavatelé CMP). Google je nepublikuje a může je kdykoli změnit. Berte to jako pomůcku pro orientaci, ne jako specifikaci.
gcs: dva signály
Parametr gcs zná jen dva signály, ad_storage a analytics_storage. Má tvar G1xy, kde x je ad_storage a y je analytics_storage. Jednička znamená granted, nula denied.
| gcs | ad_storage | analytics_storage |
|---|---|---|
G100 | denied | denied |
G110 | granted | denied |
G101 | denied | granted |
G111 | granted | granted |
G100 uvidíte jen v Advanced. V Basic se při odmítnutí nic neposílá, takže není co číst.
gcd: čtyři signály a rozdíl mezi default a update
gcs zná jen dva signály. gcd přibyl s v2 a nese všechny čtyři, včetně rozlišení default a update. Opět jde o pozorování komunity.
Písmena v gcd jdou v pořadí ad_storage, analytics_storage, ad_user_data, ad_personalization. Každé písmeno kóduje dvojici: výchozí stav a případný update. Číslice mezi písmeny nevykládám. Jejich význam nikdo spolehlivě nedoložil a mezi weby se liší, pro čtení souhlasu stačí písmena.
Dva příklady:
13r3r3r3r5: čtyřikrátr, tedy defaultdenied, updategranted. Uživatel přijal vše.13l3l3l2l2: samál. Consent mode nebyl nalezen, je neaktivní.
A tady je tahák k jednotlivým písmenům:
| Písmeno | Default | Update |
|---|---|---|
l | nenastaveno | nenastaveno (consent mode nenalezen) |
p | denied | žádný update |
q | denied | denied |
r | denied | granted |
t | granted | žádný update |
u | granted | denied |
v | granted | granted |
m | nenastaveno | denied |
n | nenastaveno | granted |
Z tabulky plyne: před kliknutím v liště (default denied, žádný update) uvidíte p, po odmítnutí q, po přijetí r.
Jak to ověřit
Začněte nejjednodušší cestou: Tag Assistant, který Google pro ladění doporučuje sám. Chcete-li vidět syrový request:
- Otevřete web v anonymním okně. CMP si volbu pamatuje, takže jinak byste testovali už uložený stav.
- Otevřete DevTools a záložku Network. Do filtru napište
collect. - Klikněte v liště na odmítnutí nebo přijetí a v requestech GA4 najděte parametry
gcsagcd. V Basic po odmítnutí žádný GA4 request neuvidíte, to je v pořádku. - Zkontrolujte, že písmena v
gcdnejsou samál. Samotná přítomnostgcdnic neznamená.

Google není sám: consent signály u dalších platforem
Potřebu předat souhlas tagům mají všichni. Princip je všude podobný: signál souhlasu musí být nastaven před odesláním dat. Syntaxe se liší.
| Platforma | Jak se signál předává | Co si pamatovat | Dokumentace |
|---|---|---|---|
| Microsoft Advertising (UET, Universal Event Tracking) | consent mode s jediným signálem ad_storage | Povinné pro EHP, UK a CH od 5. 5. 2025. Bez nastaveného defaultu UET v EHP, UK a CH předpokládá denied, jinde granted. | blog Microsoftu, nápověda UET |
| Microsoft Clarity | clarity('consentv2', { ad_Storage: …, analytics_Storage: … }) | Pozor na velké S. Pro EHP, UK a CH vynucováno od 31. 10. 2025, bez souhlasu běží bez cookies. | Consent API v2 |
| Meta pixel | fbq('consent', 'revoke') před fbq('init', …), po souhlasu fbq('consent', 'grant') | Volání patří na každou stránku. | Meta dokumentace |
pintrk('setconsent', true) nebo false | Při false se události neposílají. | ||
| Amazon Ads | Amazon Consent Signal (ACS), IAB TCF (Transparency and Consent Framework, odvětvový standard pro předávání souhlasu) nebo GPP (Global Privacy Platform) | Stačí jeden ze tří způsobů, při více signálech vyhrává TCF. | Amazon Ads |
TikTok pixel má vlastní režim, viz nápověda TikTok Ads. Nastavení consent pro Clarity jsem popsal samostatně: jak správně nastavit consent pro MS Clarity.
FAQ
Je consent mode totéž co cookie lišta?
Ne. Lišta souhlas sbírá, consent mode ho předává tagům (viz výše). Bez lišty nemá consent mode co předávat.
Je consent mode v2 povinný?
Google vyžaduje signály souhlasu pro návštěvníky z EHP, Spojeného království a Švýcarska (EU User Consent Policy). Je to podmínka Googlu, ne zákon. Pokud chcete u těchto návštěvníků používat personalizaci, remarketing nebo měření konverzí, signály potřebujete. Certifikovanou CMP Google vyžaduje od publisherů AdSense, Ad Manageru a AdMobu, pro inzerenty má samostatná pravidla (nápověda AdSense).
Proč po nasazení klesla data v GA4?
Měří se jen ti, kdo souhlasili, takže pokles je očekávaný. Co z odmítnutých zbyde, závisí na Basic vs Advanced (viz výše), podíl souhlasů spočítáte podle článku Jak počítám opt-in rate cookie lišty.
Co znamená G100 a G111?
Jde o hodnoty parametru gcs. G100 znamená ad_storage i analytics_storage denied a uvidíte ho jen v Advanced. G111 znamená obojí granted. Dekódování je komunitní, Google formát nedokumentuje.
Závěr
Consent mode není cookie lišta. Je to způsob, jak lišta řekne tagům, co smějí. Základ je jednoduchý: výchozí stav před tagy, update po rozhodnutí a kontrola gcs a gcd v requestu. Těžší je rozhodnutí mezi Basic a Advanced, které nepatří jen analytikovi.
