Klient mi volal frustrovaný: "Mám 50 000 návštěv měsíčně z organiku, ale nikdo nenakupuje. SEO nefunguje."
Podívala jsem se do GA4. Bounce rate? GA4 ho už ani pořádně neměří. Engagement rate? 45 %. Sessions? Rostou. Ale co vlastně uživatelé na webu dělají?
Nastavili jsme vlastní události (custom events). Za měsíc jsme zjistili, že 78 % uživatelů scrolluje jen na 25 % stránky. Nikdy se nedostanou k CTA tlačítku, které je ve spodní třetině.
Problém nebyl v SEO. Problém byl v obsahu, který nedržel pozornost.
Standardní GA4 metriky vám tohle neřeknou. Vlastní události ano.
Proč standardní metriky nestačí
Problém s bounce rate v GA4
V Universal Analytics byl bounce rate jednoduchý: uživatel přišel, neudělal nic, odešel. Bounce.
GA4 tohle změnil. Místo bounce rate máte engagement rate. Uživatel je "engaged", pokud:
- Strávil na stránce více než 10 sekund
- Měl 2+ pageviews
- Provedl konverzi
Ale 10 sekund? Na 3000slovní článek? To je směšně málo.
Uživatel může strávit 15 sekund scrollováním, nic nepřečíst a odejít. GA4 ho označí jako "engaged". Vy si myslíte, že obsah funguje.
Nefunguje.
Co vám standardní metriky neřeknou
Co vlastní události odhalí
Nastavením vlastních událostí zjistíte:
- Kde uživatelé přestávají číst (hloubka scrollování 25/50/75/100 %)
- Jak dlouho skutečně čtou (časové milníky 30s/60s/120s)
- Jestli interagují (CTA kliky, interní odkazy)
- Proč odcházejí (záměr opuštění, nedokončení formuláře)
Základní vlastní události pro SEO
1. Sledování hloubky scrollování (25/50/75/100 %)
Hloubka scrollování (scroll depth) je nejdůležitější metrika pro obsahové weby. Říká vám, jestli uživatelé čtou.
Proč měřit na 4 úrovních:
- 25 % — Uživatel viděl úvod. Zaujal ho?
- 50 % — Čte hlavní obsah. Drží pozornost?
- 75 % — Blíží se k závěru. Obsah funguje.
- 100 % — Dočetl celý článek. Kvalitní návštěva.
Benchmark pro kvalitní obsah:
Pokud 90 % uživatelů odchází před 50 %, máte problém s obsahem, ne s SEO.
2. Časové milníky na stránce (30s/60s/120s)
Čas zapojení (engagement time) v GA4 měří celkový čas, ale neřekne vám, kdy uživatel "zatuhne".
Doporučené milestones:
- 30 sekund — Minimální kvalitní návštěva
- 60 sekund — Aktivní čtení (cca 200-250 slov)
- 120 sekund — Hloubkové čtení
- 180+ sekund — Velmi engaged uživatel
Kombinace s hloubkou scrollování:
Vysoký scroll + nízký čas = Uživatel jen projíždí, nečte. Nízký scroll + vysoký čas = Čte pomalu, ale nedojde daleko. Možná ho něco zastavilo. Vysoký scroll + vysoký čas = Ideální aktivní čtení (engaged read).
3. CTA button clicks
Měříte konverze, ale kolik lidí vůbec vidělo a kliklo na CTA?
Co trackovat:
- Hlavní CTA v hero sekci
- CTA uprostřed článku
- CTA na konci článku
- Floating CTA (pokud máte)
Příklad dat:
Závěr: CTA na konci článku má nejvyšší CTR, ale nejméně impressions. Řešení? Přidat CTA i doprostřed.
4. Kliky na interní odkazy
Pro SEO je klíčové, aby uživatelé procházeli web. Interní odkazy zlepšují:
- Procházitelnost (crawlability)
- Distribuci hodnoty odkazů (link juice)
- Metriky zapojení
Co měřit:
- Klik na související články
- Klik na odkazy v obsahu
- Klik na drobečkovou navigaci (breadcrumbs)
- Klik na kategorie/tagy
Pokročilé vlastní události
Dokončení aktivního čtení (Engaged read completion)
Kombinace hloubky scrollování + času = skutečné přečtení článku.
Definice aktivního čtení:
- Scroll 90 %+ AND
- Time 60+ sekund (pro 1500+ slov) OR
- Time 120+ sekund (pro 3000+ slov)
Tohle je metrika, kterou chcete sledovat jako konverzi pro obsahové weby.
Dosledování videa (Video watch completion)
Pokud máte embedded videa:
- Video start — Kolik začalo sledovat
- 25/50/75 % — Kde přestávají
- 100 % — Kolik dosledovalo
Pro YouTube marketing videa použijte YouTube iframe API. Pro vlastní videa HTML5 video events.
Nedokončení formuláře (Form abandonment)
Kolik uživatelů začne vyplňovat formulář, ale nedokončí?
Co sledovat:
form_start— Uživatel klikl do prvního polefield_complete_[name]— Vyplnil konkrétní poleform_abandon— Odešel bez odeslání
Pak zjistíte: "85 % uživatelů opouští formulář u pole 'telefon'." Řešení? Udělejte telefon volitelný.
Sledování záměru opuštění (Exit intent tracking)
Kdy uživatel odchází?
Spouštěč: Kurzor opouští viewport směrem k zavíracímu tlačítku prohlížeče.
Použití:
- Spuštění vyskakovacího okna při odchodu
- Měření, na které stránce uživatelé odcházejí
- Identifikace problematických sekcí
Nastavení přes Google Tag Manager
GTM je nejflexibilnější způsob nastavení vlastních událostí. Zde je kompletní návod.
Krok 1: Sledování scrollování (Scroll tracking)
1. Povolte built-in proměnné:
- V GTM jděte do Variables → Configure
- Zaškrtněte:
- Scroll Depth Threshold
- Scroll Depth Units
- Scroll Direction
2. Vytvořte trigger:
- Triggers → New
- Trigger Type: Scroll Depth
- Nastavení:
- Vertical Scroll Depths: Percentages
- Percentages: 25, 50, 75, 100
- Enable When: All Pages (nebo specifické URL)
3. Vytvořte tag:
- Tags → New
- Tag Type: Google Analytics: GA4 Event
- Configuration Tag: Váš GA4 config tag
- Event Name:
scroll_depth - Event Parameters:
- Parameter Name:
percent_scrolled - Value:
{{Scroll Depth Threshold}}
- Parameter Name:
- Trigger: Váš scroll trigger
Kód pro pokročilejší sledování:
// JavaScript pro detailnější sledování scrollování
<script>
window.addEventListener('scroll', function() {
var scrollPercent = Math.round(
(window.scrollY / (document.documentElement.scrollHeight - window.innerHeight)) * 100
);
// Trackovat specifické procenta
var thresholds = [25, 50, 75, 90, 100];
thresholds.forEach(function(threshold) {
if (scrollPercent >= threshold && !window['scroll_' + threshold]) {
window['scroll_' + threshold] = true;
dataLayer.push({
'event': 'scroll_depth',
'scroll_percent': threshold
});
}
});
});
</script>
Krok 2: Sledování kliknutí (Click tracking)
Pro CTA tlačítka:
1. Vytvořte spouštěč:
- Triggers → New
- Trigger Type: Click - All Elements
- This trigger fires on: Some Clicks
- Podmínka: Click Classes contains "cta-button" (nebo váš class)
2. Vytvořte tag:
- Tags → New
- Tag Type: Google Analytics: GA4 Event
- Event Name:
cta_click - Event Parameters:
cta_location: {{Click Element}} nebo custom variablecta_text: {{Click Text}}page_url: {{Page URL}}
Pro interní odkazy:
// Spouštěč pro interní odkazy
// Podmínka: Click URL contains "seopohotovost.cz" AND Click URL not equals {{Page URL}}
Krok 3: Časové milníky (Time milestones)
GTM nemá vestavěné sledování času, ale můžete použít časový spouštěč (Timer trigger).
1. Vytvořte časové spouštěče:
Pro každý milník (30s, 60s, 120s):
- Triggers → New
- Trigger Type: Timer
- Interval: 30000 (pro 30 sekund, v milisekundách)
- Limit: 1
- Enable When: Page URL matches (vaše stránky)
Alternativně - vlastní JavaScript:
// Přesnější sledování času
<script>
var timeThresholds = [30, 60, 120, 180];
var trackedThresholds = [];
setInterval(function() {
var timeOnPage = Math.floor((Date.now() - performance.timing.navigationStart) / 1000);
timeThresholds.forEach(function(threshold) {
if (timeOnPage >= threshold && trackedThresholds.indexOf(threshold) === -1) {
trackedThresholds.push(threshold);
dataLayer.push({
'event': 'time_on_page',
'seconds': threshold
});
}
});
}, 1000);
</script>
Krok 4: Testování a ladění
1. Režim náhledu (Preview mode):
- V GTM klikněte Preview
- Zadejte URL vašeho webu
- Otevře se nové okno s debug panelem
2. Co ověřit:
- Tags Fired: Spouští se správné tagy?
- Variables: Mají proměnné správné hodnoty?
- Data Layer: Posílají se správné eventy?
3. GA4 DebugView:
- V GA4 jděte do Admin → DebugView
- Měli byste vidět eventy v reálném čase
- Ověřte, že se posílají správné parametry
4. Časté chyby:
Nastavení přímo v GA4
Některé vlastní události můžete nastavit přímo v GA4, bez GTM.
Vytvoření události (Create event)
- Admin → Events → Create event
- Název vlastní události: např.
engaged_scroll - Matching conditions:
- event_name equals
scroll - percent_scrolled greater than
75
- event_name equals
Omezení: Pouze na základě existujících eventů a jejich parametrů.
Úprava události (Modify event)
- Admin → Events → Modify event
- Matching conditions: Které události upravit
- Modifications: Změnit název nebo parametry
Příklad: Přejmenovat scroll na deep_scroll když percent_scrolled >= 90.
Omezení bez GTM
Doporučení: Pro seriózní sledování použijte GTM. Investice do nastavení se vrátí v kvalitě dat.
Konverze z vlastních událostí
Které události označit jako konverze
Doporučené konverze pro obsahové weby:
Jak nastavit:
- Admin → Conversions → New conversion event
- Zadejte název události (přesně jak ji posíláte)
- Uložte
Jak přiřazovat hodnoty
Pro lepší reporting přiřaďte konverzím hodnotu.
Příklad výpočtu hodnoty aktivního čtení:
- Průměrná hodnota konverze (objednávky): 5 000 Kč
- Konverzní poměr z aktivního čtení: 2 %
- Hodnota aktivního čtení: 5 000 × 0,02 = 100 Kč
Nastavení v GA4:
// V odeslání do dataLayer
dataLayer.push({
'event': 'engaged_read',
'value': 100,
'currency': 'CZK'
});
Nebo v GTM přes parametry události:
- value: 100
- currency: CZK
Reportování a analýza
Vlastní průzkumné reporty (Custom exploration reports)
Krok za krokem:
- Explore → Blank
- Variables:
- Dimenze: Cesta stránky, Název události, Zdroj/médium
- Metriky: Počet událostí, Konverze, Uživatelé
- Settings:
- Řádky: Cesta stránky
- Sloupce: Název události (filtrujte na vaše vlastní události)
- Hodnoty: Počet událostí
Praktický report - Aktivní čtení podle stránek:
Co z toho vyčtete:
- /blog/seo-guide: 14 % dočte článek (1 800/8 500), 14 % aktivního čtení. Normální pro dlouhý obsah.
- /sluzby: Pouze 12,5 % aktivního čtení ze 100% scrollu. Proč? Stránka je kratší.
Segmentace podle událostí
Vytvořte segment "Aktivní čtenáři":
- Explore → Segments → User segment
- Conditions:
- Název události:
engaged_read - Počet: alespoň 1
- Název události:
Použití segmentu:
Porovnejte chování aktivních čtenářů vs. všichni uživatelé:
- Konverzní poměr
- Průměrná hodnota objednávky
- Návratnost
Typicky zjistíte: Aktivní čtenáři konvertují 3-5× lépe.
Praktické příklady pro různé weby
E-shop: Aktivní prohlížení produktů
Co sledovat:
product_scroll_complete— Uživatel viděl celý produktproduct_time_60s— Strávil 60+ sekund na produktuproduct_gallery_view— Prohlédl více foteksize_guide_click— Otevřel velikostní tabulkureview_scroll— Přečetl recenze
Definice aktivního prohlížení produktu:
- Scroll 80 %+ AND (Prohlížení galerie OR Scroll k recenzím OR Čas 45s+)
Příběh z praxe:
E-shop s oblečením měl konverzní poměr 1,2 %. Po nastavení vlastních událostí zjistili:
- 65 % uživatelů nikdy nescrolluje k recenzím
- Ti, co scrollují k recenzím, konvertují 3,8 %
Řešení: Přesunuli recenze výš na stránce. Konverzní poměr: 1,8 %.
Blog: Kvalitní čtení
Co sledovat:
article_25/50/75/100— Milníky scrollováníarticle_read_time_30/60/120s— Časové milníkyrelated_article_click— Klik na související článkyauthor_bio_click— Zájem o autora (E-E-A-T signál)share_click— Sdílení na sociální sítě
Definice kvalitního čtení:
- Scroll 80 %+ AND Čas 90s+ AND (Klik na související OR Sdílení)
KPI pro obsahovou strategii:
B2B: Hodnocení kvality leadů
Co sledovat:
pricing_page_view— Zájem o cenycase_study_read— Čtení případových studiídemo_video_complete— Dosledování demo videamultiple_service_view— Prohlížení více služebcontact_page_time_30s— Čas na kontaktní stránce
Model hodnocení leadů:
Použití:
Leady s 80+ body = Horké leady → Okamžitá priorita pro obchod. Leady s 40-79 body = Teplé leady → Pečující sekvence. Leady pod 40 bodů = Studené → Automatizace.
Implementace:
// Ukládání skóre do dataLayer/cookie (úložiště prohlížeče)
var leadScore = parseInt(localStorage.getItem('lead_score') || 0);
// Při události
leadScore += eventPoints;
localStorage.setItem('lead_score', leadScore);
// Poslat do GA4
dataLayer.push({
'event': 'lead_score_update',
'lead_score': leadScore
});
Metriky před a po: Případová studie
Klientka: B2B SaaS pro účetní firmy
Před vlastními událostmi:
- Sessions z organiku: 15 000/měsíc
- Bounce rate: "Nevíme" (GA4)
- Engagement rate: 52 %
- Konverze: 45 demo requests
- Závěr marketingu: "SEO přináší traffic, ale nekonvertuje."
Po nastavení vlastních událostí (1 měsíc):
Změny na základě dat:
- CTA přesunuto z 80 % na 40 % stránky
- Přidán sticky CTA
- Zkráceny úvodní sekce (méně fluff)
- Přidány subheadingy pro lepší scanning
Po 2 měsících:
Návratnost investice: Nastavení vlastních událostí trvalo 4 hodiny. Výsledek: +73 % konverzí.
Závěr a checklist
Vlastní události v GA4 vám odhalí, co se skutečně děje na vašem webu. Standardní metriky jsou jen povrch.
Checklist pro implementaci
Základní nastavení (den 1):
- Nainstalujte GTM (pokud nemáte)
- Nastavte sledování hloubky scrollování (25/50/75/100 %)
- Nastavte časové milníky (30s/60s/120s)
- Otestujte v režimu náhledu
Rozšířené sledování (týden 1):
- Sledování CTA kliků
- Sledování interních odkazů
- Definujte "aktivní čtení" pro váš web
- Nastavte aktivní čtení jako konverzi
Pokročilé (měsíc 1):
- Sledování nedokončení formulářů
- Sledování sledování videí (pokud relevantní)
- Záměr opuštění (volitelné)
- Hodnocení leadů (pro B2B)
Reportování (průběžně):
- Vytvořte vlastní průzkumný report
- Nastavte měsíční kontrolu vlastních událostí
- Porovnávejte s předchozím obdobím
- Optimalizujte na základě dat
Potřebujete pomoct s nastavením?
Správné měření je základ úspěšného SEO. Pokud nevíte, co uživatelé dělají, nemůžete optimalizovat.
Související články
- Google Analytics 4: Jak správně měřit organický traffic
- Google Search Console: Velký návod pro majitele firem
- Core Web Vitals: Kompletní průvodce pro rok 2026
- SEO pro e-shopy: Kompletní průvodce optimalizací
- Obsahová strategie pro SEO: Od keyword research po publikaci
Často kladené otázky (FAQ)
Potřebuji GTM pro vlastní události?
Ne nutně, ale velmi doporučuji. Bez GTM můžete vytvářet vlastní události pouze na základě existujících GA4 událostí (Admin → Events → Create event). To je omezené.
S GTM máte plnou kontrolu: sledování scrollování, sledování času, sledování kliků, sledování formulářů - cokoliv potřebujete. Nastavení GTM trvá hodinu, ale ušetří vám měsíce nepřesných dat.
Alternativa bez GTM: Přidat JavaScript přímo do kódu webu. Funkční, ale těžší na správu a ladění.
Jak ovlivňují vlastní události rychlost webu?
Minimálně, pokud jsou správně implementované. GTM se načítá asynchronně a neblokuje vykreslení stránky.
Čísla z praxe:
- GTM samotný: +50-100 ms na čas načtení
- 10 značek vlastních událostí: +10-20 ms
- Celkový dopad na Core Web Vitals: Zanedbatelný
Tip: Nenastavujte zbytečné události. Měřte to, co budete skutečně analyzovat. 10 relevantních událostí > 50 událostí, které nikdo nekontroluje.
Kolik vlastních událostí mohu mít?
GA4 má limity, ale jsou velkorysé:
Pro většinu webů je 500 událostí víc než dost. Problém není v limitu, ale v analýze. Pokud máte 100 událostí a nekontrolujete je, jsou zbytečné.
Doporučení: Začněte s 5-10 klíčovými událostmi. Přidávejte postupně podle potřeby.
Jak testovat, že události fungují?
4 úrovně testování:
- Režim náhledu GTM — Vidíte, jestli se značky spouští
- GA4 DebugView — Vidíte události v reálném čase (Admin → DebugView)
- GA4 Report v reálném čase — Události s mírným zpožděním
- Chrome DevTools — Záložka Network, filtrujte na "collect"
Krok za krokem:
- Zapněte náhled GTM
- Otevřete GA4 DebugView v jiné záložce
- Proveďte akci na webu (scroll, klik...)
- Ověřte v GTM, že se značka spustila
- Ověřte v GA4 DebugView, že událost přišla se správnými parametry
Pokud událost nefunguje:
- Zkontrolujte podmínky spouštěče
- Ověřte Measurement ID
- Zkontrolujte, že značka není blokovaná AdBlockerem
Jsou vlastní události v souladu s GDPR?
Ano, pokud máte správně nastavenou správu souhlasů.
Co potřebujete:
- Lišta cookies s možností odmítnout analytické cookies
- Režim souhlasu v GA4 — GA4 respektuje souhlas
- Dokumentaci v zásadách ochrany osobních údajů
Technické nastavení:
V GTM nastavte značky tak, aby se spouštěly pouze po udělení souhlasu:
// Inicializace režimu souhlasu
gtag('consent', 'default', {
'analytics_storage': 'denied'
});
// Po udělení souhlasu
gtag('consent', 'update', {
'analytics_storage': 'granted'
});
Vlastní události nesbírají osobní údaje (jméno, email, IP se anonymizuje). Sledujete chování, ne identitu. To je v souladu s GDPR, pokud máte souhlas pro analytické účely.
