Pogłębiona analiza· Shopping & PMax · 13 min czytania

Raport wyszukiwanych haseł w Shopping, którego Google ci nie da

Raporty Shopping i PMax pokazują zapytanie, nigdy produkt. Odbuduj brakujący raport zapytanie × produkt jednym parametrem URL i dwoma wymiarami GA4.

Illustration pairing a stack of search queries with a single product, the missing link Google's reports hide.
Fakty są prawdziwe — okładki artykułów nie.

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 obnażył, że 85 % wydatków idzie przez pary z zerową konwersją, a 0,25 % wycinek niesie całe konto z ROAS 46,8×.

78 %
kliknięć dopasowanych jako zapytanie × produkt
22
zaktualizowane kampanie
1
parametr URL — to cały stack
7 dni
do zweryfikowanych danych w GA4

Dodaj jeden parametr URL do swoich kampanii Shopping i Performance Max, a w ciągu tygodnia GA4 odda ci raport, który Google po cichu wycofał: każde płatne kliknięcie sparowane jako zapytanie × produkt — z sesjami, konwersjami i przychodem w komplecie. To właśnie w tej parze ukrywają się pieniądze — które produkty ściągają śmieciowy ruch, które tytuły mijają się z realnym popytem, które zapytania przepalają budżet i nigdy nie sprzedają. Cała budowa to ten jeden parametr; reszta tego artykułu jest o tym, co robisz z tym, co wraca.

Jeśli prowadzisz kampanie Shopping albo Performance Max, znasz raport wyszukiwanych haseł. Czego możesz nie zauważyć — bo Google nigdy o tym nie wspomina — to to, czego w nim brakuje: produktu.

Widzisz, że ktoś wpisał „odkurzacz bezprzewodowy do 200”. Widzisz kliknięcia i koszt. Nie widzisz, który z twoich 5000 produktów to zapytanie wywołało, na którym wylądowało albo który sprzedało.

Lata temu AdWords API dawało ci to parowanie. Dziś już nie. A dla konta e-commerce to nie jest kosmetyczna luka — zapytanie-do-produktu to miejsce, gdzie żyje prawdziwa optymalizacja: czy twoje tytuły pasują do realnego popytu, które produkty przyciągają śmieciowy ruch, dlaczego produkt dostaje kliknięcia, ale nigdy nie konwertuje.

Zanim zapytasz: nie, nie ma na to żadnego ustawienia. Żadnego raportu, żadnego pola API, żadnego skryptu, który by to przywrócił po stronie Google. Musisz odbudować to sam — a odbudowa jest niemal żenująco prosta.

Rozwiązanie: jeden parametr, dwa wymiary GA4

Dodaj szablon śledzenia

Na kampaniach Shopping i PMax: {lpurl}?utm_content={product_id}. 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).
  • ~20 % kliknięć się nie sparuje: sesje z odrzuconą zgodą, powierzchnie PMax zupełnie bez zapytania (Display, YouTube, Gmail), kliknięcia, które nigdy nie odpaliły analityki.
  • W zakresie sesji. Jedna sesja = jedno ID produktu — to klikniętego, nawet jeśli użytkownik przejrzy potem dziesięć innych.

Wyciąganie raportu z GA4

W interfejsie: Eksploracja → format dowolny. Wymiary: Treść reklamy z ręcznego tagowania (sesja) + Zapytanie Google Ads (sesja). Dane: sesje, konwersje, przychody z zakupów. Filtr: źródło/medium sesji = google / cpc.

Przez Data API — do czegokolwiek poważnego to zasila dashboard albo złączenie w BigQuery:

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="conversions"),
        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ł × ekonomia.

Zweryfikowane, nie wymyślone

Wdrożyliśmy to na żywym koncie — czeskim sprzedawcy elektroniki z 22 włączonymi kampaniami Shopping — i sprawdziliśmy GA4 siedem dni później:

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

Postaw zapytania obok tytułu i opisu, które wywołały. Niedopasowanie wyskakuje od razu:

What people actually search
odkurzacz bezprzewodowy sierść zwierzątodkurzacz na psią sierść alergiazwierzęta odkurzacz cichynajlepszy odkurzacz sierść 2026
What the title says
Odkurzacz X300 Turbo 2000W — EAN 8595…
Opis: „Wysokiej jakości odkurzacz z nowoczesnym designem i bogatym wyposażeniem."
The gap: Tytuł sprzedaje waty, których nikt nie szuka, i mija się z przypadkiem użycia sierść-zwierząt, którego szukają wszyscy. (Przykład poglądowy.)

