Event Tracking — sběr a analýza událostí o akcích uživatele v mobilní aplikaci, od stisknutí tlačítek až po nákupy. Kvalitní event tracking je základem produktové analytiky, A/B testování a personalizace. Podle údajů Amplitude, 2024 přijímají týmy se systematickým Event Tracking produktová rozhodnutí 3krát rychleji díky data-driven přístupu. Bez událostí je analytika aplikace slepá.
Hlavní body
Event Tracking — je proces shromažďování, ukládání a analýzy diskrétních akcí uživatele v aplikaci. Každá událost se skládá z názvu (event_name) a sady parametrů (event_params). Například událost purchase má parametry price, currency, product_id, quantity.
Na rozdíl od Screen View, který zaznamenává otevření obrazovky, Event Tracking popisuje, co přesně uživatel na této obrazovce dělá: stiskl tlačítko „Koupit“, otevřel košík, použil promo kód. Bez událostí není možné pochopit motivaci a kontext akcí uživatele.
Každý Analytics Event obsahuje povinná a volitelná pole. Povinná: event_name, event_timestamp, user_id (nebo device_id). Volitelná: parametry, popis kontextu.
| Pole | Povinné | Příklad |
|---|---|---|
| event_name | Ano | „purchase_completed” |
| event_timestamp | Ano | 1719876543000 |
| user_id | Ano | „user_abc123” |
| session_id | Ne | „session_456def” |
| revenue | Ne | 9.99 |
| currency | Ne | „USD” |
Parametr revenue je obzvláště důležitý — předává se platformám MMP pro automatický výpočet ROAS a LTV.
Události jsou klasifikovány podle původu a účelu. Rozdělení pomáhá organizovat strukturu dat a přiřazovat přístupová práva různým týmům.
SDK analytických platforem automaticky sbírají základní události: app_install, app_remove, session_start, screen_view. Firebase Analytics generuje asi 20 automatických událostí bez jediného řádku kódu. Tyto události pokrývají základní metriky, ale neposkytují pochopení obchodní logiky.
Vlastní události — to, co dělá Event Tracking cenným. Popisují obchodní akce: add_to_cart, start_subscription, level_complete, share_content, search_performed. Vlastní události vyžadují explicitní odeslání z kódu aplikace.
// Odeslání vlastní události do Firebase
val bundle = Bundle().apply {
putString(AnalyticsParam.ITEM_ID, "prod_789")
putString(AnalyticsParam.ITEM_NAME, "Premium Subscription")
putString(AnalyticsParam.CURRENCY, "USD")
putDouble(AnalyticsParam.PRICE, 29.99)
putString(AnalyticsParam.SOURCE, "onboarding_screen")
}
FirebaseAnalytics.getInstance(this)
.logEvent("subscribe_premium", bundle)
V příkladu událost subscribe_premium obsahuje čtyři kontextové parametry. Parametr source umožňuje pochopit, z které obrazovky uživatel provedl předplatné — onboarding, nastavení nebo paywall.
Kromě událostí zahrnuje Event Tracking User Properties — atributy připojené k uživateli: úroveň předplatného, země, verze aplikace. User Property se odešle jednou a aplikuje se na všechny následující události relace. To umožňuje segmentaci analytiky bez přidávání parametrů ke každé události.
Super Properties (Amplitude) nebo Global Properties (Mixpanel) — atributy připojené k relaci, nikoli k uživateli. Používají se pro A/B testy: variant_id jako Super Property se přidá ke všem událostem v relaci a analytik vidí, do které skupiny uživatel patří.
Revenue události — samostatná třída pro zaznamenávání transakcí. Obsahují částku, měnu a typ nákupu (předplatné, jednorázový nákup, obnovení). Platformy MMP (AppsFlyer, Adjust) vyžadují revenue události pro výpočet ROAS.
Podle údajů Branch (2024) dostávají aplikace, které správně předávají revenue události MMP, o 25% přesnější data o atribuci a mohou optimalizovat kampaně na základě LTV, nikoli CPI.
Nastavení Event Tracking probíhá ve třech fázích: plánování schématu událostí, integrace SDK, validace dat.
Vytvořte Event Taxonomy — dokument, kde je popsána každá událost: název, parametry, spouštěč odeslání, vlastník. Příklad pro e-commerce: order_completed → parametry: order_id, total_price, items_count, payment_method, shipping_city.
Připojte Analytics SDK k projektu. Firebase Analytics, Amplitude, Mixpanel — každé SDK vyžaduje inicializaci v Application.onCreate(). Příklad pro Flutter:
import 'package:firebase_analytics/firebase_analytics.dart';
class AnalyticsService {
final _analytics = FirebaseAnalytics.instance();
Future<void> logPurchase({
required String productId,
required double price,
required String currency,
}) async {
await _analytics.logEvent(
name: 'purchase_completed',
parameters: {
'product_id': productId,
'price': price,
'currency': currency,
'timestamp': DateTime.now().millisecondsSinceEpoch,
},
);
}
}
Třída AnalyticsService centralizuje odesílání všech událostí. Každá metoda odpovídá obchodní akci. To zjednodušuje hledání odeslání — pokud událost nepřichází, hledáte podle názvu metody v kódu. Při škálování projektu může počet metod vzrůst na 50–100, ale struktura zůstává čitelná díky seskupení podle funkcí.
Firebase DebugView umožňuje vidět události v reálném čase na zařízení vývojáře. Zapněte režim: adb shell setprop debug.firebase.analytics.app your.package. Všechny události se objeví v konzoli Firebase se zpožděním kratším než 5 sekund.
Po zapnutí DebugView otevřete aplikaci a proveďte testovací scénář — registraci, nákup, prohlížení katalogu. V konzoli zkontrolujte: byly všechny události odeslány, jsou parametry správné, nedochází k duplikaci. Amplitude nabízí podobný nástroj — Amplitude Debugger pro iOS a Android.
Automatická validace prostřednictvím CI/CD — další úroveň kvality. Přidejte do pipeline skript, který kontroluje, zda každá událost ze schématu byla odeslána alespoň jednou během testovacího běhu. To zabraňuje nasazení verzí s chybějícími událostmi a šetří čas QA inženýrů.
Pojmenování událostí — nejvíce podceňovaný aspekt Event Tracking. Nesprávné jméno činí analytiku nepoužitelnou, když je v projektu více než 50 událostí.
Použijte vzor object_action (malá písmena, snake_case): product_added, cart_opened, payment_failed, subscription_cancelled. Objekt — entita, akce — sloveso v minulém čase. Čte se jako věta: „produkt přidán”, „košík otevřen”.
NEPOUŽÍVEJTE mezery („Add to Cart”), CamelCase („AddToCart”), tečku („add.to.cart”), pomlčku („add-to-cart”). Většina SDK doporučuje snake_case. NEPOUŽÍVEJTE názvy UI prvků („btn_submit_clicked”) — událost by měla být obchodní, ne technická.
Pro prefix přidejte název funkce nebo obrazovky: onboarding_step_completed, checkout_payment_selected. To umožňuje filtrovat události podle funkcionality v reportech.
Parametry se dělí na tři typy: string (hodnota), number (číslo pro agregaci), boolean (příznak). String parametry obsahují kategorická data: země, zdroj návštěvnosti, název produktu. Number parametry slouží pro metriky: cena, množství, doba trvání. Boolean parametry označují stav: is_trial, is_promo_applied.
Vyhněte se předávání objektů nebo polí v jednom parametru — analytické platformy je neumí zpracovat. Místo JSON řetězce v jednom poli předejte několik plochých parametrů. Například místo items_count_total předejte samostatně items_count a total_price.
Výběr platformy Event Tracking závisí na rozsahu projektu a týmu. Zvažme tři varianty různých úrovní.
Firebase — standardní volba pro startupy. Bezplatný limit — 500 různých event_name, neomezený počet parametrů. Integrace s BigQuery pro vlastní analytiku. Nevýhody: omezená segmentace, chybí automatické propojování událostí v relacích.
Amplitude — platforma pro produktovou analytiku. Podporuje Behavioural Cohorts, Funnel Analysis, Pathfinder. Umožňuje vytvářet virtuální události z kombinace reálných. Integruje se s 50+ nástroji prostřednictvím Segmentu.
Segment — middleware pro správu událostí. Odesíláte události do Segmentu a ten je distribuuje do 300+ nástrojů. Užitečný v enterprise, kde se současně používají Firebase, Amplitude, Mixpanel, Braze a Salesforce.
PostHog — open-source platforma pro produktovou analytiku s vlastním Event Tracking. Podporuje automatické zachytávání událostí, nahrávání relací a feature flags. Nasazuje se na vlastní server, což je klíčové pro projekty s GDPR nebo důvěrnými daty. Poskytuje Python-kompatibilní API pro ETL pipeline.
Pro Flutter projekty se doporučuje flutterfire_analytics + Amplitude přes plugin amplitude_flutter. Pro React Native — react-native-firebase + mixpanel-react-native.
Často kladené otázky
Optimální rozsah je 50–150 událostí na aplikaci. Méně než 50 — chybí data pro analýzu, více než 150 — kvalita klesá (analytici nestíhají všechny). Pro MVP stačí 20–30 klíčových událostí.
Průměrné mobilní SDK ukládá události do vyrovnávací paměti a odesílá je v dávkách každých 5–30 sekund. Bezpečný limit — 100 událostí za minutu na zařízení. Více — riziko ztráty dat při špatném připojení. Výkyvy (např. načítání úrovně) nejsou kritické.
Ano, moderní SDK ukládají události do místního úložiště při absenci sítě. Po obnovení připojení jsou odeslány se správným časovým razítkem. Firebase uchovává až 7 dní offline událostí, Amplitude — až 30 dní.
Nová událost se vytvoří s novým event_name, stará zůstává pro historická data. Vytvořte mapování ve vrstvě BI (SQL CASE nebo dashboard) pro sloučení dat. Nikdy neměňte název existující události — zničíte historii.
Ano, Event Tracking je základem personalizace. Události jsou filtrovány v reálném čase: pokud uživatel odeslal product_viewed 3krát bez nákupu, zobrazte slevové vyskakovací okno. Amplitude a Braze podporují spouštěče založené na událostech.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také