Event Tracking — zbieranie i analiza zdarzeń dotyczących działań użytkownika w aplikacji mobilnej, od kliknięcia przycisków po dokonanie zakupów. Wysokiej jakości event tracking to podstawa analityki produktowej, testów A/B i personalizacji. Według danych Amplitude, 2024, zespoły z systematycznym Event Tracking podejmują decyzje produktowe 3 razy szybciej dzięki podejściu data-driven. Bez zdarzeń analityka aplikacji jest ślepa.
Najważniejsze
Event Tracking — to proces zbierania, przechowywania i analizy dyskretnych działań użytkownika w aplikacji. Każde zdarzenie składa się z nazwy (event_name) i zestawu parametrów (event_params). Na przykład zdarzenie purchase ma parametry price, currency, product_id, quantity.
W przeciwieństwie do Screen View, który rejestruje fakt otwarcia ekranu, Event Tracking opisuje, co dokładnie użytkownik robi na tym ekranie: kliknął przycisk „Kup”, otworzył koszyk, zastosował kod promocyjny. Bez zdarzeń nie da się zrozumieć motywacji i kontekstu działań użytkownika.
Każde Analytics Event zawiera pola obowiązkowe i opcjonalne. Obowiązkowe: event_name, event_timestamp, user_id (lub device_id). Opcjonalne: parametry, opis kontekstu.
| Pole | Obowiązkowe | Przykład |
|---|---|---|
| event_name | Tak | „purchase_completed” |
| event_timestamp | Tak | 1719876543000 |
| user_id | Tak | „user_abc123” |
| session_id | Nie | „session_456def” |
| revenue | Nie | 9.99 |
| currency | Nie | „USD” |
Parametr revenue jest szczególnie ważny — przekazywany jest do platform MMP w celu automatycznego obliczania ROAS i LTV.
Zdarzenia klasyfikowane są według pochodzenia i przeznaczenia. Podział pomaga zorganizować strukturę danych i przypisać prawa dostępu dla różnych zespołów.
SDK platform analitycznych automatycznie zbierają podstawowe zdarzenia: app_install, app_remove, session_start, screen_view. Firebase Analytics generuje około 20 automatycznych zdarzeń bez ani jednej linijki kodu. Te zdarzenia pokrywają podstawowe metryki, ale nie dają zrozumienia logiki biznesowej.
Zdarzenia niestandardowe — to co czyni Event Tracking wartościowym. Opisują one działania biznesowe: add_to_cart, start_subscription, level_complete, share_content, search_performed. Zdarzenia niestandardowe wymagają jawnego wysłania z kodu aplikacji.
// Wysyłanie zdarzenia niestandardowego w 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)
W przykładzie zdarzenie subscribe_premium zawiera cztery parametry kontekstu. Parametr source pozwala zrozumieć, z którego ekranu użytkownik dokonał subskrypcji — onboarding, ustawienia czy paywall.
Oprócz zdarzeń, Event Tracking obejmuje User Properties — atrybuty przypisane do użytkownika: poziom subskrypcji, kraj, wersja aplikacji. User Property wysyłany jest raz i stosowany do wszystkich kolejnych zdarzeń sesji. Pozwala to segmentować analitykę bez dodawania parametrów do każdego zdarzenia.
Super Properties (Amplitude) lub Global Properties (Mixpanel) — atrybuty przypisane do sesji, a nie do użytkownika. Używane do testów A/B: variant_id jako Super Property dodawany jest do wszystkich zdarzeń w sesji, a analityk widzi, do której grupy należy użytkownik.
Revenue-zdarzenia — oddzielna klasa do rejestracji transakcji. Zawierają kwotę, walutę i rodzaj zakupu (subskrypcja, jednorazowy zakup, przywrócenie). Platformy MMP (AppsFlyer, Adjust) wymagają revenue-zdarzeń do obliczania ROAS.
Według danych Branch (2024), aplikacje prawidłowo przekazujące revenue-zdarzenia do MMP otrzymują o 25% dokładniejsze dane dotyczące atrybucji i mogą optymalizować kampanie pod kątem LTV, a nie CPI.
Konfiguracja Event Tracking przebiega w trzech etapach: planowanie schematu zdarzeń, integracja SDK, walidacja danych.
Stwórz Event Taxonomy — dokument, w którym opisane jest każde zdarzenie: nazwa, parametry, wyzwalacz wysyłki, właściciel. Przykład dla e-commerce: order_completed → parametry: order_id, total_price, items_count, payment_method, shipping_city.
Podłącz Analytics SDK do projektu. Firebase Analytics, Amplitude, Mixpanel — każde SDK wymaga inicjalizacji w Application.onCreate(). Przykład dla 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,
},
);
}
}
Klasa AnalyticsService centralizuje wysyłkę wszystkich zdarzeń. Każda metoda odpowiada działaniu biznesowemu. Upraszcza to wyszukiwanie wysyłki — jeśli zdarzenie nie przychodzi, szukasz po nazwie metody w kodzie. Przy skalowaniu projektu liczba metod może wzrosnąć do 50–100, ale struktura pozostaje czytelna dzięki grupowaniu według funkcji.
Firebase DebugView pozwala widzieć zdarzenia w czasie rzeczywistym na urządzeniu programisty. Włącz tryb: adb shell setprop debug.firebase.analytics.app your.package. Wszystkie zdarzenia pojawią się w konsoli Firebase z opóźnieniem mniejszym niż 5 sekund.
Po włączeniu DebugView otwórz aplikację i wykonaj scenariusz testowy — rejestrację, zakup, przeglądanie katalogu. W konsoli sprawdź: czy wszystkie zdarzenia zostały wysłane, czy parametry są prawidłowe, czy nie ma duplikacji. Amplitude oferuje podobne narzędzie — Amplitude Debugger dla iOS i Android.
Automatyczna walidacja przez CI/CD — kolejny poziom jakości. Dodaj do pipeline’u skrypt, który sprawdza, czy każde zdarzenie ze schematu zostało wysłane przynajmniej raz podczas testowego przebiegu. Zapobiega to wdrażaniu wersji z pominiętymi zdarzeniami i oszczędza czas inżynierów QA.
Nazewnictwo zdarzeń — najbardziej niedoceniany aspekt Event Tracking. Nieprawidłowa nazwa sprawia, że analityka staje się bezużyteczna, gdy w projekcie jest więcej niż 50 zdarzeń.
Używaj wzorca object_action (małe litery, snake_case): product_added, cart_opened, payment_failed, subscription_cancelled. Obiekt — encja, działanie — czasownik w czasie przeszłym. Czyta się to jak zdanie: „produkt dodany”, „koszyk otwarty”.
NIE używaj spacji („Add to Cart”), CamelCase („AddToCart”), kropki („add.to.cart”), łącznika („add-to-cart”). Większość SDK zaleca snake_case. NIE używaj nazw elementów UI („btn_submit_clicked”) — zdarzenie powinno być biznesowe, nie techniczne.
Dla prefiksu dodawaj nazwę funkcji lub ekranu: onboarding_step_completed, checkout_payment_selected. Pozwala to filtrować zdarzenia według funkcjonalności w raportach.
Parametry dzielą się na trzy typy: string (wartość), number (liczba do agregacji), boolean (flaga). Parametry string zawierają dane kategoryczne: kraj, źródło ruchu, nazwa produktu. Parametry number służą do metryk: cena, ilość, czas trwania. Parametry boolean oznaczają stan: is_trial, is_promo_applied.
Unikaj przekazywania obiektów lub tablic w jednym parametrze — platformy analityczne nie potrafią ich parsować. Zamiast JSON-stringa w jednym polu przekaż kilka płaskich parametrów. Na przykład zamiast items_count_total przekaż osobno items_count i total_price.
Wybór platformy Event Tracking zależy od skali projektu i zespołu. Rozważmy trzy warianty różnych poziomów.
Firebase — standardowy wybór dla startupów. Bezpłatny limit — 500 różnych event_name, nieograniczona liczba parametrów. Integracja z BigQuery dla niestandardowej analityki. Minusy: ograniczona segmentacja, brak automatycznego łączenia zdarzeń w sesje.
Amplitude — platforma do analityki produktowej. Obsługuje Behavioural Cohorts, Funnel Analysis, Pathfinder. Pozwala tworzyć wirtualne zdarzenia z kombinacji rzeczywistych. Integruje się z 50+ narzędziami przez Segment.
Segment — middleware do zarządzania zdarzeniami. Wysyłasz zdarzenia do Segment, a on rozdziela je do 300+ narzędzi. Przydatny w enterprise, gdzie jednocześnie używane są Firebase, Amplitude, Mixpanel, Braze i Salesforce.
PostHog — open-source’owa platforma analityki produktowej z własnym Event Tracking. Obsługuje autokapturę zdarzeń, nagrywanie sesji i feature flags. Wdrażana na własnym serwerze, co jest kluczowe dla projektów z GDPR lub danymi poufnymi. Oferuje kompatybilne z Pythonem API dla potoków ETL.
Dla projektów Flutter zalecane jest flutterfire_analytics + Amplitude przez plugin amplitude_flutter. Dla React Native — react-native-firebase + mixpanel-react-native.
Często zadawane pytania
Optymalny zakres to 50–150 zdarzeń na aplikację. Mniej niż 50 — brakuje danych do analizy, więcej niż 150 — spada jakość (analitycy nie nadążają za wszystkimi). Dla MVP wystarczy 20–30 kluczowych zdarzeń.
Przeciętny mobilny SDK buforuje zdarzenia i wysyła je partiami co 5–30 sekund. Bezpieczny limit to 100 zdarzeń na minutę na urządzenie. Więcej — ryzyko utraty danych przy słabym połączeniu. Skoki (np. ładowanie poziomu) nie są krytyczne.
Tak, nowoczesne SDK zapisują zdarzenia w lokalnym magazynie przy braku sieci. Po przywróceniu połączenia są wysyłane z prawidłowym znacznikiem czasu. Firebase przechowuje do 7 dni zdarzeń offline, Amplitude — do 30 dni.
Nowe zdarzenie tworzone jest z nowym event_name, stare — pozostaje dla danych historycznych. Stwórz mapowanie w warstwie BI (SQL CASE lub dashboard) do scalenia danych. Nigdy nie zmieniaj nazwy istniejącego zdarzenia — zepsujesz historię.
Tak, Event Tracking to podstawa personalizacji. Zdarzenia są filtrowane w czasie rzeczywistym: jeśli użytkownik wysłał product_viewed 3 razy bez zakupu, pokaż pop-up z rabatem. Amplitude i Braze obsługują wyzwalacze oparte na zdarzeniach.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również