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.
Piszę to w piątek Black Friday, między jednym a drugim sprawdzeniem kont, więc tekst jest raczej notatką z bieżącej pracy niż rozprawą teoretyczną. Weekend wyprzedażowy ma tę właściwość, że wszystkie błędy w konfiguracji ujawniają się w ciągu kilku godzin i w skali, której nie widać przez pozostałe jedenaście miesięcy.
Najczęstszy z nich nie jest techniczny. Polega na tym, że sklep prowadzi kampanie pod docelowy ROAS ustawiony rok temu, dokłada do tego rabat i cieszy się, że wskaźnik w panelu trzyma poziom. Wskaźnik faktycznie trzyma, tylko liczony jest od obrotu, a rabat zjada marżę, z której ten obrót ma się opłacić.
Zbieram tu więc to, co robię z docelowym ROAS w szczycie sprzedażowym: jak przeliczam cel, kiedy sięgam po korekty sezonowe, co segmentuję osobno i czego nie ruszam, dopóki weekend się nie skończy.
To rozróżnienie decyduje o wszystkim, co dalej, więc zaczynam od niego.
Docelowy zwrot z nakładów na reklamę odnosi się do wartości konwersji, którą przekazujesz do systemu. Domyślnie jest nią wartość zamówienia. Jeśli więc w normalnym miesiącu ROAS na poziomie czterech jednostek daje Ci zysk, to przy rabacie obniżającym marżę jednostkową ten sam poziom może oznaczać sprzedaż poniżej progu opłacalności — bo koszt reklamy przypada teraz na cieńszą warstwę marży.
Wniosek jest niewygodny: w tygodniu wyprzedaży cel ROAS trzeba przeliczyć, nie przepisać. Robię to najprościej, jak można: liczę, jaka marża procentowa zostaje po rabacie i kosztach wysyłki, i podnoszę wymagany zwrot proporcjonalnie do jej spadku. Nie jest to precyzyjne, ale różnica względem ustawienia z października jest zwykle na tyle duża, że nawet zgrubny rachunek zmienia decyzję.
Rozwiązanie porządniejsze to przekazywanie do systemu marży zamiast ceny. Wymaga zmiany w warstwie pomiarowej, więc nie robi się tego w dniu wyprzedaży, ale przy wyraźnie różnych marżach w kategoriach to najbardziej opłacalna zmiana w roku.
Druga rzecz, którą tłumaczę na każdym spotkaniu, bo z niej wynikają błędne oczekiwania.
Cel wpisany w kampanii nie działa jak filtr odrzucający wszystko poniżej. To wartość, wokół której system próbuje wyjść na średniej. W praktyce oznacza to, że część transakcji będzie dużo poniżej celu, część dużo powyżej, a w szczycie rozrzut jest większy niż zwykle, bo ruch jest bardziej przypadkowy — trafiają się okazjonalni kupujący, którzy przez resztę roku w ogóle nie odwiedzają sklepu.
Dynamiczne dopasowanie polega tu na ocenie pojedynczej aukcji: przy sygnałach wskazujących na transakcję o dużej wartości system licytuje wysoko powyżej średniej, przy słabych schodzi. Im wyżej ustawisz cel, tym więcej aukcji uzna za niewarte udziału — i tym mechanizmem ambitne cele wygaszają ruch w dniu, w którym ruchu chcesz najwięcej.
Dlatego nigdy nie ustawiam celu na poziomie własnego progu rentowności. Próg to granica, po przekroczeniu której tracę pieniądze; cel to średnia, wokół której system oscyluje. Zrównanie ich oznacza, że połowa sprzedaży będzie nierentowna z założenia.
Narzędzie często używane, rzadko rozumiane, więc precyzyjnie: korekta sezonowa mówi systemowi, że spodziewasz się zmiany współczynnika konwersji w konkretnym okienku czasu. Nie mówi, że będzie więcej ruchu, i nie jest mnożnikiem stawek.
Ma to znaczenie praktyczne. Jeśli promocja nie zmienia szansy zakupu odwiedzającego, a tylko sprowadza więcej osób — korekta nie jest potrzebna, wystarczy budżet. Jeśli natomiast strona produktowa zaczyna z dnia na dzień sprzedawać wyraźnie lepiej, bo cena jest niższa, to korekta jest właściwym narzędziem: bez niej system wchodzi w dzień wyprzedaży z prognozą wyliczoną z listopadowej normy.
Zasady, których się trzymam. Ustawiam korektę przed startem promocji, nie w trakcie. Okienko trzymam krótkie, w praktyce jeden do trzech dni, bo rozciągnięte na cały tydzień przez większość czasu okłamuje system. Wielkość dobieram z różnicy współczynnika konwersji w analogicznym okresie rok wcześniej, a bez takich danych wpisuję wartość ostrożną.
I rzecz, którą trzeba rozdzielić: korekta sezonowa nie służy do zasłaniania dziur w pomiarze. Do tego są wykluczenia danych i stosuje się je wtedy, gdy tag przestał działać albo konwersje policzyły się dwukrotnie. Użycie wykluczeń „bo dzień był nietypowy” wycina z historii najcenniejszy materiał do nauki.
Kampania, która przez pół dnia stoi z komunikatem o ograniczeniu budżetem, nie realizuje żadnej strategii stawek — realizuje kolejkę.
Przed weekendem przechodzę więc wszystkie budżety dzienne i podnoszę je z zapasem większym, niż wynika z prognozy. Przy dobrze ustawionym celu ryzyko przepalenia jest mniejsze niż ryzyko wypadnięcia z aukcji o czternastej w najlepszym dniu roku.
Drugą pułapką są limity w strategiach portfelowych. Górna granica CPC ustawiona kiedyś „dla bezpieczeństwa” działa w szczycie jak kaganiec: system wie, że aukcja jest warta więcej, i nie może zalicytować. Sprawdzam te limity zawczasu i albo je podnoszę, albo zdejmuję na czas promocji.
Trzecia rzecz jest banalna i widziałem, jak zatrzymała sprzedaż na kilka godzin: limit płatności na koncie i karta z wygasającą datą ważności. Przy wydatkach kilkukrotnie wyższych niż zwykle próg płatności potrafi zostać osiągnięty w środku dnia, a reklamy stają, dopóki ktoś nie zaloguje się do rozliczeń.
W szczycie sprzedażowym średnia z całego asortymentu kłamie bardziej niż zwykle, więc segmentacja przestaje być kosmetyką.
Po stronie danych produktowych pilnuję trzech atrybutów: ceny promocyjnej wraz z zakresem jej obowiązywania, zgodności ceny w pliku z ceną na stronie oraz aktualnych stanów. Rozjazd ceny to najczęstsza przyczyna odrzuceń w tym tygodniu, a odrzucony produkt nie licytuje niezależnie od tego, jak dobrze ustawiłeś strategię.
W dniu wyprzedaży najbardziej kosztowna jest nadaktywność, więc mam prostą regułę: sprawdzam często, zmieniam rzadko.
Co kilka godzin patrzę na cztery rzeczy: czy kampanie nie stoją na budżecie, czy nie ma odrzuceń w danych produktowych, czy koszt konwersji nie oderwał się od poziomu z rana i czy strona odpowiada normalnie. Ta ostatnia pozycja bywa zapomniana, a przy dużym ruchu wolna strona odbiera wynik skuteczniej niż zła stawka.
Zmiany, na które sobie pozwalam w trakcie, to podniesienie budżetu i zdjęcie limitu stawek — obie są odwracalne i żadna nie resetuje nauki. Celu ROAS nie modyfikuję skokowo, bo każda taka zmiana wprowadza kampanię w okres dostosowania w najgorszym możliwym momencie.
Wieczorem robię notatkę: co zmieniłem, o której godzinie i dlaczego. W poniedziałek nikt tego nie odtworzy z pamięci.
Wyjście z promocji jest równie ważne jak wejście, a poświęca mu się zwykle dziesięć minut.
Najpierw sprawdzam, czy korekty sezonowe wygasły, i usuwam te ustawione „na zapas”. Korekta działająca po zakończeniu promocji podbija stawki pod współczynnik konwersji, którego już nie ma. Potem wracam z celami do poziomów sprzed wyprzedaży — ale stopniowo, bo w kolejnych dniach nadal spływają konwersje z opóźnieniem i obraz jest zaburzony.
Podliczenie robię najwcześniej po dwóch tygodniach i po odjęciu dwóch rzeczy, które w tym okresie są większe niż zwykle: zwrotów i anulowanych zamówień. Sklep, który rozlicza Black Friday po samym ROAS z panelu, świętuje wynik, którego część zaraz wróci kurierem. Jeśli sklep przekazuje korekty wartości konwersji przy zwrocie, obraz jest znacznie bliższy prawdy.
Na koniec zapisuję dwie liczby na przyszły rok: jak zmienił się współczynnik konwersji w dniach promocji i o ile wzrósł koszt kliknięcia. To jedyny materiał, na którym da się oprzeć korekty sezonowe w kolejnym listopadzie, i jedyna rzecz z tego weekendu, która zachowuje wartość na dłużej.
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 |