Roadmapa feedu pisze się sama. I tu wzbogacanie feedu przez AI przestaje być działaniem na wiarę, a staje się mierzalną pętlą: przepisz tytuł wokół popytu, który właśnie udowodniłeś, a potem patrz, jak CTR i współczynnik konwersji na zapytanie się ruszają.

2 · Kto jeszcze jest na „twoim” zapytaniu — i z jakim produktem

Jednej rzeczy nie możesz zrobić: dodać wykluczających słów kluczowych per produkt. Google nie daje ci takiej dźwigni w Shopping ani PMax. Więc kiedy para zapytanie × produkt nie dowozi, pytanie nie brzmi „jak ją wykluczyć” — tylko „dlaczego nie dowozi”.

Weź zapytanie i pobierz dla niego żywą stronę wyników. Konkretnie: DataForSEO, endpoint serp/google/organic/live/advanced — jeden POST z treścią zapytania i location_code twojego rynku, a dostajesz z powrotem całą stronę wyników jako ustrukturyzowany JSON: płatne reklamy, bloki shopping z nazwami sprzedawców i cenami, organiczne pod spodem. Przy ~0,0035 $ za zapytanie sprawdzenie 200 zapytań kosztuje około 0,70 $.

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 w tej samej kategorii za połowę twojej ceny. Twój produkt nie jest zły; jest przebity ceną w tej konkretnej aukcji.

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 marży; albo zaakceptuj zapytanie jako górny lejek i oceniaj je po metrykach wspomaganych zamiast po ostatnim kliknięciu.

3 · Decyzje o strukturze i ustalaniu stawek

Produkty przyciągające zapytania o wysokiej intencji zasługują na własne grupy plików i budżety. Produkty zbierające tylko ogólny ruch należą do zbiorczych grup z konserwatywnymi celami. Ten raport to baza dowodowa dla segmentacji Shopping — nie przeczucie na czuja.

4 · Badanie kondycji PMax

PMax mówi ci niemal nic o wyszukiwaniu. Ten raport to najbliższe, co dostaniesz, do audytu tego, co PMax faktycznie kupuje dla ciebie na powierzchni wyszukiwania — per produkt.

Patrz, jak przechodzę przez jeden realny eksport, krok po kroku

Wszystko powyżej to dlaczego. Tu jest jak to naprawdę wygląda — każdy krok, co pobierasz, na co się gapisz i jaka realna liczba wraca.

Dane to drugie konto: inny średniej wielkości czeski e-sklep (nie sprzedawca elektroniki z ramki GA4 powyżej — biorę go, bo jego katalog jest na tyle szeroki, że każdy wzorzec pokazuje się 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: ten surowy raport daje ci grupę reklam / 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 wyniki pośrednie są na tyle głośne, by zrobić swoje.

Źródło każdej liczby w tej sekcji: raport wyszukiwanych haseł Shopping (Google Ads), jedno średniej wielkości czeskie konto e-sklepu, ~22,6 mln wierszy, dane wyciągnięte w kwietniu 2026.

Krok 1 · Wyciągnij surowy raport i zmierz stos

Co robisz: wyeksportuj raport wyszukiwanych haseł Shopping przez Google Ads API (search_term_view) do lokalnej tabeli — SQLite albo BigQuery, cokolwiek, na czym puścisz GROUP BY. Dlaczego najpierw to: zanim cokolwiek złączysz, musisz poczuć, jak duży i jak zaszumiony jest surowy stos. Ten jeden fakt resetuje każde oczekiwanie, które przyjdzie potem.

Puść zwykłe COUNT(*) i parę SUM-ów, a oto co ląduje:

Surowy stos — jeden COUNT, 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×) 2,57 mln / 17,4 mln CZK

Co masz: 22,6 miliona wierszy, 5,4 miliona unikalnych zapytań. Tego nikt nie czyta. Jedynym zadaniem tej liczby jest powiedzieć ci następny ruch — zwiń ten stos po wymiarze, który płaci rachunki — i ostrzec cię, że jakakolwiek ręczna selekcja wiersz po wierszu jest beznadziejna.

Krok 2 · Wyrzuć 96 % zanim cokolwiek przeanalizujesz

