BC.Bartłomiej Cygan
Wróć do artykułów
10 lipca 2026Bartek Cygan

App tracking bez złudzeń: GA4, UTM, MMP i SKAdNetwork w pomiarze kampanii aplikacji 📱

Kompleksowy przewodnik po atrybucji mobilnej. Dowiedz się, dlaczego instalacja przerywa klasyczną ścieżkę śledzenia, czym różni się GA4 od MMP i jak opanować SKAdNetwork oraz AdAttributionKit na iOS.

W klasycznym marketingu internetowym przyzwyczailiśmy się do prostej, liniowej ścieżki – niczym lot w próżni z punktu A do punktu B:

kliknięcie reklamy → wejście na stronę → wykonanie konwersji

Wszystkie parametry kampanii przemieszczają się bez oporu w adresie URL, przeglądarka zachowuje pliki cookie, a skrypt analityczny bez problemu rejestruje sesję i przypisuje jej konwersję.

Jednak w kampaniach promujących aplikacje mobilne ta prosta ścieżka zderza się z potężną grawitacją sklepów z aplikacjami.


Dlaczego instalacja to analityczna „czarna dziura”?

W świecie aplikacji mobilnych, nasza aplikacja jest centrum układu słonecznego, a sieci reklamowe (jak Meta czy Google) to odległe planety. Ścieżka użytkownika (naszej sondy) wygląda zupełnie inaczej:

kliknięcie reklamy na planecie "Meta" → wejście w pole grawitacyjne sklepu (App Store) → pobranie → instalacja → lądowanie (pierwsze uruchomienie) → konwersja w centrum (App)

Gdy użytkownik klika reklamę instalacyjną, opuszcza znajomą orbitę i trafia do zamkniętego ekosystemu sklepu. W momencie instalacji nowa aplikacja nie ma dostępu do parametrów URL, plików cookie ani historii lotu użytkownika. Wszystkie dane o źródle znikają za horyzontem zdarzeń.

Instalacja to czarna dziura, która fizycznie rozrywa standardową ścieżkę atrybucji i pochłania dane.

Ścieżka Web (Lot po prostej)

  1. Kliknięcie w reklamę (z parametrami UTM)
  2. Przejście bezpośrednio na stronę docelową
  3. Zarejestrowanie sesji przez skrypt
  4. Konwersja na stronie (pełne dane)

Ścieżka App (Czarna Dziura)

  1. Kliknięcie w reklamę na orbicie
  2. Wkroczenie w grawitację App Store / Google Play
  3. Pobranie i instalacja (Dane znikają za horyzontem!)
  4. Pierwsze uruchomienie w centrum
  5. Konwersja w aplikacji (brak powiązania ze źródłem)

Google Analytics 4 (GA4) doskonale mierzy zachowanie użytkownika wewnątrz aplikacji. Samo w sobie nie potrafi jednak połączyć pierwszego otwarcia aplikacji z kliknięciem reklamy w zewnętrznej sieci reklamowej. Do tego celu potrzebna jest dedykowana architektura.


1. Dwa różne pytania: Analityka produktu vs Atrybucja

01

Analityka Centrum (Produkt)

Co dzieje się na słońcu?

Co użytkownik robi po wylądowaniu w aplikacji? Gdzie napotyka błędy?

Koncentruje się na optymalizacji samej aplikacji. Zrozumienie, co dzieje się w samym centrum układu.

Dedykowane narzędzie:Google Analytics 4 & Firebase SDK
first_openscreen_view
02

Atrybucja Orbitalna (MMP)

Z jakiej planety przyleciał?

Która planeta (sieć reklamowa) wysłała użytkownika do naszego systemu?

Koncentruje się na nawigacji i ruchu międzyplanetarnym. Łączy przerwany lot przez czarną dziurę (sklep) i deduplikuje źródła.

Dedykowane narzędzie:Mobile Measurement Partner (MMP)
MMP SDKDeduplikacja

🚀 Kluczowy wniosek: Te dwa systemy nie konkurują ze sobą – tworzą pełny obraz układu słonecznego. GA4 bada słońce, a MMP nawiguje ruchem na orbitach.

