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 zapytania w Performance Max wraca w każdej rozmowie o tym typie kampanii i przez pierwszy rok po jego premierze odpowiedź brzmiała po prostu „nie da się”. Od lutego 2023 da się częściowo: w interfejsie programistycznym Google Ads pojawił się osobny raport z kategoriami wyszukiwań, a dane historyczne sięgają marca 2023.
Wokół tego raportu wyrosła cała rodzina skryptów, które społeczność specjalistów udostępnia publicznie — najczęściej pod nazwami w rodzaju pMax Search Terms Insights. Robią jedną rzecz: wyciągają ten raport dla wszystkich kampanii na koncie i zapisują go do arkusza Google, żeby dało się go czytać w czasie, a nie tylko klikać po jednej kampanii w panelu.
Używam takiego skryptu na każdym koncie z Performance Max i jednocześnie regularnie tłumaczę, czego z niego nie wyczytamy. Ten tekst jest o obu tych rzeczach: o konkretnym zastosowaniu i o granicach, po których przekroczeniu ludzie wyciągają z arkusza wnioski, których w danych nie ma.
Trzeba to powiedzieć wprost, bo od tego zależy sposób czytania całego raportu: kampanie Performance Max nie oddają zapytań w standardowym miejscu, do którego przywykliśmy przy kampaniach w wyszukiwarce. Nie ma tam listy haseł z kosztem i konwersją przy każdym.
To, co jest, to osobny zasób w interfejsie programistycznym, który zwraca kategorie wyszukiwań — grupy zapytań, którym Google nadaje własne etykiety w rodzaju „kurtki zimowe damskie” albo nazwa marki. Do kategorii dołączone są dane o wyświetleniach, kliknięciach i konwersjach, a przy części z nich dostępne są podkategorie schodzące bliżej konkretnego brzmienia zapytania.
Ten sam zasób napędza sekcję statystyk w panelu. Różnica jest w wygodzie i w historii: w interfejsie oglądamy jedną kampanię i wybrany zakres dat, a skrypt zbiera to samo dla całego konta, cyklicznie, do arkusza, w którym można porównywać tygodnie.
Ważne zastrzeżenie na start: dane dotyczą wyłącznie tej części Performance Max, która pokazuje się w wyszukiwarce i w zakładce Zakupy. Wyświetlenia w sieci reklamowej, YouTube, Gmailu i Discover nie mają zapytań, więc nie ma ich tu również.
Mechanika jest prostsza, niż sugeruje długość kodu. Skrypt wykonuje zapytanie do wspomnianego zasobu, przechodzi po kampaniach typu Performance Max na koncie i zapisuje wiersze do arkusza. Zwykle dodaje do tego dwie rzeczy: podział na okresy, żeby dało się zobaczyć zmianę względem poprzedniego tygodnia, i sumowanie na poziomie kategorii nadrzędnych.
Wersje, które widziałem, różnią się głównie tym, ile pracy wykonują za nas. Prostsze wypisują surowe wiersze. Bardziej rozbudowane liczą udział kategorii w wyświetleniach, oznaczają kategorie nowe względem poprzedniego uruchomienia i wysyłają e-mail, gdy pojawi się coś nietypowego.
Czego skrypt nie zrobi, bo nie ma z czego: nie poda kosztu przypisanego do kategorii ani stawki, nie pokaże pełnej listy zapytań, nie policzy udziału marki w wydatkach i nie pozwoli niczego wykluczyć. Jeśli ktoś obiecuje w opisie skryptu „raport wyszukiwanych haseł jak w kampanii w sieci wyszukiwania”, to albo nie sprawdził, co dostaje, albo liczy na to, że my nie sprawdzimy.
Cała operacja zajmuje kwadrans, a najwięcej czasu zabiera zwykle sprawdzanie, czy w arkuszu pojawiły się sensowne dane.
Na koncie zbiorczym da się to zrobić raz dla wielu kont, jeśli skrypt ma wersję dla menedżera. Na potrzeby jednego klienta wolę osobne uruchomienie i osobny arkusz — łatwiej potem znaleźć, kto co i kiedy zmieniał.
Pierwsze spojrzenie na taki raport prawie zawsze rozczarowuje: pojawia się kilkaset wierszy z etykietami, które wyglądają jak listy zakupów. Dopiero uporządkowanie ich w kilka koszyków daje coś użytecznego.
Sortuję kategorie po wyświetleniach i dzielę je na cztery grupy. Pierwsza to marka — nasza własna nazwa i jej odmiany. Druga to ogólne zapytania produktowe zgodne z ofertą. Trzecia to obce marki, czyli nazwy konkurentów i producentów. Czwarta to kategorie bez związku z ofertą: inna branża, inne znaczenie tego samego słowa, wyszukiwania informacyjne.
Sama ta segregacja mówi więcej niż liczby. Jeśli ponad połowa wyświetleń idzie na markę, wynik kampanii nie jest wynikiem pracy algorytmu, tylko przechwyconym ruchem, który przyszedłby i tak. Jeśli w czwartej grupie rośnie coś kosztem drugiej, kampania rozjeżdża się tematycznie i warto szukać przyczyny w plikach produktowych albo w zasobach grupy zasobów.
Zmiany w czasie są ciekawsze niż stan bieżący. Nowa kategoria, która w tydzień wskoczyła wysoko, zwykle oznacza, że system znalazł nową ścieżkę zbytu — dobrą albo złą, ale wartą sprawdzenia od razu, nie po miesiącu.
Kilka rzeczy, na których się przewróciłem i które warto znać wcześniej.
Sumy w arkuszu nie zgodzą się z sumami kampanii. Kategorie są przycinane progami i nie obejmują wszystkiego, więc traktowanie ich jako pełnego rozkładu ruchu prowadzi do błędnych proporcji. Używam ich do porównań względnych, nie do dzielenia budżetu.
Etykiety kategorii są automatyczne i bywają dziwne. Jedno zapytanie może trafić do kategorii, która wygląda na niepowiązaną, a nazwy generyczne czasem sklejają rzeczy z dwóch różnych światów. Zanim ogłosisz problem, sprawdź podkategorie.
Brak kosztu przy kategorii to najpoważniejsze ograniczenie. Wiemy, że coś zbiera wyświetlenia, ale nie wiemy, ile za to płacimy. Dlatego traktuję ten raport jako narzędzie do stawiania hipotez, a nie do liczenia rentowności.
I sprawa nudna, ale realna: strefa czasowa i opóźnienie danych. Raport uruchomiony w poniedziałek rano za „ostatnie siedem dni” złapie inny wycinek niż uruchomiony w środę, a najnowsze dni bywają niepełne. Przy porównywaniu tygodni trzymam się jednego dnia i jednej godziny uruchomienia.
Raport ma sens tylko wtedy, gdy prowadzi do zmiany na koncie. Narzędzia, jakie mamy w kwietniu 2024, są ograniczone, ale nie żadne.
Listy wykluczeń na poziomie samej kampanii Performance Max nie da się w tej chwili dodać samodzielnie w panelu; jedyna droga wiedzie przez opiekuna konta w Google, który wprowadza je po zgłoszeniu. Warto o tym wiedzieć, zanim ktoś spędzi godzinę na szukaniu takiej opcji w ustawieniach.
Nie zaglądam do niego codziennie i nie sądzę, żeby miało to sens. Uruchamiam skrypt raz w tygodniu, a czytam arkusz raz w miesiącu, przy okazji przeglądu konta — chyba że w kampanii coś się gwałtownie zmieniło i szukam wyjaśnienia.
Sekwencja, której się trzymam, jest zawsze taka sama: najpierw wynik kampanii, potem struktura kategorii, potem decyzja o wykluczeniach, na końcu praca nad plikiem produktowym i zasobami. Odwrotna kolejność kończy się dłubaniem w etykietach kategorii przy kampanii, która ma problem z budżetem albo z ceną.
Jeśli miałbym z tego wyciągnąć jeden wniosek dla kogoś, kto właśnie zaczyna: ten raport nie służy do sprawowania kontroli nad Performance Max, bo takiej kontroli nie mamy. Służy do wykrywania momentów, w których kampania zaczyna zarabiać na czymś innym niż myśleliśmy — a to i tak jest znacznie więcej niż zgadywanie, którym branża zajmowała się przez pierwszy rok istnienia tych kampanii.
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 |