Co robisz: policz wiersze z zerową liczbą kliknięć, potem je odfiltruj. Dlaczego: raport wyszukiwanych haseł Shopping loguje każde zapytanie, na które twoja reklama się pokazała, a w większość z nich nikt nie kliknął. Te wiersze tylko z wyświetleniami nie mogą cię nic kosztować ani nic skonwertować — to szum, który sprawia, że tabela wygląda przerażająco.

Sytuacja: 22,6 mln wierszy, nie wiesz, od czego zacząć. Akcja: WHERE clicks > 0. Wynik: tabela zwija się do 738 444 wierszy — rozmiar do ogarnięcia.

Powódź wyświetleń

  • Wiersze z zerem kliknięć (czyste wyświetlenia) 21 902 272 — 96,7 %
  • Wiersze, które kiedykolwiek kosztowały koronę 738 444 — 3,3 %

Co masz: 96,7 % przerażającej liczby nigdy nie było niczym innym niż szumem. Pracujesz teraz na tabeli 738 tys. wierszy, nie 22,6 mln — a każda poniższa agregacja działa na tej części, która faktycznie wydaje pieniądze.

Krok 3 · Zadaj jedno pytanie, które przemalowuje konto

Co robisz: na klikniętych wierszach rozdziel wydatki na „skonwertowało co najmniej raz” vs „nigdy nie skonwertowało” i zsumuj koszt każdej grupy. Dlaczego: to jest liczba, która zamienia „konto jest okej, ROAS to 6,8” w „większość budżetu nie robi nic”. To kluczowy wynik pośredni — 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 2,20 mln CZK (~88 tys. €)
  • Tylko z klikniętych wierszy — udział z zerową konwersją 92,3 %

Co masz: 85 % budżetu przepłynęło przez kombinacje zapytanie × grupa-produktów, które ani razu nie skonwertowały. To nie błąd zaokrąglenia, który optymalizujesz później — to główne wydarzenie. I mogłeś to zobaczyć tylko dlatego, że zwinąłeś zapytanie do tego, przeciwko czemu zostało sprzedane.

Krok 4 · Sprawdź, czy marnotrawstwo to kilku łotrów, czy cały tłum

Co robisz: posortuj kliknięte wiersze po koszcie, weź górny 1 % i górne 10 % i zobacz, ile całkowitych wydatków trzymają. Dlaczego: 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 da — 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

Co masz: hamulec to długi ogon, nie kilku łotrów — górny 1 % kosztownych wierszy trzyma ledwie jedną dziesiątą wydatków. Więc pauzowanie 20 złych haseł nic nie zmieni. To poparty danymi powód, by naprawiać strukturę (który produkt siedzi w której kampanii z jakim celem) zamiast gonić pojedyncze zapytania — i przypomnienie, ż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

Co robisz: dla każdego wyszukiwanego hasła policz, pod iloma różnymi grupami produktów zostało wyświetlone. Dlaczego: to wyjaśnia marnotrawstwo mechanicznie. Shopping dopasowuje zapytanie do sygnałów całego twojego feedu, nie do trafności jednego produktu — więc pojedyncze zapytanie przecieka do niepowiązanych zakątków twojego katalogu, a ty płacisz za każde pudło.

Sytuacja: „urządzenie antyszczekowe” wciąż przepala budżet. Akcja: COUNT(DISTINCT ad_group) dla tego hasła. Wynik: zostało wyświetlone pod 139 różnymi grupami reklam / produktów za 976 CZK i ~0 konwersji. „lego technic” dotknęło 300.

Rozpryskanie zapytania po katalogu

  • Hasła wyświetlone pod więcej niż jedną grupą produktów 46,7 %
  • Najwięcej grup produktów, jakie osiągnęło jedno zapytanie 6 661
  • „urządzenie antyszczekowe" → grupy / koszt / konwersje 139 / 976 CZK / ~0

Co masz: prawie połowa twoich zapytań jest rozsmarowana po wielu grupach produktów, a najgorsze sięgają tysięcy. To silnik hamulca zerowej konwersji z Kroku 3 — i dokładnie ta rzecz, którą wreszcie możesz zobaczyć, gdy każde kliknięcie niesie ID swojego produktu.

Krok 6 · Przyjrzyj się najgorszym niedopasowaniom — są absurdalne

Co robisz: wyciągnij najkosztowniejsze wiersze, które nigdy nie skonwertowały, i przeczytaj zapytanie obok grupy produktów, przeciwko której zostało sprzedane. Dlaczego: liczby zagregowane przekonują twój arkusz; te trzy wiersze przekonują twojego szefa. To czytelna dla człowieka twarz Kroku 5.

Najkosztowniejsze pary zapytanie × grupa-produktów z zerową konwersją (przetłumaczone i zanonimizowane; poglądowe dla realnych wierszy).
Wyszukiwane hasłoWyświetlone pod grupą produktówKliknięciaKosztKonw.
obroża treningowa dla psaTorebki97270 CZK0
urządzenie antyszczekoweArtykuły dla dzieci76239 CZK0
lego technicOświetlenie70169 CZK0

Zapytanie o obrożę treningową dla psa opłacone pod grupą Torebki. Urządzenie antyszczekowe sprzedane przeciwko Artykuły dla dzieci. Grupa produktów nie ma nic wspólnego z zapytaniem — Google dopasował na grubych sygnałach feedu, zebrał kliknięcie i naliczył ci je. Z zapytaniem × produkt widzisz to jednym spojrzeniem; ze standardowym raportem Google nigdy nie zobaczysz. (Przykład poglądowy — kategorie przetłumaczone i zanonimizowane.)

Krok 7 · Teraz wypłata: te 0,25 %, które płaci za całe konto

Co robisz: odwróć Krok 3 — wyizoluj tylko wiersze, które skonwertowały, i zsumuj ich koszt i przychód. Dlaczego: 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 swoje miejsce

  • Wiersze, które skonwertowały (udział we wszystkich) 57 209 — 0,25 %
  • Ile kosztowały 372 tys. CZK (~14,9 tys. €)
  • Ile zwróciły 17,4 mln CZK (~697 tys. €)
  • ROAS na tym wycinku 46,8×

Co masz: ćwierć procenta wierszy działa z ROAS 46,8× i faktycznie niesie konto; pozostałe 99,75 % ciągnie mieszaną liczbę w dół do 6,8×. Znalezienie tego wycinka, ochrona jego budżetu i ustrukturyzowanie całej reszty z dala od niego to cała robota — i nic z tego nie jest możliwe, dopóki każdy wiersz nie niesie produktu, przeciwko któremu został sprzedany. To właśnie kupuje ci jednoparametrowy UTM z początku tego artykułu.

The part you can steal

Szablon + trzy pułapki

{lpurl}?utm_content={product_id}
  1. Nie wkładaj własnego parametru do utm_campaign. Google Ads sanityzuje wartości własnych parametrów — twoje nazwy kampanii zostaną przepisane, a historyczna ciągłość w GA4 się rozpada. Wysyłaj tylko utm_content; auto-tagowanie ogarnia resztę.
  2. Zastosuj tylko do WŁĄCZONYCH kampanii Shopping + PMax. Wyszukiwanie tego nie potrzebuje; spauzowane kampanie tylko zaśmiecają twoją historię zmian.
  3. Pułapka API: wdrażasz programistycznie? Ostatnie wersje Google Ads API porzuciły client.get_type(“FieldMask”) — zaimportuj zamiast tego field_mask_pb2.FieldMask.

FAQ

Czy to działa dla Performance Max?

Tak, dla powierzchni search/shopping. Kliknięcia z Display, YouTube i Gmaila niosą ID produktu, ale żadnego zapytania — 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/kampanię; ty dodajesz tylko treść reklamy. Co naprawdę by zaszkodziło, to własny parametr wewnątrz utm_campaign — tego nie rób.

Dlaczego tylko 78 % pokrycia?

Tryb zgody, bezzapytaniowe powierzchnie PMax i blokery analityki zjadają resztę. 78 % w zupełności wystarcza do każdego z powyższych zastosowań — 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 — Bing, Sklik?

Tak, przenosi się: każda platforma z szablonem URL, makrem produktu i wymiarem analityki, który go złapie. Konkretne makra różnią się między platformami.

Ile czasu zanim będę miał użyteczne dane?

Zależy od wolumenu. Nasze konto miało roboczy raport w 7 dni; mniejsze konta powinny zbierać 30.

O to w tym wszystkim chodzi

Chcesz takiego poziomu wglądu na swoim koncie?

Jeden e-mail. Szczerze ci powiem, czy w twojej konfiguracji to się opłaca.

Napisz do mnie →