8 czerwca 2026
Atrybucja w retail media — jak przypisać sprzedaż do reklamy wewnętrznej w marketplace
- E-commerce
- GA4
- Retail Media
- Atrybucja
Retail media to dziś najszybciej rosnący kanał reklamowy w handlu — duże platformy sprzedają swoim sprzedawcom (merchantom) przestrzeń reklamową we własnym serwisie. Problem zaczyna się nie przy emisji reklamy, tylko przy pytaniu, za które merchant płaci: które zakupy wynikły z mojej reklamy? W modelu wydawcy odpowiedź jest darmowa. W marketplace trzeba ją zbudować od zera.
Dlaczego atrybucja w retail media jest inna
Standardowy adserver — Google Ad Manager — projektowano dla wydawców treści: portali i serwisów informacyjnych. Tam model jest prosty: użytkownik klika reklamę, wychodzi na stronę reklamodawcy, a ten śledzi go u siebie po parametrach UTM. Klik jest granicą — po jednej stronie wydawca, po drugiej sklep.
W marketplace ta granica znika. Klient klika reklamę produktu i zostaje w tym samym sklepie. Sprzedaż dzieje się tutaj, nie „gdzieś u reklamodawcy”. Nie ma przejścia między domenami, więc nie ma czego otagować UTM-em — a Google Ad Manager nie ma natywnej atrybucji e-commerce, bo niemal wszyscy jego klienci to wydawcy, nie platformy sprzedażowe.
| Wydawca (portal) | Marketplace (e-commerce) | |
|---|---|---|
| Co robi klik | wyprowadza ze strony | zostaje w sklepie |
| Granica atrybucji | między domenami (UTM) | brak — wszystko w jednej domenie |
| Kto mierzy sprzedaż | reklamodawca u siebie | Ty, w obrębie własnego serwisu |
| Wsparcie w GAM | natywne (to model docelowy) | brak — trzeba dobudować |
Kształt rozwiązania: trzy warstwy
Żeby powiedzieć merchantowi „twoja kreacja sprzedała produkty za X”, trzeba spiąć trzy rzeczy, których standardowo nikt ze sobą nie łączy:
- Tożsamość reklamy — która konkretnie kreacja, kampania i linia zamówienia wyświetliła się użytkownikowi. Wie to adserver, ale gubi tę wiedzę w momencie kliknięcia.
- Ścieżka zakupowa — co użytkownik zrobił potem: obejrzał kartę produktu, dodał do koszyka, kupił, za ile i od którego merchanta. Wie to warstwa e-commerce (GA4).
- Reguła przypisania — w jakim oknie i na jakiej podstawie uznajemy zakup za efekt reklamy. To model atrybucji.
Pierwsze dwie warstwy istnieją osobno. Cała robota polega na ich sklejeniu i nałożeniu trzeciej.
Punkt zaczepienia: złapać reklamę, zanim klik ją zgubi
Technicznym sednem jest przechwycenie tożsamości reklamy w przeglądarce, w chwili gdy adserver ją zwraca — bo po kliknięciu (które nie wyprowadza nigdzie) ta informacja już nie wróci.
Google Publisher Tag emituje zdarzenie slotResponseReceived, gdy slot dostaje odpowiedź z adserwera. Podpięty listener wyciąga z niej identyfikatory kreacji, kampanii i linii zamówienia (creativeId, campaignId, lineItemId) i wkłada je do dataLayer — tej samej warstwy, z której korzysta e-commerce. Od tego momentu reklama i zakup mówią wspólnym językiem: oba zdarzenia siedzą w dataLayer i trafiają do GA4 z tym samym identyfikatorem użytkownika.
Dane po stronie emisji — wyświetlenia i kliknięcia per kreacja — pobiera się z GAM osobno, i są na to dwa wyjścia:
| Wyjście | Dane | Koszt |
|---|---|---|
| Eksport surowych logów (BigQuery Data Transfer) | granularne, per pojedyncza emisja | płatny dodatek |
| Batch z API Ad Managera | już zagregowane (per kreacja / kampania / dzień) | bezpłatne |
Do zdefiniowania kreacji i przypisania im sprzedaży dane zagregowane w zupełności wystarczają — darmowe API zamyka temat, a po płatny eksport surowych logów sięgasz dopiero, gdy potrzebujesz analizy na poziomie pojedynczej emisji. GA4 daje stronę zakupową, GAM — stronę emisji, a kluczem łączącym jedno z drugim są identyfikatory kreacji.
Post-click da się zbudować. Post-view to ściana
Mając spięte dane, zakup chce się przypisać reklamie na dwa sposoby — i właśnie tędy biegnie granica między tym, co policzyłem, a tym, czego nie udało się domknąć:
- Post-click — zakup użytkownika, który kliknął reklamę, a potem kupił. To przypisałem: kliknięcie wymusza przeładowanie, po którym odpala się
view_item_listz produktami — i dopiero tu pojawia się klucz wiążący kreację z konkretnym koszykiem. Wąski, ale pewny sygnał. - Post-view (okno 1 dnia) — zakup kogoś, kto reklamę tylko zobaczył, nie kliknął, i kupił w ciągu doby. To model docelowy, którego nie domknąłem. Tożsamość kreacji łapię przy emisji (
gam_view), ale czysta emisja nie niesie w sesji klucza, który przeżyje nawigację: użytkownik obejrzał baner, poszedł do wyszukiwarki wewnętrznej, zobaczył inne produkty i kupił coś zupełnie innego. Nie ma czym spiąć „widział kreację X” z „kupił produkt Y”.
Natywny mechanizm, który miał to robić — view-through przez activity tags — Google wycofał (opierał się na znikających cookies 3P). Ścieżka natywna martwa, ścieżka własna łapie emisję, ale nie domyka atrybucji sprzedaży bez kliknięcia. Kolumna post-view poniżej to kształt tego, co chciałbyś raportować, nie pomiar, który wystawisz merchantowi.
| Etap ścieżki (jedna kreacja, 7 dni) | Post-click — przypisane | Post-view 1 dzień — model docelowy |
|---|---|---|
| Wyświetlenia reklamy | 48 200 | 48 200 |
| Kliknięcia | 1 050 | — |
| Użytkownicy w oknie atrybucji | 1 050 | 9 400 |
| Karta produktu | 410 | 1 280 |
| Dodanie do koszyka | 180 | 470 |
| Zakup | 96 | 210 |
| Wartość sprzedaży | 14 400 zł | 28 900 zł |
| Konwersja (zakup / użytkownik) | 9,1% | 2,2% |
Te same wyświetlenia, ten sam produkt — i przepaść między tym, co policzone, a tym, co poza zasięgiem. Post-click broni budżetu twardą liczbą („masz 14 tys. zł z bezpośrednich kliknięć”). Post-view pokazuje, ile wpływu na popyt zostaje nieudowodnione, dopóki ktoś nie zbuduje cięższego sklejania tożsamości po stronie serwera — a i to nie jest oczywiste. W retail media to nie szczegół: to różnica między „reklama sprzedała za 14 tys.” a „pewnie dotknęła znacznie więcej, ale tego nie wykażę”.
Trzy pułapki, których nie ma w dokumentacji
- iframe zjada kliknięcia. Kreacje renderują się w iframe’ach, a te potrafią „połknąć” zdarzenie kliknięcia, zanim dotrze do
dataLayer. Założenie „klik się odpali” jest naiwne — trzeba to świadomie obejść. - Parametry kierowania musisz znać przed emisją. Klucze i wartości (key-values), po których GAM dobiera reklamę, idą w żądaniu po reklamę — zanim cokolwiek się wyświetli. Czego nie ustalisz zawczasu, tego nie dorzucisz po kliknięciu.
- Bez zgody marketingowej nie ma emisji. Użytkownikowi bez zgody nie wolno serwować personalizowanej reklamy (parametr
npa=1albo statyczny baner zamiast GAM). Logika zgód musi siedzieć przed adserwerem, nie obok niego.
Wnioski
- Retail media to projekt inżynieryjny, nie zakup licencji. Sam Google Ad Manager wyświetli reklamy; atrybucja sprzedaży do nich jest po Twojej stronie.
- Atrybucja w retail media stoi na czystej warstwie e-commerce. Jeśli
dataLayerkłamie o cenach, koszyku czy merchancie, model odziedziczy każdy ten błąd — dlatego fundamentem jest poprawny tracking e-commerce w GA4. - Nie wszystko, co chcesz mierzyć, da się zmierzyć. Post-click przypiszesz; post-view (view-through) zostaje otwartą luką, odkąd Google wyciął activity tags. Uczciwy raport pokazuje też granicę pomiaru, zamiast udawać, że jej nie ma.
- Wartość siedzi w danych, nie w narzędziu — ta sama lekcja co przy architekturze danych pod AI.
Adserver pokazuje reklamę. Czy ta reklama coś sprzedała — musisz policzyć sam. W marketplace to nie konfiguracja, to budowa.