02

Atrybucja Marketingowa

Skąd użytkownik przyszedł?

Kluczowe pytanie: Która reklama, kampania lub sieć reklamowa doprowadziła do instalacji i konwersji?

Koncentruje się na efektywności marketingowej i ROAS. Łączy przerwany link reklamowy z instalacją i deduplikuje konwersje między kanałami.

Dedykowane narzędzie:Mobile Measurement Partner (MMP)
MMP SDKDeduplikacjaSKAN / AAKitPostbacki

💡 Kluczowy wniosek: Te dwa systemy nie konkurują ze sobą – pełnią komplementarne, uzupełniające się role i powinny działać równolegle.


2. Jak działa GA4 w aplikacji?

SDK Firebase automatycznie rejestruje zdarzenia techniczne, a także pozwala na definiowanie własnych eventów produktowych, takich jak:

  • first_open (pierwsze uruchomienie aplikacji – odpowiednik instalacji),
  • ukończenie onboardingu i rejestracja konta,
  • rozpoczęcie okresu próbnego (trial) oraz zakupy subskrypcyjne.

first_open zamiast instalacji

Warto pamiętać, że:

pobranie ze sklepu ≠ instalacja raportowana przez sieć ≠ first_open w GA4

Użytkownik może pobrać aplikację ze sklepu, ale nigdy jej nie otworzyć. Sieć reklamowa zaraportuje wtedy instalację, a GA4 nie zarejestruje zdarzenia first_open.

Domyślnie, bez dodatkowej konfiguracji, GA4 przypisze źródło pozyskania większości nowych użytkowników jako (direct) / (none) lub organic. Informacja o kampanii reklamowej po prostu gubi się w drodze przez sklep. Google umożliwia ręczne zasilenie tych danych poprzez wysłanie specjalnego zdarzenia campaign_details krótko po instalacji, ale wymaga to dodatkowych integracji.


3. UTM a MMP – dlaczego nie są tym samym?

Częstym błędem jest myślenie, że parametry UTM w linkach reklamowych mogą w pełni zastąpić integrację z MMP.

Parametr UTM to jedynie etykieta opisująca źródło kliknięcia. MMP to zaawansowany system atrybucyjny.

Gdy użytkownik klika link z parametrami UTM, a aplikacja jest już zainstalowana na telefonie, deep link (lub App Link/Universal Link) otwiera ją bezpośrednio. In tym scenariuszu aplikacja odczytuje parametry UTM i przekazuje je do GA4 – śledzenie działa poprawnie.

Problem pojawia się przy nowych instalacjach. Wtedy sama obecność parametrów UTM w linku nie gwarantuje, że zostaną one odczytane po przejściu przez App Store czy Google Play.

Google Analytics 4 (GA4)

Analityka produktu i zachowania: Co użytkownik robi po wejściu do aplikacji? Jak przebiega onboarding? Gdzie odpada w lejku?

  • Rejestracja zdarzeń produktowych (screen_view, sign_up, add_to_cart)
  • Analiza kohortowa i retencja
  • Integracja z Firebase i eksport do BigQuery
  • Słaba atrybucja zewnętrzna bez dodatkowej integracji

Mobile Measurement Partner (MMP)

Atrybucja marketingowa: Skąd użytkownik przyszedł? Która reklama doprowadziła do instalacji? Kto powinien otrzymać credit?

  • Atrybucja instalacji do konkretnych sieci reklamowych
  • Deduplikacja konwersji w środowisku wielokanałowym
  • Dystrybucja postbacków w czasie rzeczywistym do sieci reklamowych
  • Obsługa ATT, SKAN i deferred deep linking na iOS

Jak działa atrybucja MMP?

