Event Tracking — прикупљање и анализа догађаја о радњама корисника унутар мобилне апликације, од притискања дугмади до обављања куповина. Квалитетан event tracking је основа продукт аналитике, A/B тестирања и персонализације. Према подацима Amplitude, 2024, тимови са систематским Event Tracking доносе продукт одлуке 3 пута брже захваљујући data-driven приступу. Без догађаја аналитика апликације је слепа.
Главне тачке
Event Tracking — је процес прикупљања, складиштења и анализе дискретних радњи корисника у апликацији. Сваки догађај се састоји од имена (event_name) и скупа параметара (event_params). На пример, догађај purchase има параметре price, currency, product_id, quantity.
За разлику од Screen View, који бележи чињеницу отварања екрана, Event Tracking описује шта тачно корисник ради на том екрану: притиснуо дугме „Купи", отворио корпу, применио промо код. Без догађаја немогуће је разумети мотивацију и контекст радњи корисника.
Сваки Analytics Event садржи обавезна и опциона поља. Обавезна: event_name, event_timestamp, user_id (или device_id). Опциона: параметри, опис контекста.
| Поље | Обавезно | Пример |
|---|---|---|
| event_name | Да | „purchase_completed” |
| event_timestamp | Да | 1719876543000 |
| user_id | Да | „user_abc123” |
| session_id | Не | „session_456def” |
| revenue | Не | 9.99 |
| currency | Не | „USD” |
Параметар revenue је посебно важан — прослеђује се MMP платформама за аутоматско израчунавање ROAS и LTV.
Догађаји се класификују по пореклу и намени. Подела помаже у организовању структуре података и додељивању права приступа различитим тимовима.
SDK аналитичких платформи аутоматски прикупљају основне догађаје: app_install, app_remove, session_start, screen_view. Firebase Analytics генерише око 20 аутоматских догађаја без иједне линије кода. Ови догађаји покривају основне метрике, али не дају увид у пословну логику.
Прилагођени догађаји — оно што чини Event Tracking вредним. Они описују пословне радње: add_to_cart, start_subscription, level_complete, share_content, search_performed. Прилагођени догађаји захтевају експлицитно слање из кода апликације.
// Слање прилагођеног догађаја у 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)
У примеру догађај subscribe_premium садржи четири контекстна параметра. Параметар source омогућава разумевање са ког екрана је корисник извршио претплату — onboarding, подешавања или paywall.
Поред догађаја, Event Tracking укључује User Properties — атрибуте везане за корисника: ниво претплате, земља, верзија апликације. User Property се шаље једном и примењује се на све наредне догађаје сесије. Ово омогућава сегментацију аналитике без додавања параметара сваком догађају.
Super Properties (Amplitude) или Global Properties (Mixpanel) — атрибути везани за сесију, а не за корисника. Користе се за A/B тестове: variant_id као Super Property додаје се свим догађајима сесије, а аналитичар види којој групи припада корисник.
Revenue-догађаји — посебна класа за бележење трансакција. Садрже износ, валуту и врсту куповине (претплата, једнократна куповина, обнављање). MMP платформе (AppsFlyer, Adjust) захтевају revenue-догађаје за израчунавање ROAS.
Према подацима Branch (2024), апликације које коректно прослеђују revenue-догађаје MMP-у добијају 25% прецизније податке о атрибуцији и могу оптимизовати кампање на основу LTV, а не CPI.
Подешавање Event Tracking одвија се у три фазе: планирање шеме догађаја, интеграција SDK, валидација података.
Направите Event Taxonomy — документ у коме је описан сваки догађај: име, параметри, окидач слања, власник. Пример за e-commerce: order_completed → параметри: order_id, total_price, items_count, payment_method, shipping_city.
Повежите Analytics SDK са пројектом. Firebase Analytics, Amplitude, Mixpanel — сваки SDK захтева иницијализацију у Application.onCreate(). Пример за 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,
},
);
}
}
Класа AnalyticsService централизује слање свих догађаја. Свака метода одговара пословној радњи. Ово поједностављује проналажење слања — ако догађај не стиже, тражите по имену методе у коду. При скалирању пројекта број метода може порасти на 50–100, али структура остаје читљива захваљујући груписању по функцијама.
Firebase DebugView омогућава преглед догађаја у реалном времену на уређају програмера. Укључите режим: adb shell setprop debug.firebase.analytics.app your.package. Сви догађаји ће се појавити у Firebase конзоли са кашњењем мањим од 5 секунди.
Након укључивања DebugView, отворите апликацију и извршите тест сценарио — регистрацију, куповину, преглед каталога. У конзоли проверите: да ли су сви догађаји послати, да ли су параметри исправни, да ли постоји дуплирање. Amplitude нуди сличан алат — Amplitude Debugger за iOS и Android.
Аутоматска валидација кроз CI/CD — следећи ниво квалитета. Додајте у pipeline скрипт који проверава да ли је сваки догађај из шеме послат барем једном током тестног прогона. Ово спречава издавање верзија са пропуштеним догађајима и штеди време QA инжењерима.
Именовање догађаја — најпотцењенији аспект Event Tracking. Погрешно име чини аналитику бескорисном када у пројекту постоји више од 50 догађаја.
Користите образац object_action (мала слова, snake_case): product_added, cart_opened, payment_failed, subscription_cancelled. Објекат — ентитет, радња — глагол у прошлом времену. Чита се као реченица: „производ додат", „корпа отворена".
НЕ користите размаке („Add to Cart"), CamelCase („AddToCart"), тачку („add.to.cart"), цртицу („add-to-cart"). Већина SDK препоручује snake_case. НЕ користите називе UI елемената („btn_submit_clicked") — догађај треба да буде пословни, не технички.
За префикс додајте назив функционалности или екрана: onboarding_step_completed, checkout_payment_selected. Ово омогућава филтрирање догађаја по функционалности у извештајима.
Параметри се деле на три типа: string (вредност), number (број за агрегацију), boolean (застава). String параметри садрже категоријалне податке: земља, извор саобраћаја, назив производа. Number параметри служе за метрике: цена, количина, трајање. Boolean параметри обележавају стање: is_trial, is_promo_applied.
Избегавајте прослеђивање објеката или низова у једном параметру — аналитичке платформе не знају да их обраде. Уместо JSON стринга у једном пољу, проследите неколико равних параметара. На пример, уместо items_count_total проследите одвојено items_count и total_price.
Избор платформе Event Tracking зависи од обима пројекта и тима. Размотримо три варијанте различитих нивоа.
Firebase — стандардни избор за стартапове. Бесплатни лимит — 500 различитих event_name, неограничен број параметара. Интеграција са BigQuery за прилагођену аналитику. Недостаци: ограничена сегментација, нема аутоматског повезивања догађаја у сесије.
Amplitude — платформа за продукт аналитику. Подржава Behavioural Cohorts, Funnel Analysis, Pathfinder. Омогућава креирање виртуелних догађаја од комбинације реалних. Интегрише се са 50+ алата путем Segment-а.
Segment — middleware за управљање догађајима. Шаљете догађаје Segment-у, а он их распоређује на 300+ алата. Користан у enterprise-у где се истовремено користе Firebase, Amplitude, Mixpanel, Braze и Salesforce.
PostHog — open-source платформа за продукт аналитику са сопственим Event Tracking. Подржава аутоматско хватање догађаја, снимање сесија и feature flags. Поставља се на сопствени сервер, што је кључно за пројекте са GDPR или поверљивим подацима. Нуди Python-компатибилни API за ETL цевоводе.
За Flutter пројекте препоручује се flutterfire_analytics + Amplitude кроз plugin amplitude_flutter. За React Native — react-native-firebase + mixpanel-react-native.
Често постављана питања
Оптимални опсег је 50–150 догађаја по апликацији. Мање од 50 — недостаје података за анализу, више од 150 — опада квалитет (аналитичари не стижу за свима). За MVP је довољно 20–30 кључних догађаја.
Просечан мобилни SDK баферише догађаје и шаље их у групама сваких 5–30 секунди. Безбедна граница је 100 догађаја у минути по уређају. Више — ризик од губитка података при лошој вези. Скокови (нпр. учитавање нивоа) нису критични.
Да, савремени SDK чувају догађаје у локалном складишту када нема мреже. По успостављању везе шаљу се са тачном временском ознаком. Firebase чува до 7 дана offline догађаја, Amplitude — до 30 дана.
Нови догађај се креира са новим event_name, стари остаје за историјске податке. Направите мапирање у BI слоју (SQL CASE или dashboard) за спајање података. Никада не мењајте име постојећег догађаја — покварићете историју.
Да, Event Tracking је основа персонализације. Догађаји се филтрирају у реалном времену: ако је корисник послао product_viewed 3 пута без куповине, прикажите попуп са попустом. Amplitude и Braze подржавају окидаче засноване на догађајима.
Закључак
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође