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.
„Konkurencja wyklikuje mi budżet” to jedno z najczęstszych zdań, jakie słyszę na pierwszym spotkaniu. Zwykle pojawia się wtedy, gdy koszt kliknięcia rośnie, a liczba zapytań ofertowych spada — i szukamy przyczyny na zewnątrz, bo to najprostsze wytłumaczenie.
Traktuję to podejrzenie poważnie, bo nieuczciwe kliknięcia istnieją i potrafią realnie zjadać dzienny budżet. Jednocześnie w większości kont, które sprawdzam pod tym kątem, faktyczna przyczyna słabych wyników leży zupełnie gdzie indziej: w dopasowaniu przybliżonym bez wykluczeń, w sieci reklamowej włączonej razem z wyszukiwarką albo w kierowaniu geograficznym obejmującym pół Europy.
Dlatego kolejność w tym tekście jest taka: najpierw jak sprawdzić, czy problem jest realny, potem co robi Google, a na końcu co możesz zrobić sam. Zamiana tej kolejności prowadzi do miesięcy walki z wiatrakami.
Warto rozdzielić kilka różnych zjawisk, bo wrzucanie ich do jednego worka utrudnia diagnozę.
Pierwsze cztery punkty wymagają różnych narzędzi obrony. Ostatni wymaga rozmowy i pięciu minut w ustawieniach.
Google filtruje ruch, który uzna za nieprawidłowy, i nie pobiera za niego opłaty. Odbywa się to zanim kliknięcie trafi do rozliczenia, więc w większości przypadków ochrona działa bez naszego udziału. Część kliknięć wykrywa się z opóźnieniem — wtedy pojawia się korekta w rozliczeniach.
To, czego prawie nikt nie sprawdza, jest dostępne w panelu: kolumny z nieprawidłowymi kliknięciami. Dodaję je do widoku kampanii razem z odsetkiem takich kliknięć i patrzę na dwie rzeczy — czy liczba jest zauważalna oraz czy w konkretnych dniach nie skacze. To pierwszy realny dowód w sprawie, a nie przeczucie.
Warto rozumieć, co ta liczba znaczy. Wysoki odsetek nie oznacza, że jesteś atakowany i tracisz pieniądze — oznacza, że filtr złapał ruch i za niego nie zapłaciłeś. Sygnałem ostrzegawczym jest raczej sytuacja odwrotna: koszt rośnie, kliknięć jest dużo, a nieprawidłowych praktycznie zero, mimo że dane z witryny pokazują ruch bez sensu.
Jeśli masz uzasadnione podejrzenie i dane, które je popierają, można zgłosić sprawę przez wsparcie Google Ads. Przygotuj konkretne dni, godziny i kampanie — zgłoszenie w formie „mam wrażenie, że ktoś mnie klika” nie ma jak zostać rozpatrzone.
Zestawiam trzy źródła i szukam rozbieżności między nimi.
Pierwsze: rozkład kliknięć w czasie. Segmentuję kampanię po dniach i godzinach. Nienaturalny wzór — seria kliknięć w minutach, w których nikt nie pracuje, powtarzalna co dobę — jest znacznie mocniejszym dowodem niż sam wzrost kosztu.
Drugie: dane z witryny. Kliknięcia w panelu Google Ads porównuję z wejściami z reklamy w analityce i z logami serwera. Kliknięcia bez sesji, sesje z czasem zaangażowania bliskim zeru, wejścia z tego samego adresu w krótkich odstępach — to obraz ruchu, który nie jest człowiekiem szukającym oferty. Adresów IP Google Ads nie pokaże, ale logi serwera i owszem.
Trzecie: rozbicie po sieciach i urządzeniach. Jeśli anomalia siedzi w sieci reklamowej albo w aplikacjach mobilnych, to zwykle nie jest atak konkurencji, a zwykły wyciek na słabych powierzchniach. To dobra wiadomość, bo z tym da się zrobić bardzo dużo.
Wykluczenia IP ustawia się w ustawieniach kampanii i to najbardziej bezpośrednie narzędzie, jakie mamy. Limit wynosi 500 adresów lub zakresów na kampanię, można używać gwiazdki do objęcia całej podsieci.
Do czego to naprawdę służy: do odcięcia własnego biura, agencji, siedziby klienta oraz konkretnego, powtarzalnego adresu zidentyfikowanego w logach. W tych zastosowaniach działa świetnie i zajmuje kwadrans.
Do czego nie służy: do obrony przed kimkolwiek, kto ma zmienny adres. Adresy domowe są przydzielane dynamicznie, ruch mobilny wychodzi z pul operatora, a każdy, kto klika świadomie, ma do dyspozycji sieci proxy. Wykluczysz jeden adres, atak wróci z innego w ciągu godziny. Do tego wykluczenie całej puli operatora zwykle odcina też prawdziwych klientów, więc lekarstwo bywa gorsze od choroby.
Traktuję więc listę IP jako narzędzie precyzyjne i punktowe, a nie jako tarczę.
Gdyby dało mi się zrobić tylko jedną rzecz z tej listy, zrobiłbym tę.
Zaczynam od sprawdzenia, czy kampania w sieci wyszukiwania nie ma włączonych sieci partnerskich i sieci reklamowej. To domyślne ustawienie kreatora i najczęstsza przyczyna kliknięć, których nikt nie zamawiał.
Potem, w kampaniach faktycznie reklamowych, otwieram raport miejsc docelowych, sortuję po koszcie i czytam. Domeny bez związku z tematem, agregatory, strony z listą losowych treści — wykluczam. Osobno wykluczam kategorie aplikacji mobilnych na poziomie kampanii, bo w aplikacjach kliknięcie przypadkowe jest regułą, nie wyjątkiem. Przy większości kont, które przejmuję, samo to porządkuje wynik szybciej niż jakakolwiek optymalizacja stawek.
Warto też pamiętać, że listę wykluczonych miejsc docelowych da się utrzymywać jako wspólną i podpinać do kolejnych kampanii, żeby nie zaczynać za każdym razem od zera.
Kilka decyzji sprawia, że nawet realny atak boli mniej.
Na rynku jest kilka usług, które obiecują ochronę przed nieuczciwym klikaniem. Działają na podobnej zasadzie: wstawiasz ich skrypt na stronę, on profiluje wejścia, a podejrzane adresy trafiają automatycznie na listę wykluczeń w kampanii.
Kiedy uważam to za sensowny wydatek: przy dużym budżecie w wyszukiwarce, w konkurencyjnych branżach usługowych z wysokim kosztem kliknięcia, i tylko wtedy, gdy najpierw zrobiłem porządek w sieciach, wykluczeniach i geotargetowaniu. Narzędzie kupione zamiast tej pracy sprząta objawy.
Na co zwracam uwagę przy wyborze: na czym opiera się decyzja o zablokowaniu, czy widzę powód każdej blokady, ile wynosi koszt w relacji do budżetu i — najważniejsze — że to nadal jest tylko lista wykluczeń IP, z tym samym limitem i tymi samymi ograniczeniami, o których pisałem wyżej. Żadne narzędzie nie zablokuje kliknięcia, które nie zostawia stabilnego adresu.
Uczciwy wniosek: część nieuczciwych kliknięć zawsze przejdzie i to jest wpisane w model aukcyjny. Zadaniem nie jest zero, a doprowadzenie do stanu, w którym straty są małe, przewidywalne i widoczne w danych, zanim zjedzą kwartał.
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 |