SDK partnera pomiarowego integruje się z systemami operacyjnymi oraz sieciami reklamowymi (Meta, Google, TikTok). Gdy użytkownik klika reklamę, MMP rejestruje kliknięcie (wraz z ID urządzenia). Po instalacji i pierwszym otwarciu aplikacji, SDK MMP zbiera dostępne identyfikatory i odpytuje swój serwer. Następuje dopasowanie (np. deterministyczne przez Google Play Install Referrer lub probabilistyczne), a MMP podejmuje decyzję o atrybucji i w czasie rzeczywistym odsyła informację (tzw. postback) do sieci reklamowej, która wygenerowała kliknięcie.

🔍 Techniczny Deep Dive: Jak działa Install Referrer API na Androidzie?

Na systemie Android, Google Play udostępnia dedykowany mechanizm pozwalający aplikacji na odpytanie sklepu o szczegóły kliknięcia instalacyjnego. Po pierwszym uruchomieniu, SDK (MMP lub Firebase) łączy się z lokalnym serwisem Google Play za pomocą interfejsu AIDL (Android Interface Definition Language).

Odpowiedź z API zawiera m.in.:

{
  "install_referrer": "utm_source=facebook&utm_medium=paid_social&utm_campaign=summer_sale&fbclid=...",
  "referrer_click_timestamp_seconds": 1783856200,
  "install_begin_timestamp_seconds": 1783856240,
  "google_play_instant_enabled": false
}

Dzięki temu system może precyzyjnie powiązać instalację z konkretnym kliknięciem, sprawdzając dokładny czas między kliknięciem reklamy a rozpoczęciem pobierania.


4. iOS, ATT i SKAdNetwork / AdAttributionKit

O ile na Androidzie sprawa jest stosunkowo prosta, o tyle na iOS pomiar stał się wyzwaniem po wprowadzeniu protokołu ATT (App Tracking Transparency) przez Apple.

Użytkownik na iOS musi wyrazić zgodę na śledzenie. Jeśli kliknie "Nie zezwalaj" (co robi ponad 60% użytkowników), aplikacja traci dostęp do identyfikatora IDFA i nie może stosować fingerprintingu. Apple zaprojektowało więc SKAdNetwork (SKAN), obecnie rozwijany jako AdAttributionKit, jako chroniący prywatność system atrybucji.

Jak działa SKAdNetwork w praktyce?

Apple przejmuje kontrolę nad atrybucją:

  1. Użytkownik klika reklamę podpisaną cyfrowo przez sieć reklamową.
  2. Apple rejestruje to kliknięcie w systemie iOS.
  3. Po instalacji i uruchomieniu aplikacji, system decyduje, czy instalacja kwalifikuje się do atrybucji.
  4. Zamiast wysyłać dane użytkownika, Apple wysyła opóźniony i zanonimizowany postback bezpośrednio do sieci reklamowej lub MMP.
🔍 Techniczny Deep Dive: Jak wygląda surowy postback SKAdNetwork?

Gdy Apple decyduje się na wysłanie postbacku atrybucyjnego (co następuje z losowym opóźnieniem od 24 do 48 godzin od instalacji lub aktualizacji wartości), wysyła zapytanie HTTP POST pod zarejestrowany endpoint (np. serwer MMP). Surowy obiekt JSON w wersji SKAN 4.0 wygląda następująco:

{
  "version": "4.0",
  "ad-network-id": "v9wttpbfk9.skadnetwork",
  "transaction-id": "61a34b22-87ff-4375-9c88-12c83ff111a4",
  "campaign-id": "84",
  "source-identifier": "1084",
  "attribution-signature": "MEYCIQCc3v1qH3...",
  "redownload": false,
  "source-app-item-id": 123456789,
  "fidelity-type": 1,
  "coarse-conversion-value": "high",
  "postback-sequence-index": 0
}

