Kampania w Google Ads chodzi od tygodni, klikają, a w kolumnie Konwersje pusto. Albo gorzej – liczby są, ale nie zgadzają się z tym, co widzisz w CRM. To jeden z najczęstszych problemów, na który trafiam w audytach, i niemal zawsze sprowadza się do jednej z kilku powtarzalnych przyczyn. Smart Bidding bez konwersji to strzelanie na ślepo: algorytm optymalizuje pod sygnał, którego nie ma. Pokażę, jak zdiagnozować problem przez GTM Preview, Tag Assistant, GA4 DebugView i zakładkę Diagnostyka w Google Ads, a potem jak go naprawić – z konkretną konfiguracją krok po kroku.
Krótka odpowiedź
Usługi KC Mobile
Sprawdź naszą ofertę
Potrzebujesz pomocy specjalisty? Skorzystaj z naszych usług i rozwiń swój biznes online.
Zanim ruszysz debug – weryfikacja statusu konwersji w panelu
Pierwszy krok to nie GTM Preview, tylko panel Google Ads. Wejdź w Narzędzia i ustawienia, Konwersje i popatrz na kolumnę Status przy każdej akcji. Cztery stany, które musisz znać:
- Recording conversions – tag działa, konwersje spływają. Jeśli mimo to Smart Bidding źle optymalizuje, problem nie leży w śledzeniu, tylko w strukturze kampanii.
- No recent conversions – tag kiedyś działał, ale od 7+ dni nic nie rejestruje. Alarm: ktoś zmienił kod strony, wygasł consent, kontener GTM cofnięto do starszej wersji.
- Unverified – Google nigdy nie zarejestrował tej konwersji. Tag zwykle nie został wdrożony albo siedzi na innej stronie niż powinien.
- Inactive – konwersja zarchiwizowana lub wyłączona ręcznie.
Drugi szybki check to zakładka Diagnostyka (Diagnostics) w menu konwersji. Zgodnie z pomocą Google Ads, narzędzie automatycznie wykrywa problemy z tagiem: brakujący Conversion Linker, brak sygnałów zgody, niewypełnione parametry, konflikty z konwersjami rozszerzonymi. To darmowy audyt cyfrowy wbudowany w konto, z którego rzadko ktoś korzysta przed wpadnięciem w panikę.
Potrzebujesz pomocy z tym problemem?
Naprawimy to za Ciebie. Zostaw kontakt – odezwiemy się w 24h, zdiagnozujemy problem i przygotujemy wycenę naprawy.
- Bezpłatna diagnoza problemu w 24h
- Konkretna wycena naprawy + estymowany czas
- Doświadczenie w 200+ podobnych przypadkach
Wolisz zlecić to nam? Google Ads od 1 000 zł/mc – wycena w 24h →
Jak działa śledzenie konwersji w Google Ads (tag Google Ads vs import z GA4)
Zanim cokolwiek naprawisz, musisz wiedzieć, co powinno zadziałać – inaczej będziesz grzebał w GTM, gdy problem siedzi w GA4.
GCLID to fundament mechanizmu. GCLID (Google Click Identifier) to unikalny ciąg, który Google dołącza do adresu docelowego po kliknięciu reklamy. Zgodnie z pomocą Google Ads, to GCLID łączy konkretne kliknięcie z późniejszą konwersją – bez automatycznego tagowania (auto-tagging) śledzenie oparte na kliknięciu nie zadziała. Klient klika, GCLID ląduje w URL i cookie, a gdy ten sam użytkownik kupi, tag odsyła sygnał do Google z zapisanym GCLID. Silnik konwersji dopasowuje jedno do drugiego. Jeśli auto-tagging jest wyłączony albo GCLID gubi się po drodze, konwersja nie ma jak trafić do reklamy.
Dwie ścieżki, które trzeba rozróżnić – każdą debugujesz inaczej.
| Ścieżka | Jak działa | Gdzie debugujesz |
|---|---|---|
| Natywny tag Google Ads (gtag.js lub w GTM) | Tag odpala się na thank-you page i wysyła zdarzenie wprost do Google Ads | GTM Preview + Tag Assistant + Diagnostyka |
| Import konwersji z GA4 | Zdarzenie (`purchase`, `generate_lead`) zbiera GA4, oznaczasz jako konwersję i importujesz | GA4 DebugView (najpierw) + ustawienia importu |
Pierwsza ścieżka jest szybsza w debugowaniu. Druga daje spójność z GA4, ale dodaje ogniwo: jeśli zdarzenie nie dociera do GA4, nie ma czego importować – nawet gdy tag w GTM odpala się idealnie. Dlatego przy imporcie weryfikację zaczynasz w GA4 DebugView. Konfigurację obu ścieżek od zera opisaliśmy w przewodniku śledzenie konwersji Google Ads – konfiguracja.
Tabela diagnostyczna – od objawu do pierwszego kroku
Znajdź swój objaw, sprawdź prawdopodobną przyczynę i wykonaj pierwszy krok weryfikacji – wszystko po stronie Google Ads i GTM.
| Objaw | Prawdopodobna przyczyna | Pierwszy krok weryfikacji |
|---|---|---|
| Status: Unverified | Tag nigdy nie zadziałał | Otwórz thank-you page w Tag Assistant – czy tag Google Ads w ogóle się odpala |
| 0 konwersji, ale są zamówienia | Brak tagu / niepublikowany GTM / zły trigger | GTM Preview na stronie podziękowania – czy `purchase` jest w Tags Fired |
| Konwersje jako Direct w GA4 | Zepsuty cross-domain (GCLID gubiony) | Po przejściu do checkout sprawdź, czy `gclid` jest nadal w URL |
| Liczby panel ≠ sklep (ok. 2x) | Duplikat gtag.js + tag w GTM | Tag Assistant – czy są dwa tagi z tym samym Conversion ID |
| Konwersji ubywa po wdrożeniu CMP | Zła konfiguracja Consent Mode v2 | GTM Preview – czy zdarzenie `consent` (default) odpala się na początku |
| No recent conversions od kilku dni | Deploy strony / cofnięty kontener / wygasły consent | GTM Versions vs data ostatniej konwersji |
| Niespójne dane Google Ads vs GA4 vs CRM | Okno konwersji, model atrybucji, deduplikacja | Porównaj definicje konwersji i okna w obu systemach |
Poniżej rozkładam najczęstsze przyczyny na czynniki pierwsze – od najczęstszej do najbardziej podstępnej.
Przyczyna A – tag Google Ads nie został wdrożony na stronie
Brzmi trywialnie, ale to najczęstszy powód. Ktoś zainstalował kontener GTM na stronie głównej, ale nie na checkout albo thank-you page. Albo developer wyłączył wtyczkę od tagów, bo spowalniała stronę.
Szybka weryfikacja: otwórz stronę podziękowania po testowym zamówieniu, View-source (Ctrl+U) i wyszukaj `gtag(` albo `GTM-`. Jeśli ani jedno – tagu nie ma. Druga metoda: Tag Assistant (rozszerzenie Chrome od Google). Zgodnie z dokumentacją Google, służy on właśnie do weryfikacji, czy tagi Google poprawnie odpalają się na stronie. Pusta lista – problem jasny.
Rozwiązanie: dla WordPressa i WooCommerce najprościej przez Site Kit by Google albo GTM4WP – wklejasz Container ID (GTM-XXXXXX), wtyczka wstawia snippet na wszystkie podstrony. Shopify – przez ustawienia Checkout i additional scripts. Rozwiązanie custom – developer wrzuca snippet GTM do szablonu (head i body). Przy prowadzeniu kampanii Google Ads zaczynamy zawsze od tego checka, bo bez tagu Smart Bidding nie ma jak działać.
Przyczyna B – kontener GTM opublikowany, ale tag nadal w workspace
Typowa pułapka: wprowadzasz zmianę w GTM, testujesz przez Preview, działa idealnie, zamykasz zakładkę i zapominasz kliknąć Submit → Publish. Tag istnieje w workspace, ale na produkcji go nie ma – publikowana jest tylko zatwierdzona wersja.
Weryfikacja: w GTM przejdź do Versions i porównaj numer ostatniej opublikowanej wersji (Live) z ostatnią zapisaną zmianą. Różnią się – masz niewysłane zmiany.
Druga odmiana tego problemu: dwie osoby edytują jeden kontener i nadpisują sobie workspaces. Rozwiązanie – osobne workspace i Merge przed publikacją. GTM zapisuje historię wersji, więc po awarii zawsze wrócisz do działającej wersji jednym kliknięciem (Actions, Set as latest version, Publish). To ratunek w sytuacji rano działało, teraz nic nie liczy. Więcej w poradniku o błędach w integracji GA4 z Google Ads.
Przyczyna C – brak Consent Mode v2 (wymóg Google dla EOG od marca 2024)
Najbardziej podstępna przyczyna, bo wygląda, jakby wszystko działało: tag się odpala, GTM Preview to potwierdza, Tag Assistant zielony – a w panelu konwersji ubywa.
Zgodnie z wymogami Google dla Europejskiego Obszaru Gospodarczego, od 6 marca 2024 reklamodawcy muszą mieć wdrożony Consent Mode v2, aby korzystać z pełnych funkcji pomiaru i remarketingu. Gdy użytkownik nie wyrazi zgody, a strona nie przekazuje sygnałów zgody do Google, tag ogranicza wysyłkę konwersji – Smart Bidding traci sygnał.
Wdrożenie:
1. Zainstaluj CMP (Cookiebot, Complianz dla WordPress albo Usercentrics) – wszystkie mają natywną integrację z GTM i Consent Mode v2.
2. W GTM dodaj template Google Consent Mode v2 z Community Gallery – ustawi domyślne stany na denied przed interakcją.
3. Skonfiguruj, by po akceptacji cookies CMP wysyłał update: `ad_storage=granted`, `analytics_storage=granted`, `ad_user_data=granted`, `ad_personalization=granted`.
4. Opublikuj i sprawdź w GTM Preview zdarzenie `consent` na początku ładowania.
Z poprawnym Consent Mode v2 Google modeluje część brakujących konwersji z sygnałów zagregowanych. Skala odzysku zależy od ruchu i odsetka zgód, więc nie obiecuj sobie konkretnego procentu – ale to często jedyna zmiana, która przywraca sensowne raporty.
Konwersje rozszerzone (Enhanced Conversions) – jak je wdrożyć i zweryfikować
Konwersje rozszerzone podbijają dokładność pomiaru, wysyłając zahaszowane dane użytkownika razem z konwersją. Zgodnie z dokumentacją Google Ads, dane first-party (e-mail, telefon, imię) są haszowane algorytmem SHA-256 po stronie przeglądarki, zanim trafią do Google – sam Google nie dostaje danych w postaci jawnej. Dopasowuje je do zalogowanych kont Google i uzupełnia atrybucje, których nie złapały cookies (np. na iOS, gdzie Safari i ITP ograniczają cookies trzecich stron). Najmocniej pomagają tam, gdzie masz dane kontaktowe klienta – przy zakupach i leadach z formularza.
Włączenie:
1. Google Ads: Narzędzia, Konwersje, wybierz akcję, sekcja Enhanced Conversions, Turn on.
2. Wybierz metodę: Google Tag Manager (najprościej) albo gtag.js.
3. W GTM otwórz tag Google Ads Conversion Tracking, włącz Include user-provided data, dodaj zmienną typu User-Provided Data.
4. Zmienna pobiera z DataLayer e-mail i telefon – ważne, by telefon miał prefiks kraju (`+48`), bo bez niego Google może nie dopasować numeru. Dla WooCommerce DataLayer GTM4WP zwykle już te pola wysyła.
5. Publish, odczekaj do 48 h – status Enhanced Conversions zmieni się na Recording.
Consent Mode v2 + konwersje rozszerzone to w 2026 minimum dla Smart Bidding. Szczegóły w przewodniku Enhanced Conversions w Google Ads.
Przyczyna E – duplikaty tagów (gtag.js plus GTM liczą zdarzenia podwójnie)
Scenariusz: ktoś wrzucił globalny gtag.js wprost do szablonu, a później druga agencja wdrożyła GTM i też postawiła tag Google Ads Conversion. Konwersje liczą się dwa razy – panel pokazuje dwukrotność realnych zamówień, a Smart Bidding optymalizuje pod zawyżone liczby.
Wykrycie: Tag Assistant pokaże dwa osobne tagi Google Ads z tym samym Conversion ID na jednej stronie. Alternatywnie w GTM Preview na timeline zobaczysz dwa niezależne zdarzenia konwersji dla jednego załadowania thank-you page.
Rozwiązanie:
1. Zdecyduj, co zostaje – GTM (rekomendacja) albo gtag.js (przy minimalnym setupie).
2. Usuń drugie. Gtag.js usuwasz z szablonu (`functions.php` lub `header.php` w WordPressie), tag w GTM – w panelu i publikujesz.
3. Odczekaj 24–48 h i porównaj konwersje w Google Ads z realnymi zamówieniami. Spadek mniej więcej o połowę = miałeś duplikaty.
Historyczne dane pozostaną zawyżone – dodaj adnotację w panelu (Reports, Annotations) z datą naprawy, by raporty i optymalizacja uwzględniły korektę. Ten błąd trafia się często w audytach kont e-commerce.
Przyczyna F – złe triggery w GTM (All Pages zamiast purchase)
Klasyczny objaw: panel pokazuje znacznie więcej konwersji niż realnych zamówień. Najczęstszy powód – tag ustawiono na trigger All Pages albo samo wyświetlenie thank-you page. Wtedy każda wizyta liczy się jako zakup: boty, odświeżenia, powroty do linku z e-maila z potwierdzeniem.
Poprawny setup dla sklepów internetowych:
- Trigger: zdarzenie `purchase` z DataLayer (raz, po złożeniu zamówienia)
- Warunek: `transaction_id` nie jest pusty (pomija odświeżenia)
- Deduplikacja: Firing Options, Once per event
Dla leadów (formularza):
- Trigger: `form_submission` z konkretnym Form ID
- Nie: Click (łapie też walidacje błędów i próby bez wysłania)
Debug: w GTM Preview przejdź funnel jak prawdziwy użytkownik – w Summary sprawdzisz, który trigger odpala się kiedy. Jeśli `purchase` odpala się na stronie produktu, to oczywisty błąd. Smart Bidding karmione fałszywymi konwersjami zawyża stawki, bo myśli, że masz świetny zwrot z reklam.
Dublowanie atrybucji i rozjazd liczb (czemu Google Ads ≠ GA4 ≠ CRM)
Pytanie wraca w każdym audycie: czemu panel Google Ads pokazuje inną liczbę niż GA4, a CRM jeszcze inną? Często żaden nie jest zepsuty – liczą różne rzeczy w różny sposób.
- Cross-domain. Gdy checkout jest na subdomenie lub zewnętrznej bramce (PayU, Przelewy24, Stripe hosted), bez konfiguracji linkera Google widzi dwóch osobnych użytkowników, GCLID gubi się, a konwersje lądują jako Direct. W GTM dodaj w tagu GA4 Configuration pole `linker` z listą domen, a w GA4 Admin, Data Streams, Configure domains wpisz wszystkie domeny. Test: kliknij reklamę z `gclid` w URL, przejdź do checkout i sprawdź, czy `gclid` nadal jest w adresie.
- Okno konwersji. Google Ads i GA4 mogą mieć różne okna (30 vs 90 dni) – konwersja policzona w jednym nie pojawi się w drugim.
- Model atrybucji. Google Ads przypisuje wg swojego modelu (data-driven, last click), GA4 wg swojego – ta sama sprzedaż trafia do innego kanału.
- Deduplikacja i czas zliczania. Google Ads liczy wg daty kliknięcia, sklep i CRM wg daty transakcji. Na styku dni daje to rozbieżności bez żadnego błędu.
- Modelowanie Consent Mode. Część konwersji w Google Ads to wartości modelowane; CRM widzi tylko realne zamówienia, więc będzie niższy.
Zasada: CRM to źródło prawdy o przychodzie, Google Ads o tym, która kampania zadziałała. Nie wymuszaj idealnej zgodności – pilnuj, by trend się zgadzał, a różnica była stabilna w czasie.
Nagły spadek konwersji – działało, nagle przestało
Status No recent conversions albo gwałtowny spadek w jeden dzień, mimo że ruch i sprzedaż idą dalej, to osobny scenariusz. Nie szukasz błędu w świeżym tagu – szukasz, co się zmieniło. Najczęściej:
- Deploy strony – nowa wersja motywu nadpisała snippet GTM albo zmieniła thank-you page (inny URL, brak DataLayer push).
- Cofnięty kontener GTM – ktoś przywrócił starszą wersję albo opublikował workspace bez tagu konwersji. Sprawdź GTM Versions.
- Zmiana CMP lub wygasły consent – aktualizacja banera cookies czy błędna konfiguracja Consent Mode potrafi z dnia na dzień odciąć wysyłkę.
- Zmiana w GA4 (przy imporcie) – wyłączone lub przemianowane zdarzenie urywa import.
Pierwszy ruch jest zawsze ten sam: porównaj datę ostatniej konwersji w panelu z historią zmian – GTM Versions, log deployów, datę aktualizacji CMP. Punkt, w którym liczby zamarły, niemal zawsze pokrywa się z jakąś zmianą w tym samym dniu.
Procedura debug krok po kroku (GTM Preview, Tag Assistant, GA4 DebugView, Diagnostyka)
Masz teorię – czas na sprawdzenie. Checklista stosowana przy każdym audycie śledzenia konwersji:
1. Włącz GTM Preview. W GTM wybierz kontener, kliknij Preview, wpisz URL strony. Otworzy się karta z panelem Tag Assistant.
2. Przejdź cały funnel. Produkt, koszyk, checkout, testowe zamówienie (tryb testowy bramki albo kupon 100%).
3. Na thank-you page sprawdź timeline. W Tag Assistant zobaczysz `container loaded`, `page view`, `add_to_cart`, `begin_checkout`, `purchase`. Kliknij `purchase` – po prawej Tags Fired i Tags Not Fired.
4. Zweryfikuj Google Ads Conversion Tag. Musi być w Tags Fired. Conversion ID, Conversion Label, Transaction ID, Value – wszystkie wypełnione (nie puste, nie undefined).
5. GA4 DebugView (jeśli importujesz z GA4). W GA4 wejdź w Admin, DebugView – z włączonym GTM Preview Twój ruch jest oznaczony jako debug. Sprawdź, że zdarzenie `purchase`/`generate_lead` dociera do GA4 z parametrami zanim zostanie zaimportowane. To ogniwo, które przy imporcie najczęściej przegapiają.
6. Tag Assistant w Chrome. Kliknij ikonę na thank-you page – Google Ads Conversion powinien mieć zielony status. Żółty lub czerwony – przeczytaj ostrzeżenie.
7. Diagnostyka Google Ads. Narzędzia, Konwersje, wybierz akcję, zakładka Diagnostics – Google sprawdza tag i pokazuje problemy (brak Conversion Linker, niewykryte sygnały zgody).
Pogłębienie: problemy z kampaniami Google Ads – diagnoza i rozwiązania oraz jak skonfigurować Google Tag Manager w Google Ads.
Kiedy zlecić specjaliście – server-side GTM, SPA, import konwersji offline
Większość problemów naprawisz sam, ale trzy scenariusze lepiej oddać developerowi albo agencji.
Server-side GTM. Klasyczny GTM (client-side) ładuje się w przeglądarce, więc adblockery i ITP w Safari blokują go coraz częściej. Server-side GTM to kontener na Twoim serwerze (zwykle Google Cloud Run) – zbiera dane z przeglądarki i dopiero on wysyła je do Google Ads/GA4. Poprawia odsetek zarejestrowanych konwersji, ale wymaga pracy DevOps i stałego kosztu hostingu.
Custom events dla SPA. React, Vue, Next.js – trigger page_view nie działa, bo strona się nie przeładowuje. Potrzebujesz DataLayer push przy zmianie route i custom trigger w GTM, czyli kodu po stronie frontendu.
Import konwersji offline. Gdy sprzedaż zamyka się przez telefon albo CRM (B2B, leady), konwersja dzieje się poza stroną. Wysyłasz ją do Google Ads przez import offline z zapisanym GCLID, co pozwala optymalizować Smart Bidding pod realny przychód, nie pod sam fakt wypełnienia formularza. Procedurę opisaliśmy w przewodniku import konwersji offline do Google Ads.
Jeśli chcesz pewność, że śledzenie działa, a Smart Bidding dostaje czyste dane, umów audyt trackingu – przechodzimy przez wszystkie przyczyny z tego poradnika plus checki pod konkretną branżę. W audytach rzadko zdarza się idealny setup; zwykle do poprawienia jest kilka rzeczy przeoczonych wcześniej.
Jeśli po przejściu tej checklisty konwersje nadal nie działają, oddaj debug nam – w ramach usługi pomiaru konwersji znajdziemy i naprawimy problem u źródła.
Wspomniane narzędzia
Chcesz więcej klientów z Google Ads?
Prowadzimy kampanie Google Ads od 1500 zł/mies. mierzalny ROAS. Certyfikowany Partner Google.
Najczęściej zadawane pytania
Dlaczego Google Ads pokazuje 0 konwersji mimo że ludzie kupują?
Jak sprawdzić, czy mój tag Google Ads Conversion faktycznie się odpala?
Czy muszę wdrażać Consent Mode v2 w Polsce?
Czym różnią się konwersje rozszerzone od zwykłego śledzenia?
Co zrobić, gdy Google Ads liczy konwersje dwa razy?
Dlaczego konwersje z reklam Google Ads są zaliczane jako Direct w GA4?
Dlaczego liczba konwersji w Google Ads różni się od GA4 i mojego sklepu?
Potrzebujesz pomocy?
Potrzebujesz pomocy z tym problemem?
Naprawimy to za Ciebie. Zostaw kontakt – odezwiemy się w 24h, zdiagnozujemy problem i przygotujemy wycenę naprawy.
- Bezpłatna diagnoza problemu w 24h
- Konkretna wycena naprawy + estymowany czas
- Doświadczenie w 200+ podobnych przypadkach
Wolisz zlecić to nam? Google Ads od 1 000 zł/mc – wycena w 24h →