W skrócie: Raporty Shopping i PMax pokazują zapytanie, ale ukrywają produkt. Dodaj jeden parametr URL, {lpurl}?utm_content={product_id}, a w ciągu tygodnia GA4 odda ci wycofany raport zapytanie × produkt, łącząc sessionManualAdContent z sessionGoogleAdsQuery. Na realnym koncie ten widok obnażył, że 85% wydatków płynęło przez pary, które nigdy nie skonwertowały. Te 0,25% par, które skonwertowały, działało z ROAS 46,8× i przyniosło cały przychód.
Chcesz tylko destylat metody?
Pobierz kompletne instrukcje dla AI — jeden plik, który wklejasz do Claude’a albo innego zdolnego agenta kodującego, a on wyciąga raport zapytanie × produkt z twojego konta. Zostaw e-mail, a plik jest twój — albo czytaj dalej niżej.
Jeden plik, jedna lista. Piszę tylko wtedy, gdy jest co czytać.
Klient zadał mi kiedyś pytanie, które powinno mieć odpowiedź na jedno kliknięcie. Ktoś wpisał „odkurzacz bezprzewodowy do 200”, kliknął reklamę Shopping, a konto za to zapłaciło. Na którym z 5 000 produktów w feedzie wylądowało to kliknięcie? Otworzyłem raport wyszukiwanych haseł, potem raport produktów, i nie dało się ich połączyć. Nadal się nie da. Google pokazuje ci zapytanie i pokazuje ci produkt, ale nigdy razem.
Lata temu dokładnie to parowanie dawało stare AdWords API. Potem po cichu zniknęło i żadne ustawienie, żaden raport, żadne pole API go nie przywróci. Dla sklepu internetowego to nie jest kosmetyczna luka. Powiązanie zapytania z produktem to miejsce, gdzie żyje prawdziwa optymalizacja: to ono mówi ci, czy twoje tytuły pasują do realnego popytu, które produkty ściągają śmieciowy ruch i dlaczego produkt dostaje kliknięcia, ale nigdy nie konwertuje.
Dwanaście lat budowania na Google Ads API nauczyło mnie, że raport, który Google wycofa, już nie wraca. Więc odbudowałem go sam, a odbudowa jest niemal żenująco prosta. Jeden parametr URL. W ciągu tygodnia GA4 oddaje ci każde płatne kliknięcie sparowane jako zapytanie × produkt, z sesjami, konwersjami i przychodem w komplecie. Budowa zajmuje minuty; reszta tego artykułu jest o tym, co robisz z tym, co wraca.
Rozwiązanie: jeden parametr, dwa wymiary GA4
Dodaj szablon śledzenia
Ustaw {lpurl}?utm_content={product_id} na kampaniach Shopping i PMax. Zmienna ValueTrack {product_id} wysyła ID produktu z Merchant Center przy każdym kliknięciu.
GA4 zapisuje produkt
UTM ląduje w wymiarze Treść reklamy z ręcznego tagowania (sesja) (sessionManualAdContent).
GA4 już zna zapytanie
Auto-tagowanie (gclid) wypełnia sessionGoogleAdsQuery w tej samej sesji.
Połącz oba wymiary
Każde płatne kliknięcie staje się parą zapytanie × produkt, z sesjami, współczynnikiem konwersji i przychodem w komplecie.
Auto-tagowanie i ręczny UTM nie walczą ze sobą. Gclid nadal obsługuje źródło, medium i kampanię; twój UTM niesie tylko ID produktu.
Wiedz, co dostajesz (i czego nie)
- Tylko kliknięte zapytania. Ten zbiór danych zaczyna się od kliknięcia. Zapytania, na które twoja reklama się pokazała, ale nikt nie kliknął, nigdy nie dotrą do GA4. Analiza na poziomie wyświetleń zostaje w standardowym raporcie Google, bez produktów.
- Około 20% kliknięć się nie sparuje. Luki tworzą sesje z odrzuconą zgodą, kanały PMax zupełnie bez zapytania (Display, YouTube, Gmail) oraz kliknięcia, które nigdy nie odpaliły analityki.
- Jeden produkt na sesję. Sesja zawiera ID produktu, który użytkownik kliknął, nawet jeśli potem przejrzy dziesięć innych.
Weź kompletne instrukcje AI do tej metody
Cała metoda, przepisana jako brief, który wklejasz prosto do Claude’a albo innego sprawnego agenta kodującego. Ustawia szablon śledzenia, wyciąga raport zapytanie × produkt z GA4 i uruchamia agregacje na twoim koncie. Szablon i jego trzy pułapki też tam są. Zostaw e-mail, a plik jest twój.
Jeden plik, jedna lista. Piszę tylko wtedy, gdy jest co czytać.
Wyciąganie raportu z GA4
W interfejsie GA4 otwórz Eksplorację i zbuduj tabelę w formacie dowolnym. Wymiary to Treść reklamy z ręcznego tagowania (sesja) i Zapytanie Google Ads (sesja). Dane to sesje, zdarzenia kluczowe (dawniej konwersje) i przychody z zakupów. Ustaw filtr wymiaru Źródło / medium sesji na wartość google / cpc.
Do czegokolwiek poważnego będziesz chcieć Data API, bo miejsce tego raportu jest w dashboardzie albo w złączeniu w BigQuery, a nie w karcie przeglądarki:
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
RunReportRequest, DateRange, Dimension, Metric, FilterExpression, Filter
)
request = RunReportRequest(
property=f"properties/{GA4_PROPERTY_ID}",
dimensions=[
Dimension(name="sessionManualAdContent"), # product ID
Dimension(name="sessionGoogleAdsQuery"), # search term
],
metrics=[
Metric(name="sessions"),
Metric(name="keyEvents"),
Metric(name="purchaseRevenue"),
],
date_ranges=[DateRange(start_date="30daysAgo", end_date="today")],
dimension_filter=FilterExpression(filter=Filter(
field_name="sessionSourceMedium",
string_filter=Filter.StringFilter(value="google / cpc"),
)),
)
Połącz sessionManualAdContent ze swoim feedem produktowym (id → tytuł, cena, kategoria) i raport jest kompletny. Zapytanie, produkt, tytuł, konwersje i przychód w jednej tabeli.
Zweryfikowane, nie wymyślone
Wdrożyliśmy to na aktywnym koncie czeskiego sprzedawcy elektroniki z 22 włączonymi kampaniami Shopping. Siedem dni później sprawdziłem GA4:
GA4, 7 dni po wdrożeniu
- Wiersze ruchu google/cpc 9 753
- Niosły ID produktu (utm_content) 96%
- Niosły zapytanie (sessionGoogleAdsQuery) 81%
- Niosły oba, działający raport zapytanie × produkt 78%
Teraz zabawna część: co mówią ci te pary
1 · Luka w tytule
Zestaw każde zapytanie z tytułem i opisem produktu, który wyświetlił się przy tym zapytaniu. Niedopasowanie wyskakuje samo:
Roadmapa feedu pisze się sama. Ostatnie dwa lata budowałem narzędzie AI do wzbogacania feedów i jeśli mam być szczery, słabością całej tej kategorii jest udowadnianie wpływu. Ten raport to naprawia. Przepisz tytuł tak, żeby pasował do popytu, który właśnie udowodniłeś, a potem patrz, jak CTR i współczynnik konwersji ruszają się per zapytanie. Wzbogacanie feedu przez AI przestaje być czymś, co bierzesz na wiarę, i staje się mierzalną pętlą.
2 · Kto jeszcze jest na „twoim” zapytaniu i z jakim produktem
Wykluczających słów kluczowych per produkt dodać nie możesz. Google nie daje ci takiej dźwigni w kampaniach Shopping ani PMax. Więc kiedy para zapytanie × produkt nie dowozi, pytanie o to, jak ją wykluczyć, prowadzi donikąd. Produktywne pytanie to, dlaczego nie dowozi.
Weź zapytanie i zescrapuj dla niego aktualną stronę wyników. Korzystam z endpointu serp/google/organic/live/advanced dostępnego w DataForSEO. Jeden POST z treścią zapytania i location_code twojego rynku zwraca całą stronę wyników jako ustrukturyzowany JSON: płatne reklamy, bloki shopping z nazwami sprzedawców i cenami oraz wyniki organiczne pod spodem. DataForSEO rozlicza się per SERP, a jeden SERP obejmuje do 10 wyników. Przy obecnej cenie bazowej około 0,002 $ za SERP sprawdzenie 200 zapytań o domyślnej głębokości kosztuje jakieś 0,40 $, nie licząc płatnych parametrów zaawansowanych.
Typowe znalezisko. Twój śpiwór ze średniej półki zbiera kliknięcia na ogólnym zapytaniu, a to samo zapytanie pokazuje trzy budżetowe marki z tej samej kategorii za połowę twojej ceny. Produkt jest w porządku. Cena przegrywa tę konkretną aukcję.
Teraz masz realne opcje. Zmień cenę. Wepchnij wyróżnik w tytuł („wypełnienie puchowe, komfort −15 °C”). Przenieś produkt do kampanii ze strategią ustalania stawek pasującą do realiów jego marży. Albo przyjmij zapytanie jako górę lejka i oceniaj je po metrykach wspomaganych zamiast po ostatnim kliknięciu.
3 · Decyzje o strukturze i stawkach
Produkty przyciągające zapytania o wysokiej intencji zasługują na własne grupy zasobów i budżety. Produkty zbierające tylko ogólny ruch należą do zbiorczych grup z konserwatywnymi celami. Ten raport stawia segmentację Shoppingu na dowodach zamiast na przeczuciu.
4 · Badanie kondycji PMaxa
PMax nie mówi ci o wyszukiwaniu prawie nic. Ten raport jest najbliższy audytowi, jaki dostaniesz: dla każdego produktu widzisz, co PMax faktycznie kupuje dla ciebie w wyszukiwarce.
Przejdę z tobą przez jeden realny eksport, krok po kroku
Wszystko powyżej było o tym dlaczego. Teraz przychodzi jak: co pobierasz, na co patrzysz i jaka realna liczba z tego wychodzi.
Dane w tej sekcji pochodzą z drugiego konta, które należy do średniej wielkości czeskiego sklepu internetowego w segmencie tanich produktów. To nie jest sklep z elektroniką z ramki GA4 powyżej. Wybrałem ten sklep, ponieważ jego katalog jest na tyle szeroki, że każdy wzorzec widać w pełnej skali. Wyciągnąłem jego surowy raport wyszukiwanych haseł Shopping przez Google Ads API do lokalnej tabeli SQLite i puściłem na nim poniższe agregacje. Jedno zastrzeżenie na start. Surowy raport daje ci grupę reklam albo grupę produktów, pod którą zapytanie zostało wyświetlone, nie pojedynczy produkt. To dokładnie ta luka, którą zamyka sztuczka z UTM. Ale nawet na poziomie grupy produktów poniższe liczby wyraźnie pokazują, na co faktycznie idą pieniądze.
Źródło każdej liczby w tej sekcji: raport wyszukiwanych haseł Shopping (Google Ads), jedno średniej wielkości czeskie konto sklepu internetowego, ~22,6 mln wierszy, dane wyciągnięte w kwietniu 2026. Kwoty przeliczone z CZK po kursie ~25 CZK/EUR.
Krok 1 · Wyciągnij surowy raport i zmierz stos
Wyeksportuj raport wyszukiwanych haseł Shopping przez Google Ads API (search_term_view) do dowolnego systemu obsługującego GROUP BY, na przykład SQLite albo BigQuery. Zanim cokolwiek złączysz albo odfiltrujesz, puść zwykłe COUNT(*) i parę SUM-ów. Musisz poczuć, jak duży i jak zaszumiony jest surowy stos, bo ten jeden fakt resetuje każde oczekiwanie, które przyjdzie potem:
Surowy stos, jeden COUNT i trzy SUM-y
- Wiersze raportu (zapytanie × grupa produktów) 22 640 716
- Unikalne wyszukiwane hasła 5 370 131
- Grupy produktów, pod którymi je wyświetlono 10 393
- Wydatki / przychód (mieszany ROAS 6,8×) 103 tys. € / 697 tys. €
22,6 miliona wierszy, 5,4 miliona unikalnych zapytań. Tego nikt nie czyta. Te dwie liczby mają jedno zadanie: pokazać, że ręczna analiza każdego wiersza nie wchodzi w grę. Jedynym wyjściem jest zagregowanie całego stosu według wymiaru, który płaci rachunki.
Krok 2 · Wyrzuć 96% zanim cokolwiek przeanalizujesz
Policz wiersze z zerem kliknięć, potem je odfiltruj. Raport wyszukiwanych haseł Shopping loguje każde zapytanie, na które twoja reklama się pokazała. W większość z tych zapytań nikt nigdy nie kliknął. Wiersze z samymi wyświetleniami nie mogą cię nic kosztować i nie mogą skonwertować. To szum, przez który tabela wygląda przerażająco.
WHERE clicks > 0 zwija tabelę do 738 444 wierszy, rozmiaru, na którym da się realnie pracować.
Powódź wyświetleń
- Wiersze z zerem kliknięć (czyste wyświetlenia) 21 902 272 (96,7%)
- Wiersze, które w ogóle coś kosztowały 738 444 (3,3%)
96,7% przerażającej liczby nigdy nie było niczym innym niż szumem. Filtruj do klikniętych wierszy, zanim cokolwiek przeanalizujesz, a każda poniższa agregacja będzie działać na części, która faktycznie wydaje pieniądze.
Krok 3 · Zadaj jedno pytanie, które zmienia twoje spojrzenie na konto
Podziel kliknięte wiersze na dwie kategorie: „co najmniej jedna konwersja” i „zero konwersji”. Następnie zsumuj koszt każdej kategorii. To ten podział zamienia „konto jest okej, ROAS 6,8” w „większość budżetu nie robi nic”. Policz go przed jakimkolwiek pomysłem na optymalizację:
Hamulec zerowej konwersji
- Wiersze raportu, które skonwertowały zero razy 99,75%
- Udział całkowitych wydatków, który zjadły te wiersze 85,5%
- Wydatki bez ani jednej konwersji za nimi 88 tys. €
- Tylko z klikniętych wierszy, udział z zerową konwersją 92,3%
85% budżetu przepłynęło przez kombinacje zapytanie × grupa produktów, które ani razu nie skonwertowały.
To nie jest błąd zaokrąglenia, który zoptymalizujesz później. To największy problem tego konta. I mogłeś to zobaczyć tylko dlatego, że zwinąłeś każde zapytanie do grupy produktów, pod którą je wyświetlono.
Krok 4 · Sprawdź, czy marnotrawstwo to sprawka kilku łotrów, czy całego tłumu
Posortuj kliknięte wiersze po koszcie, weź górny 1% i górne 10% i zmierz, jaki udział całkowitych wydatków trzymają. To decyduje o twojej taktyce. Jeśli garść haseł przepala budżet, pauzujesz je i koniec. Jeśli marnotrawstwo jest rozsmarowane cienko, pauzowanie haseł nic nie daje i potrzebujesz poprawek strukturalnych:
Gdzie naprawdę siedzą zmarnowane wydatki
- Górny 1% klikniętych wierszy po koszcie 10,5% wydatków
- Górne 10% klikniętych wierszy po koszcie 29,8% wydatków
Marnotrawstwo jest rozsmarowane cienko. Górny 1% kosztownych wierszy to ledwie jedna dziesiąta wydatków, więc pauzowanie 20 złych haseł nic nie zmienia. Zamiast gonić pojedyncze zapytania, napraw strukturę: zdecyduj, który produkt trafia do której kampanii i z jakim celem. I pamiętaj, że Google i tak nie pozwoli ci dodać wykluczenia per produkt.
Krok 5 · Dowiedz się, dlaczego długi ogon przecieka: jedno zapytanie, wiele produktów
Dla każdego wyszukiwanego hasła policz, pod iloma różnymi grupami produktów zostało wyświetlone. To wyjaśnia marnotrawstwo mechanicznie. Shopping dopasowuje zapytanie do sygnałów całego twojego feedu, nie do trafności jednego produktu. Pojedyncze zapytanie przecieka do niepowiązanych zakątków katalogu, a ty płacisz za każde pudło.
Konkretny przypadek z konta. Zapytanie „urządzenie antyszczekowe” wciąż przepalało budżet, więc puściłem na nie COUNT(DISTINCT ad_group). Zapytanie wyświetlono w 139 różnych grupach reklam i produktów. Łączny koszt wyniósł 39 €, a konwersji było praktycznie zero. Zapytanie „lego technic” wyświetlono w 300 różnych grupach reklam i produktów.
Rozpryskanie zapytania po katalogu
- Unikalne wyszukiwane hasła wyświetlone pod więcej niż jedną grupą produktów 46,7% z 5 370 131
- Najwięcej grup produktów, jakie osiągnęło jedno zapytanie 6 661
- „urządzenie antyszczekowe” → grupy / koszt / konwersje 139 / 39 € / ~0
Prawie połowa zapytań jest rozsmarowana po wielu grupach produktów, a najgorsze sięgają tysięcy. Stąd bierze się hamulec zerowej konwersji z kroku 3. I to jest dokładnie ta rzecz, którą wreszcie widzisz, gdy każde kliknięcie niesie ID swojego produktu.
Krok 6 · Przyjrzyj się najgorszym niedopasowaniom, bo są absurdalne
Wyciągnij najkosztowniejsze wiersze, które nigdy nie skonwertowały, i przeczytaj zapytanie obok grupy produktów, pod którą je wyświetlono. Liczby zagregowane pokazują skalę problemu. Te trzy wiersze pokaż szefowi:
| Wyszukiwane hasło | Wyświetlone pod grupą produktów | Kliknięcia | Koszt | Konw. |
|---|---|---|---|---|
| obroża treningowa dla psa | Torebki | 97 | 11 € | 0 |
| urządzenie antyszczekowe | Artykuły dla dzieci | 76 | 9,60 € | 0 |
| lego technic | Oświetlenie | 70 | 6,80 € | 0 |
Zapytanie „obroża treningowa dla psa” zostało wyświetlone pod grupą Torebki. Zapytanie „urządzenie antyszczekowe” zostało wyświetlone pod grupą Artykuły dla dzieci. Grupa produktów nie ma nic wspólnego z zapytaniem. Google dopasował zapytanie do zgrubnych sygnałów feedu, zebrał kliknięcie i obciążył konto. Z zapytaniem × produktem widzisz to jednym spojrzeniem; ze standardowym raportem Google nigdy. (Kategorie przetłumaczone i zanonimizowane.)
Krok 7 · Teraz wypłata: te 0,25%, które płaci za całe konto
Odwróć krok 3. Wyizoluj tylko wiersze, które skonwertowały, i zsumuj ich koszt i przychód. To jest powód, dla którego całe ćwiczenie ma znaczenie. Gdy potrafisz oddzielić zwycięzców od hamulca, chronisz zwycięzców i głodzisz resztę.
Wycinek, który zarabia na siebie
- Wiersze, które skonwertowały (udział we wszystkich) 57 209 (0,25%)
- Ile kosztowały 14,9 tys. €
- Ile zwróciły 697 tys. €
- ROAS na tym wycinku 46,8×
Ćwierć procenta wierszy działa z ROAS 46,8× i faktycznie niesie całe konto. Pozostałe 99,75% ciągnie mieszaną liczbę w dół do 6,8×. Cała robota polega na tym, żeby znaleźć te 0,25% wierszy, ochronić budżet tego segmentu i przebudować całą resztę tak, aby przestała konkurować o te same pieniądze. Nic z tego nie zadziała, dopóki każdy wiersz nie wskaże produktu, którego reklamę kliknięto. Tę informację daje tylko parametr utm_content={product_id}, który ustawiłeś na początku.
Pobierz kompletne instrukcje dla swojej AI
Cała metoda powyżej, przepisana jako brief, który wklejasz prosto do Claude’a albo innego sprawnego agenta kodującego. Ustawia szablon śledzenia, wyciąga raport zapytanie × produkt z GA4 i uruchamia agregacje na twoim koncie. Szablon i jego trzy pułapki też tam są. Zostaw e-mail, a plik jest twój.
Jeden plik, jedna lista. Piszę tylko wtedy, gdy jest co czytać.
FAQ
Czy to działa dla Performance Max?
Tak, w wyszukiwarce i Shoppingu. Kliknięcia z Display, YouTube i Gmaila niosą ID produktu, ale żadnego zapytania, więc w tych wierszach spodziewaj się pustego wymiaru zapytania.
Czy UTM zepsuje moją atrybucję w GA4?
Nie. Auto-tagowanie (gclid) nadal obsługuje źródło, medium i kampanię; ty dodajesz tylko treść reklamy. Co naprawdę by zaszkodziło, to własny parametr wewnątrz utm_campaign, więc nigdy go tam nie wkładaj.
Dlaczego tylko 78% pokrycia?
Tryb zgody, kanały PMax bez zapytań i blokery analityki zjadają resztę. 78% w zupełności wystarcza do każdego z powyższych zastosowań, bo czytasz wzorce, nie audytujesz groszy.
Czy zobaczę zapytania, na które reklama się pokazała, ale nikt nie kliknął?
Nie. Ten zbiór danych zaczyna się od kliknięcia. Analiza na poziomie wyświetleń zostaje w standardowym raporcie wyszukiwanych haseł, bez produktów.
Czy ten wzorzec działa poza Google, na przykład Bing albo Sklik?
Tak. Wzorzec przenosi się na każdą platformę z szablonem URL, makrem produktu i wymiarem analityki, który go złapie. Konkretne makra różnią się między platformami.
Ile czasu minie, zanim będę mieć użyteczne dane?
Zależy od wolumenu. Nasze konto miało roboczy raport po 7 dniach zbierania danych. Mniejsze konto powinno zbierać 30 dni.
CTA: Które z twoich produktów zarabiają na swoje kliknięcia, a które tylko wystawiają ci rachunek? Dodaj parametr dziś, a za tydzień będziesz wiedzieć. Albo podeślij mi swoje konto i przeczytamy ten raport razem.