Zwróć uwagę, że postback nie zawiera żadnego device_id ani user_id. Wartość coarse-conversion-value (w tym przypadku \"high\") wskazuje na to, że użytkownik wykonał kluczowe działanie, a pole source-identifier może zawierać od 2 do 4 cyfr w zależności od wielkości próby (privacy thresholds).

Tajemnica wartości konwersji (Conversion Value)

Ponieważ Apple nie raportuje zdarzeń jednostkowych (np. "dokonał zakupu za 99 zł"), do mierzenia aktywności post-install używa się wartości konwersji (Conversion Value). Jest to zakodowana cyfra (od 0 do 63 w trybie dokładnym / Fine, lub wartości "low", "medium", "high" w trybie ogólnym / Coarse).

Przykład mapowania wartości konwersji:

  • 0 = uruchomienie aplikacji (first_open)
  • 5 = rejestracja użytkownika
  • 12 = dodanie produktu do koszyka
  • 40 = zakup (tani)
  • 60 = zakup subskrypcji premium

Narzędzia analityczne (w tym Firebase SDK oraz MMP) pozwalają zdefiniować ten schemat w konsoli, a SDK aplikacji zajmuje się aktualizacją wartości na urządzeniu użytkownika. Apple wysyła zakodowaną cyfrę, a system odbiorcy dekoduje ją na podstawie zdefiniowanej tabeli mapowania.


5. Dlaczego dane w Meta Ads, MMP i GA4 się różnią?

W poprawnie wdrożonym środowisku rozbieżności w raportach są czymś całkowicie naturalnym. Każdy z systemów mierzy coś innego i stosuje odmienne metodologie.

Metryka / CechaMeta Ads ManagerMobile Measurement Partner (MMP)Google Analytics 4 (GA4)Apple SKAN
Co raportuje?Instalacje przypisane do MetaDeduplikowane instalacje wielokanałoweZdarzenia pierwszego otwarcia (first_open)Zagregowane postbacki z urządzeń iOS
Model atrybucjiKliknięcie & Wyświetlenie (Meta-centric)Ostatnie kliknięcie (Cross-channel Last Click)Własny model GA4 (często modelowany)Zagregowana atrybucja Apple
Dane użytkownikaPełne (w ekosystemie Meta)Zależne od zgody ATT (deterministyczne/probabilistyczne)Zależne od zgody użytkownika i Firebase IDCałkowity brak danych jednostkowych
Opóźnienie raportuCzas rzeczywisty / ModelowanyCzas rzeczywistyCzas rzeczywisty (do 24-48h w standardowych raportach)Losowe opóźnienie (24-48h dla ochrony prywatności)

Typowe źródła rozbieżności:

  • Pobranie vs Uruchomienie: Meta raportuje instalację w momencie pobrania ze sklepu. GA4 rejestruje ją dopiero przy pierwszym otwarciu (first_open).
  • Brak deduplikacji w sieciach: Jeśli użytkownik kliknął reklamę na TikToku, a potem na Meta i zainstalował aplikację, zarówno Meta Ads Manager, jak i TikTok Ads Manager przypiszą sobie tę konwersję (łącznie: 2 instalacje). MMP zdeduplikuje ten ruch i przypisze 1 instalację do ostatniego źródła.
  • Okna czasowe: Różne systemy stosują okna 1-dniowe, 7-dniowe lub 30-dniowe po kliknięciu.

6. Architektura optymalnego pomiaru aplikacji mobilnej

Próba znalezienia jednego narzędzia, które zmierzy wszystko, jest skazana na porażkę. Prawidłowo zaprojektowany stos analityczny (MarTech stack) opiera się na podziale ról:

┌────────────────────────────────────────────────────────────────────────┐
│                        ARCHITEKTURA APPS ANAlYTICS                     │
├───────────────────┬────────────────────────────────────────────────────┤
│ GA4 / Firebase    │ Badanie zachowania użytkowników, lejki i LTV       │
├───────────────────┼────────────────────────────────────────────────────┤
│ MMP (AppsFlyer)   │ Atrybucja kampanii paid, deduplikacja, fraudy      │
├───────────────────┼────────────────────────────────────────────────────┤
│ SKAN / AAKit      │ Prywatnościowy pomiar i optymalizacja na iOS       │
├───────────────────┼────────────────────────────────────────────────────┤
│ Hurtownia (BQ)    │ Łączenie danych, uzgadnianie przychodów z CRM     │
└───────────────────┴────────────────────────────────────────────────────┘

Dzięki takiemu podejściu raportowanie dla biznesu staje się przejrzyste:

  1. Raport Produktowy (GA4/CRM): Pokazuje realny biznes (aktywni użytkownicy, transakcje, odnowienia subskrypcji, churn).
  2. Raport Pozyskania (MMP/Media Mix): Pokazuje efektywność operacyjną kanałów płatnych (ROAS, blended CAC, CPA).
  3. Raport Zarządczy (DWH): Łączy koszty ze wszystkich sieci z realnym przychodem CRM, pokazując realny okres zwrotu z inwestycji (payback period).

Sonda Firebase SDK

Zainstalowano SDK w centrum układu (aplikacji) dla iOS i Androida.

Mapowanie sygnałów

Ustalono jednolitą taksonomię zdarzeń (onboarding, rejestracja, trial, zakup).

Grawitacja Referrer API

Wdrożono obsługę Google Play Install Referrer na Androidzie.

Tunele czasoprzestrzenne

Skonfigurowano deep linking i deferred deep linking (Universal Links).

Osłony ATT & SKAN

Zaimplementowano okno ATT oraz schemat wartości konwersji na iOS.

Zasoby (Płatności)

Zintegrowano system płatności z orbitującą analityką.

Stacja Badawcza MMP

Połączono MMP z planetami (sieciami) i skonfigurowano postbacki.

Koszty Ekspedycji

Zweryfikowano poprawność przesyłania danych kosztowych (Ad Spend).

Taksonomia zdarzeń

Ustalono jednolitą taksonomię zdarzeń (onboarding, rejestracja, trial, zakup).

Install Referrer API

Wdrożono i przetestowano obsługę Google Play Install Referrer na Androidzie.

Deep Linking

Skonfigurowano deep linking i deferred deep linking (np. Universal Links / App Links).

ATT & SKAdNetwork

Zaimplementowano okno ATT na iOS oraz zdefiniowano schemat wartości konwersji (SKAN).

Integracja płatności

Zintegrowano system płatności (np. RevenueCat lub integracje bezpośrednie) z analityką.

Integracja z MMP

Połączono MMP z sieciami reklamowymi i skonfigurowano postbacki zdarzeń post-install.

Integracja kosztów

Zweryfikowano poprawność przesyłania danych kosztowych (Ad Spend) z Meta/Google do MMP.


Case Study: Kampania E-commerce i Deferred Deep Linking

Najlepiej zrozumieć te różnice na konkretnym przykładzie. Wyobraź sobie, że prowadzisz aplikację e-commerce i właśnie ruszyłeś z kampanią "Wiosenna Wyprzedaż" skierowaną do lojalnych klientów (Web2App).

Podczas kliknięcia w reklamę na telefonie mogą wystąpić dwa scenariusze:

  1. Deep Link (Ma aplikację): Użytkownik klika w reklamę, otwiera mu się natychmiast aplikacja na widoku wyprzedaży. Atrybucja jest prosta i niemal 100% skuteczna.
  2. Deferred Deep Link (Nie ma aplikacji): Użytkownik zostaje przekierowany do App Store / Google Play, gdzie pobiera aplikację, uruchamia ją (first_open) i dopiero wtedy skrypt próbuje go przenieść na stronę wyprzedaży.

Poniższa mapa wizualizuje ten trudniejszy przypadek (Deferred Deep Link) dla kampanii spring_sale_vip, ponieważ to właśnie w "czarnej dziurze" sklepu tracimy najwięcej danych, a różnice między iOS i Androidem stają się kluczowe.

Interaktywna Mapa Ścieżki Atrybucji

Poniżej znajdziesz interaktywną mapę, która wizualnie przedstawia całą ścieżkę użytkownika i pokazuje, co widzi każdy system analityczny (GA4, MMP, SKAdNetwork) na każdym etapie. Kliknij perspektywę i każdy z węzłów, aby zobaczyć szczegóły.

🌌 Chcesz zobaczyć pełnoekranową symulację układu atrybucyjnego?

Otwórz kosmiczną mapę atrybucji →

Często Zadawane Pytania (FAQ)