Dlaczego 90% kont, które przejmuję, mierzy nie to co trzeba
Zanim zacznę cokolwiek optymalizować w kampanii Google Ads, sprawdzam konfigurację GA4. W firmach usługowych — kancelariach, agencjach, firmach wdrożeniowych, doradcach, software house'ach — widzę niemal zawsze ten sam wzorzec: GA4 mierzy wizyty na stronie, kliknięcia w menu i przewinięcia strony. Nie mierzy tego, co faktycznie prowadzi do sprzedaży.
To nie byłby duży problem, gdyby nie jedno: Smart Bidding w Google Ads uczy się na podstawie zdarzeń konwersji, które mu podajesz. Jeśli podajesz mu "wizytę na stronie ponad 10 sekund" jako główny cel, algorytm będzie szukał ludzi, którzy zostają na stronie 10 sekund — nie ludzi, którzy dzwonią i podpisują umowę. To zupełnie inna grupa odbiorców.
Algorytm optymalizuje pod dokładnie to, co mu każesz mierzyć. Firma usługowa bez zdarzeń odzwierciedlających realne zapytania sprzedażowe płaci za ruch, który wygląda dobrze w raportach i nie generuje ani jednego telefonu.
Dlaczego akurat te zdarzenia, a nie ogólny cel "kontakt"
W usługach B2B i doradczych ścieżka zakupowa rzadko kończy się jednym kliknięciem w formularz. Klient czyta ofertę, sprawdza referencje, wraca kilka razy, czasem dzwoni zamiast pisać, czasem pobiera cennik albo case study przed kontaktem. Jeśli mierzysz tylko "wysłanie formularza", tracisz sygnał o wszystkich osobach, które są blisko decyzji, ale jeszcze jej nie podjęły.
Dlatego zanim włączę jakąkolwiek kampanię, konfiguruję komplet zdarzeń w GA4 przez Google Tag Manager. Poniżej dokładnie te, które uznaję za obowiązkowe.
6 zdarzeń, które konfiguruję zawsze
Jak wdrażam te zdarzenia przez GTM — krok po kroku
Wszystkie sześć zdarzeń wdrażam przez Google Tag Manager, nie przez kod na stronie. Dzięki temu mogę je zmieniać bez angażowania programisty.
Formularz kontaktowy
Jeśli formularz jest zbudowany na standardowym pluginie (WPForms, Gravity Forms, Contact Form 7) — używam wbudowanych triggerów "Form Submission" z Warstwy Danych (dataLayer), które te wtyczki generują automatycznie. Jeśli formularz jest customowy, proszę o dodanie prostego zdarzenia dataLayer.push przy stronie z potwierdzeniem ("thank you page") albo nasłuchuję na widoczność komunikatu potwierdzającego.
Kliknięcia telefonu i e-maila
Trigger typu "Just Links" z warunkiem Click URL zawiera tel: oraz osobno zawiera mailto:. To dwa oddzielne triggery i dwa oddzielne tagi zdarzeń GA4 — nie łączę ich w jedno zdarzenie "kontakt", bo chcę wiedzieć, który kanał kontaktu działa lepiej.
Pobrania plików
Trigger "Just Links" z warunkiem Click URL kończy się na .pdf (lub inne rozszerzenie, którego firma używa do materiałów). Warto dodać zmienną przechwytującą nazwę pliku, żeby w raportach widzieć, który dokładnie materiał był pobierany.
Czas na stronie ofertowej
To jedyne zdarzenie, które wymaga odrobiny dodatkowej konfiguracji — trigger "Element Visibility" połączony z timerem, lub prostszy wariant: trigger "Timer" ograniczony regułą URL do konkretnych podstron ofertowych. Kluczowe: nigdy nie stawiam tego triggera na całej witrynie.
Rezerwacja terminu
Jeśli narzędzie do rezerwacji (Calendly, TidyCal) jest osadzone jako widget, najłatwiej złapać zdarzenie przez nasłuchiwanie na komunikaty postMessage, które te narzędzia wysyłają po potwierdzeniu rezerwacji — GTM ma do tego gotowy typ triggera.
Które z tych zdarzeń oznaczam jako konwersję w Google Ads — i dlaczego nie wszystkie
Tu popełnia się drugi częsty błąd: oznaczenie wszystkich sześciu zdarzeń jako głównych konwersji w Google Ads. Smart Bidding wtedy miesza sygnały o bardzo różnej wadze i traci ostrość optymalizacji.
| Zdarzenie | Rola w Google Ads | Uwaga |
|---|---|---|
| Formularz kontaktowy | Główna konwersja | Liczy się do strategii ustalania stawek |
| Kliknięcie telefonu | Główna konwersja | Liczy się do strategii ustalania stawek |
| Rezerwacja terminu | Główna konwersja | Zwykle najwyższa wartość — jeśli dostępna, ustawiam ją jako priorytetową |
| Pobranie materiału | Pomocnicza | Importuję do GA4, ale oznaczam w Google Ads jako "obserwowana", nie główna |
| Kliknięcie e-maila | Pomocnicza | Obserwowana — nie wpływa na strategię stawek |
| Czas na stronie oferty | Tylko GA4 | Nigdy nie importuję do Google Ads jako konwersja — służy wyłącznie do analizy |
Do Google Ads importuję jako konwersje "liczone" tylko te zdarzenia, które bezpośrednio korelują z realnym zapytaniem sprzedażowym. Zdarzenia pomocnicze zostawiam widoczne w raportach, ale poza strategią ustalania stawek — inaczej algorytm rozmywa optymalizację między sygnałami o zupełnie różnej wartości.
Co sprawdzam tuż przed włączeniem kampanii
Nawet dobrze skonfigurowane zdarzenia trzeba przetestować, zanim ruszy budżet reklamowy. Standardowo robię to w trybie Podglądu (Preview) w GTM, wysyłając testowe zgłoszenia przez każdy kanał kontaktu i sprawdzając w czasie rzeczywistym w GA4 (raport DebugView), czy zdarzenie faktycznie dociera z poprawnymi parametrami.
Zdarzenie "wysłanie formularza" odpala się przy każdym kliknięciu przycisku, niezależnie od tego, czy formularz przeszedł walidację. Efekt: dziesiątki fałszywych konwersji z pustych lub błędnie wypełnionych formularzy, które psują dane, zanim jeszcze kampania ruszy.
Jak łączę te zdarzenia w lejek w Eksploracjach GA4
Pojedyncze zdarzenia to dopiero połowa obrazu. Żeby zobaczyć, gdzie realnie tracę potencjalnych klientów, buduję w GA4 raport typu Eksploracja lejka, układając zdarzenia w kolejności, w jakiej faktycznie występują na ścieżce: wejście na stronę ofertową → 90 sekund na cenniku lub pobranie materiału → kontakt (formularz, telefon, rezerwacja).
Taki lejek pokazuje coś, czego nie widać w pojedynczych raportach zdarzeń — na którym dokładnie etapie odpada najwięcej osób. Czasem okazuje się, że ruch na stronę oferty jest spory, ale bardzo mało osób dociera do etapu "90 sekund na cenniku" — co zwykle oznacza problem z samą treścią cennika, nie z kampanią reklamową. Innym razem lejek jest szeroki aż do etapu kontaktu, a odpada dopiero na samym formularzu — co sugeruje problem z jego długością albo umiejscowieniem na stronie.
Jeśli lejek pokazuje słaby punkt jeszcze przed startem płatnego ruchu, warto go naprawić zanim zaczniesz płacić za kliknięcia, które i tak nie dotrą do etapu kontaktu. Wpuszczanie płatnego ruchu w lejek z dziurą to najdroższy sposób na odkrycie problemu ze stroną.
Checklist przed włączeniem kampanii
- Czy masz skonfigurowane wszystkie sześć zdarzeń w GTM i widzisz je w DebugView GA4?
- Czy formularz mierzy potwierdzenie wysłania, a nie samo kliknięcie przycisku?
- Czy telefon i e-mail są osobnymi zdarzeniami, a nie jednym wspólnym "kontaktem"?
- Czy czas na stronie jest ograniczony do konkretnych podstron ofertowych, nie do całej witryny?
- Czy w Google Ads jako konwersje "liczone" oznaczyłeś tylko zdarzenia o wysokiej wartości sprzedażowej?
- Czy przetestowałeś każdą ścieżkę (formularz, telefon, pobranie, rezerwację) osobno w trybie Preview?
"Kampania nie może być mądrzejsza niż dane, które jej dajesz. Zanim zaczniesz optymalizować stawki, zoptymalizuj to, co w ogóle nazywasz sukcesem."
— Zasada, którą stosuję przy każdym nowym koncie