Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Pytanie o „własne metryki w licytacji” wraca u mnie w rozmowach z klientami technicznymi co kilka tygodni i zwykle opiera się na jednym nieporozumieniu. Ludzie wyobrażają sobie, że do algorytmu można wysłać zestaw wskaźników — zysk, wartość życiową klienta, prawdopodobieństwo zwrotu — a on to jakoś rozważy.
Nie da się. Automatyczna licytacja przyjmuje jedną liczbę na konwersję i jedną nazwę zdarzenia. Cała robota polega więc na tym, żeby ta jedna liczba jak najlepiej odwzorowywała to, co dla firmy jest wynikiem. Jeśli tym wynikiem jest zysk jednostkowy, to zysk jednostkowy trzeba wstawić w miejsce, w którym większość kont wysyła kwotę z paragonu.
Poniżej opisuję trzy techniczne drogi przekazania tej wartości, różnice między nimi i to, co trzeba zrobić w koncie po zmianie — bo samo podmienienie liczby bez rekalibracji celów rozjedzie kampanie na dwa tygodnie.
Warto to sobie ułożyć, zanim ktokolwiek napisze linijkę kodu.
Konwersja przekazywana do Google Ads ma nazwę, znacznik czasu, identyfikator kliknięcia lub dane pozwalające je dopasować, wartość i walutę. Opcjonalnie może nieść zmienne własne, które służą do raportowania i segmentacji. To ważne rozróżnienie: zmienne własne nie są sygnałem dla licytacji — pomagają w analizie i regułach, ale nie zastępują wartości.
Strategie nastawione na wartość — maksymalizacja wartości konwersji i docelowy zwrot z wydatków — patrzą wyłącznie na to pole. Jeżeli w nim jest przychód brutto, algorytm optymalizuje przychód brutto, i będzie to robił dobrze, nawet gdy firma na tym traci.
Stąd cała koncepcja: pole wartości traktuję jako miejsce na deklarację „ile ta transakcja jest dla nas warta”, a nie „ile klient zapłacił”. To decyzja biznesowa udająca techniczną i dlatego tak często nikt jej świadomie nie podejmuje.
Zanim więc ktokolwiek tknie tagi, trzeba tę liczbę zdefiniować — etap, który najczęściej się pomija, a potem projekt się wywraca.
Do ustalenia jest, co dokładnie wchodzi do zysku jednostkowego: sama marża handlowa, marża po koszcie wysyłki, po prowizjach płatniczych, po prognozowanym odsetku zwrotów, po koszcie obsługi. Każda z tych wersji jest obronna, ale trzeba wybrać jedną i zapisać.
Drugie pytanie: co z kosztami stałymi. Odradzam wciąganie ich do wartości konwersji. Algorytm ma decydować o wydatku krańcowym, więc interesuje go pokrycie kosztów zmiennych. Rozliczenie kosztów stałych to zadanie dla rachunku wyników, nie dla licytacji.
Trzecie: skala. Jeśli dotąd wysyłałeś przychód, przejście na marżę obniży wartości kilkukrotnie. To normalne i pożądane, ale musisz o tym uprzedzić wszystkich, którzy patrzą na raporty — inaczej ktoś zgłosi awarię pomiaru.
I czwarte, praktyczne: nie wysyłaj zera. Konwersja z wartością zerową bywa traktowana inaczej niż konwersja bez wartości i przy produktach sprzedawanych na zero marży wolę ustalić symboliczne minimum niż zaśmiecać sygnał.
Najczystsze rozwiązanie, jeśli sklep zna swoją marżę w momencie zakupu.
Do warstwy danych na stronie podziękowania dokładasz — obok standardowych informacji o transakcji — pole z sumą zysku jednostkowego po pozycjach koszyka. Menedżer tagów wysyła je jako wartość konwersji zakupu. Fizycznie różnica sprowadza się do jednej zmiennej w konfiguracji tagu.
Trudność nie jest w tagowaniu, a w tym, żeby platforma sklepowa znała koszt zakupu produktu w chwili składania zamówienia. Część systemów trzyma tę informację i wystarczy ją odsłonić. Część nie ma jej w ogóle, bo koszty siedzą w systemie magazynowym — i wtedy trzeba dowozić do sklepu cyklicznie tabelę kosztów albo wybrać jedną z pozostałych dróg.
Zaleta jest oczywista: dane trafiają natychmiast, bez opóźnienia i bez dodatkowego procesu. Wada również: wartość jest szacunkiem z momentu zakupu i nie wie nic o zwrocie, który przyjdzie za trzy tygodnie.
Przy tej drodze pilnuję jeszcze jednej rzeczy — żeby marża nie wyciekała do kodu strony w formie czytelnej dla użytkownika i konkurencji. Wysyłam sumę, nie rozbicie po produktach, i tylko na stronie potwierdzenia zamówienia.
To rozwiązanie, które w e-commerce z wysokim odsetkiem zwrotów uważam za obowiązkowe, a nie opcjonalne.
Google Ads pozwala skorygować albo wycofać wartość już zaraportowanej konwersji, jeśli masz jej identyfikator lub identyfikator kliknięcia oraz czas zdarzenia. Wysyłasz więc pierwotną wartość natychmiast po zakupie, a po zamknięciu okna zwrotów przesyłasz korektę: obniżenie do faktycznej marży albo pełne unieważnienie, gdy towar wrócił.
Algorytm dostaje wtedy obraz bliski prawdy, choć z opóźnieniem. Warto o tym pamiętać przy ocenie kampanii — dane z ostatnich tygodni będą się jeszcze zmieniać, więc porównywanie świeżego okresu z zamkniętym systematycznie zaniża ten świeższy.
Dwie pułapki. Pierwsza: korekty można wysyłać w ograniczonym oknie czasowym od konwersji, więc jeśli proces zwrotów w firmie trwa dłużej, ustalenie tego harmonogramu jest częścią projektu, nie szczegółem. Druga: musisz mieć gdzie trzymać identyfikatory kliknięć i zamówień, żeby po tygodniach móc je sparować. To zwykle oznacza dodatkową tabelę i to ona bywa najsłabszym punktem całej konstrukcji.
Właściwa droga wszędzie, gdzie sprzedaż zamyka się poza stroną — w usługach, B2B, sprzedaży telefonicznej, ale też w sklepach z płatnością przy odbiorze.
Schemat jest znany: przy pozyskaniu kontaktu zapisujesz identyfikator kliknięcia razem z leadem, przekazujesz go do systemu sprzedażowego, a po zamknięciu transakcji wysyłasz do Google Ads konwersję z realną wartością — tym razem wprost jako zysk, nie jako wielkość kontraktu. Zamiast identyfikatora kliknięcia można też dopasowywać konwersje po zahaszowanych danych kontaktowych, co ratuje sytuacje, w których identyfikator ginie po drodze przez formularz albo telefon.
W tym wariancie da się zrobić rzecz, która przy pomiarze na stronie jest niemożliwa: rozróżnić leady, które są warte dowożenia, od tych, które wyglądają identycznie w formularzu. Do tego licytacja nadaje się dobrze, o ile wolumen jest wystarczający.
Największym ryzykiem jest tu opóźnienie. Jeśli cykl sprzedaży trwa dwa miesiące, algorytm uczy się z dwumiesięcznym poślizgiem i nie zareaguje na nic, co dzieje się teraz. Przy takich cyklach zostawiam optymalizację na etapie pośrednim — kwalifikowanym leadzie z przypisaną wartością oczekiwaną — a pełne dane sprzedażowe wykorzystuję do oceny, nie do sterowania.
Osobne narzędzie, o którym warto wiedzieć, bo bywa mylone z powyższymi.
Reguły wartości konwersji pozwalają modyfikować przekazaną wartość w zależności od kilku warunków: lokalizacji, urządzenia i przynależności do listy odbiorców. Sprawdzają się, gdy różnica w rentowności wynika nie z produktu, a z kontekstu — na przykład nowy klient jest dla firmy wart wyraźnie więcej niż powracający, albo zamówienie z odległego regionu kosztuje więcej w dostawie.
Ograniczenie jest istotne: te reguły nie znają Twojego asortymentu. Nie zastąpią przekazywania marży, bo nie wiedzą, co jest w koszyku.
Używam ich więc jako warstwy korygującej na wierzchu poprawnie policzonego zysku i pilnuję, żeby nie było podwójnego liczenia — jeśli różnicę między nowym i powracającym klientem uwzględniłem już w wartości wysyłanej ze sklepu, reguła zrobi to drugi raz i zaburzy proporcje.
To moment, w którym najłatwiej zepsuć dobrze wykonaną robotę techniczną.
Docelowy zwrot z wydatków liczony na przychodzie i ten sam wskaźnik liczony na marży to dwie różne skale. Jeżeli konto pracowało z celem czterysta procent na przychodzie, a marża wynosi około jednej czwartej ceny, to odpowiednikiem będzie wartość w okolicach stu procent. Zostawienie starego celu po podmianie wartości oznacza natychmiastowe zaduszenie ruchu, bo system uzna, że prawie żadna aukcja nie spełnia wymagania.
Dlatego kolejność jest taka: najpierw wdrażam drugie działanie konwersji z nową wartością obok istniejącego, przez kilka tygodni zbieram dane i porównuję, jaki poziom zwrotu odpowiada dotychczasowej rentowności. Dopiero potem przełączam działanie główne i ustawiam cel wynikający z tego porównania, nie z podręcznika.
Po przełączeniu daję kampaniom spokój na okres uczenia i nie zmieniam w tym czasie ani budżetów, ani struktury. Ocena po trzech dniach niczego nie powie, a wprowadzenie kolejnej zmiany w trakcie uniemożliwi ustalenie, co dało jaki efekt.
Na koniec zdanie, które mówię przy każdym takim projekcie: przejście na zysk jednostkowy zwykle pogarsza wskaźniki w raportach i poprawia wynik firmy. Jeśli nikt w organizacji nie jest gotowy na tę rozmowę, lepiej najpierw ją odbyć, a potem zmieniać tagi.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |