Hloubková analýza· Shopping & PMax · 13 min čtení

Report vyhledávacích dotazů Shopping, který vám Google nedá

Reporty Shopping a PMax ukážou dotaz, ale nikdy produkt. Chybějící report dotaz × produkt si poskládejte z jednoho URL parametru a dvou GA4 dimenzí.

Ilustrace spojující hromadu vyhledávacích dotazů s jediným produktem — chybějící článek, který reporty Googlu skrývají.
Fakta jsou skutečná — obálky článků ne.

Stručně: Reporty Shopping a PMax ukážou dotaz, ale nikdy produkt. Chybějící report dotaz × produkt si poskládáte z jediného URL parametru — {lpurl}?utm_content={product_id} — a dvou GA4 dimenzí (sessionManualAdContent a sessionGoogleAdsQuery). Do týdne vám GA4 spáruje každý placený proklik s produktem, relacemi a tržbami; na živém účtu se spárovalo 78 % kliknutí. Právě v tom páru se schovávají peníze.

78 %
kliknutí spárováno dotaz × produkt
22
upravených kampaní
1
URL parametr — to je celý stack
7 dní
k ověřeným datům v GA4

Přidáte jeden URL parametr ke svým kampaním Shopping a Performance Max a do týdne vám GA4 vydá report, který Google potichu zrušil: každý placený proklik spárovaný jako dotaz × produkt — s relacemi, konverzemi a tržbami u toho. Právě v tomhle páru se schovávají peníze — které produkty tahají odpadní provoz, které titulky míjejí reálnou poptávku, které dotazy pálí rozpočet a nikdy neprodají. Celá stavba je ten jeden parametr; zbytek článku je o tom, co s tím, co se vrátí, uděláte.

Pokud provozujete kampaně Shopping nebo Performance Max, znáte report vyhledávacích dotazů. Čeho jste si možná nevšimli — protože vás na to Google nikdy neupozorní — je to, co v něm chybí: produkt.

Vidíte, že někdo hledal „aku vysavač do 200”. Vidíte prokliky a náklady. Nevidíte, který z vašich 5 000 produktů ten dotaz vyvolal, kam uživatel dorazil ani co se prodalo.

Před lety vám tohle párování AdWords API dalo. Dnes už ne. A pro e-commerce účet to není kosmetická mezera — právě v páru dotaz–produkt žije skutečná optimalizace: jestli vaše názvy odpovídají reálné poptávce, které produkty přitahují odpadní provoz, proč produkt dostává prokliky, ale nikdy nekonvertuje.

Než se zeptáte: ne, žádné nastavení pro tohle neexistuje. Žádný report, žádné API pole, žádný skript, který by to vrátil ze strany Googlu. Musíte si to poskládat sami — a to skládání je až trapně jednoduché.

Řešení: jeden parametr, dvě GA4 dimenze

Přidejte tracking šablonu

Na kampaně Shopping a PMax: {lpurl}?utm_content={product_id}. ValueTrack proměnná {product_id} posílá s každým proklikem ID produktu z Merchant Center.

GA4 produkt uloží

UTM dopadne do dimenze Manuální obsah inzerce relace (sessionManualAdContent).

GA4 už dotaz zná

Auto-tagging (gclid) ve stejné relaci doplní sessionGoogleAdsQuery.

Spojte obě dimenze

Z každého placeného prokliku se stane pár dotaz × produkt — s relacemi, konverzním poměrem a tržbami.

Auto-tagging a manuální UTM si nelezou do zelí: gclid se dál stará o zdroj, médium a kampaň; vaše UTM nese jen ID produktu.

Vězte, co dostáváte (a co ne)

  • Jen proklikané dotazy. Tahle datová sada začíná u prokliku. Dotazy, kde se vaše reklama zobrazila, ale nikdo neklikl, se do GA4 nikdy nedostanou — analýza na úrovni zobrazení zůstává ve standardním reportu Googlu (bez produktů).
  • ~20 % kliknutí se nespáruje: relace s odmítnutým souhlasem, PMax plochy bez jakéhokoli dotazu (Display, YouTube, Gmail), prokliky, kde se analytika vůbec nespustila.
  • Vázáno na relaci. Jedna relace = jedno ID produktu — to proklikané, i když si pak uživatel projde dalších deset.

Jak report z GA4 vytáhnout

V UI: Prozkoumat → volná forma. Dimenze: Manuální obsah inzerce relace + Vyhledávací dotaz Google Ads relace. Metriky: relace, konverze, tržby z nákupu. Filtr: zdroj/médium relace = google / cpc.

Přes Data API — pro cokoli vážnějšího; tohle krmí dashboard nebo join v 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"),  # ID produktu
        Dimension(name="sessionGoogleAdsQuery"),    # vyhledávací dotaz
    ],
    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"),
    )),
)

Spojte sessionManualAdContent se svým produktovým feedem (id → název, cena, kategorie) a report je kompletní: dotaz × produkt × název × ekonomika.

Ověřeno, ne vyteoretizováno

Nasadili jsme to na živém účtu — český prodejce elektroniky s 22 zapnutými Shopping kampaněmi — a o sedm dní později jsme zkontrolovali GA4:

GA4, 7 dní po nasazení

  • Řádků provozu google/cpc 9 753
  • Neslo ID produktu (utm_content) 96 %
  • Neslo vyhledávací dotaz (sessionGoogleAdsQuery) 81 %
  • Neslo obojí — funkční report dotaz × produkt 78 %

A teď ta zábava: co vám páry prozradí

1 · Mezera v názvu

Postavte dotazy vedle názvu a popisu, který vyvolaly. Nesoulad bije do očí:

What people actually search
aku vysavač na zvířecí chlupyvysavač na psí chlupy alergiena chlupy tichý vysavačnejlepší vysavač na zvířecí srst 2026
What the title says
Vysavač X300 Turbo 2000W — EAN 8595…
Popis: „Kvalitní vysavač s moderním designem a bohatým příslušenstvím."
The gap: Název prodává wattáž, kterou nikdo nehledá, a míjí use case se zvířecími chlupy, který hledá každý. (Ilustrativní příklad.)

Roadmapa feedu se napíše sama. A právě tady přestává být AI obohacování feedu skokem do tmy a stává se z něj měřitelná smyčka: přepište název kolem poptávky, kterou jste právě prokázali, a sledujte, jak se hýbe CTR a konverzní poměr na dotaz.

2 · Kdo další je na „vašem” dotazu — a s jakým produktem

Jedna věc, kterou nemůžete: přidávat vylučující klíčová slova na úrovni produktu. Google vám v Shoppingu ani PMaxu takovou páku nedá. Takže když pár dotaz × produkt podává slabý výkon, otázka nezní „jak ho vyloučím” — ale „proč podává slabý výkon”.

Vezměte ten dotaz a oscrapujte si k němu živou stránku s výsledky. Konkrétně: DataForSEO, endpoint serp/google/organic/live/advanced — jeden POST s textem dotazu a location_code vašeho trhu a dostanete zpět celou výsledkovou stránku jako strukturovaný JSON: placené reklamy, Shopping bloky se jmény prodejců a cenami, organika pod nimi. Při ~$0.0035 za dotaz vyjde kontrola 200 dotazů zhruba na $0.70.

Typický nález: váš středně drahý spacák sbírá prokliky na generický dotaz — a tentýž dotaz ukazuje tři levné značky ve stejné kategorii za polovinu vaší ceny. Váš produkt není špatný; je přestřelen na ceně v té konkrétní aukci.

Teď máte reálné možnosti: přecenit; protlačit do názvu odlišovač („péřová výplň, komfort −15 °C”); přesunout produkt do kampaně s biddingem, který sedí jeho marži; nebo dotaz přijmout jako horní část trychtýře a posuzovat ho podle asistovaných metrik místo last clicku.

3 · Rozhodnutí o struktuře a biddingu

Produkty přitahující dotazy s vysokým záměrem si zaslouží vlastní asset groups a rozpočty. Produkty sbírající jen generický provoz patří do sběrných skupin s konzervativními cíli. Tenhle report je důkazní základna pro segmentaci Shoppingu — ne pocit od břicha.

4 · Zdravotní prohlídka PMaxu

PMax vám o vyhledávání řekne skoro nic. Tenhle report je nejblíž auditu toho, co pro vás PMax na vyhledávací ploše skutečně nakupuje — po produktech.

Projdu s vámi jeden reálný export, krok po kroku

Všechno výše je proč. Tady je jak to doopravdy vypadá — každý krok, co stáhnete, na co koukáte a jaké reálné číslo se vrátí.

Data jsou z druhého účtu: jiný středně velký český e-shop (ne ten elektro prodejce z GA4 boxu výše — beru ho proto, že jeho katalog je dost široký, aby se každý vzorec ukázal v plném měřítku). Jeho surový report vyhledávacích dotazů ze Shoppingu jsem stáhl přes Google Ads API do lokální SQLite tabulky a pustil na něj agregace níže. Jedna výhrada hned na začátku: tenhle surový report vám dá reklamní / produktovou skupinu, pod kterou se dotaz zobrazil — ne konkrétní produkt. Přesně tuhle mezeru zavírá ten UTM trik — ale i na úrovni produktové skupiny jsou mezivýstupy dost hlasité na to, aby to dávalo smysl.

Zdroj všech čísel v této sekci: report vyhledávacích dotazů Shopping (Google Ads), jeden středně velký český e-shop, ~22,6 mil. řádků, data stažena duben 2026.

Krok 1 · Stáhněte surový report a změřte tu hromadu

Co uděláte: vyexportujete report vyhledávacích dotazů Shopping přes Google Ads API (search_term_view) do lokální tabulky — SQLite, BigQuery, cokoli, na čem spustíte GROUP BY. Proč zrovna tohle první: než cokoli spojíte, musíte vycítit, jak velká a jak zašuměná ta surová hromada je. Tahle jedna věc resetuje všechna další očekávání.

Pustíte prostý COUNT(*) a pár SUMů a přistane tohle:

Surová hromada — jeden COUNT, tři SUMy

  • Řádky reportu (dotaz × produktová skupina) 22 640 716
  • Unikátní vyhledávací dotazy 5 370 131
  • Produktové skupiny, pod kterými se zobrazily 10 393
  • Náklad / tržby (smíšený ROAS 6,8×) 2,57 mil. / 17,4 mil. Kč

Co máte: 22,6 milionu řádků, 5,4 milionu unikátních dotazů. To nikdo nepřečte. Jediný úkol toho čísla je říct vám další krok — zhroutit tu hromadu podle dimenze, která platí účty — a varovat vás, že ruční triáž po řádcích je beznadějná.

Krok 2 · Zahoďte 96 % dřív, než cokoli analyzujete

Co uděláte: spočítáte řádky s nulou prokliků a vyfiltrujete je. Proč: report vyhledávacích dotazů Shopping loguje každý dotaz, na který se vaše reklama zobrazila, a na většinu z nich nikdo neklikl. Tyhle čistě zobrazovací řádky vás nemůžou nic stát ani nic prodat — je to šum, kvůli kterému tabulka vypadá děsivě.

Situace: 22,6 mil. řádků, nevíte, kde začít. Akce: WHERE clicks > 0. Výsledek: tabulka spadne na 738 444 řádků — zvládnutelná velikost.

Záplava zobrazení

  • Řádky s nulou prokliků (čistá zobrazení) 21 902 272 — 96,7 %
  • Řádky, které vás vůbec něco stály 738 444 — 3,3 %

Co máte: 96,7 % toho děsivého čísla nebylo nikdy nic jiného než šum. Teď pracujete s tabulkou o 738 tisících řádcích, ne o 22,6 milionu — a všechny agregace níže běží na té části, která reálně utrácí peníze.

Krok 3 · Položte tu jednu otázku, která účet překreslí

Co uděláte: na proklikaných řádcích rozdělíte náklad na „aspoň jednou konvertoval” vs. „nikdy nekonvertoval” a sečtete náklad u každé skupiny. Proč: tohle je číslo, které z „účet je v pohodě, ROAS 6,8” udělá „většina rozpočtu nedělá nic”. Je to klíčový mezivýstup — spočítejte ho dřív než jakýkoli nápad na optimalizaci.

Brzda nulových konverzí

  • Řádky reportu s nulou konverzí 99,75 %
  • Podíl celkového nákladu, který tyhle řádky snědly 85,5 %
  • Náklad bez jediné konverze za ním 2,20 mil. Kč
  • Jen z proklikaných řádků — podíl s nulou konverzí 92,3 %

Co máte: 85 % rozpočtu proteklo kombinacemi dotaz × produktová skupina, které ani jednou nekonvertovaly. To není zaokrouhlovací chyba, kterou doladíte později — to je hlavní událost. A viděli jste to jen proto, že jste dotaz zhroutili na to, proti čemu se prodával.

Krok 4 · Zjistěte, jestli je plýtvání pár padouchů, nebo celý dav

Co uděláte: seřadíte proklikané řádky podle nákladu, vezmete horní 1 % a 10 % a podíváte se, kolik celkového nákladu drží. Proč: tohle rozhodne o vaší taktice. Když rozpočet pálí hrstka dotazů, pozastavíte je a je hotovo. Když je plýtvání rozmázlé, pozastavování dotazů nemá smysl — potřebujete strukturální zásahy.

Kde proplýtvaný náklad opravdu sedí

  • Horní 1 % proklikaných řádků dle nákladu 10,5 % nákladu
  • Horní 10 % proklikaných řádků dle nákladu 29,8 % nákladu

Co máte: brzda je dlouhý ocas, ne pár padouchů — horní 1 % nákladných řádků drží sotva desetinu nákladu. Takže pozastavení 20 špatných dotazů nezmění nic. Tohle je datovým podkladem podložený důvod opravovat strukturu (který produkt sedí v které kampani na jakém cíli) místo honění jednotlivých dotazů — a připomínka, že vylučující na úrovni produktu vám Google stejně přidat nedovolí.

Krok 5 · Zjistěte, proč dlouhý ocas protéká: jeden dotaz, mnoho produktů

Co uděláte: pro každý vyhledávací dotaz spočítáte, pod kolika různými produktovými skupinami se zobrazil. Proč: vysvětluje to plýtvání mechanicky. Shopping páruje dotaz proti signálům celého vašeho feedu, ne proti relevanci jednoho produktu — takže jeden dotaz protéká do nesouvisejících koutů katalogu a vy platíte za každý mimoběh.

Situace: „obojek proti štěkání” pořád pálí rozpočet. Akce: COUNT(DISTINCT ad_group) pro ten dotaz. Výsledek: zobrazil se pod 139 různými reklamními / produktovými skupinami za 976 Kč a ~0 konverzí. „lego technic” se dotkl 300.

Rozstřik dotazu po katalogu

  • Dotazy zobrazené pod více než jednou produktovou skupinou 46,7 %
  • Nejvíc produktových skupin, kam dosáhl jeden dotaz 6 661
  • „obojek proti štěkání" → skupiny / náklad / konverze 139 / 976 Kč / ~0

Co máte: skoro polovina vašich dotazů je rozmázlá přes víc produktových skupin a ti nejhorší dosahují tisíců. To je motor brzdy nulových konverzí z Kroku 3 — a přesně to, co konečně uvidíte, jakmile každý proklik nese ID svého produktu.

Krok 6 · Prohlédněte si ty nejhorší nesoulady — jsou absurdní

Co uděláte: vytáhnete nejnákladnější řádky, které nikdy nekonvertovaly, a přečtete dotaz vedle produktové skupiny, proti které se prodával. Proč: agregátní čísla přesvědčí váš spreadsheet; tyhle tři řádky přesvědčí vašeho šéfa. Jsou lidsky čitelnou tváří Kroku 5.

Nejnákladnější páry dotaz × produktová skupina s nulou konverzí (anonymizováno; ilustrativní vzhledem k reálným řádkům).
Vyhledávací dotazZobrazeno pod produktovou skupinouProklikyNákladKonv.
výcvikový obojek pro psaKabelky97270 Kč0
obojek proti štěkáníKojenecké potřeby76239 Kč0
lego technicSvítidla70169 Kč0

Dotaz na výcvikový obojek pro psa zaplacený pod skupinou Kabelky. Obojek proti štěkání prodávaný proti Kojeneckým potřebám. Produktová skupina nemá s dotazem nic společného — Google spároval na hrubé signály feedu, sebral proklik a naúčtoval vám. S dotaz × produkt to vidíte na jeden pohled; ve standardním reportu Googlu nikdy. (Ilustrativní příklad — kategorie anonymizované.)

Krok 7 · A teď výplata: 0,25 %, které platí celý účet

Co uděláte: obrátíte Krok 3 — izolujete jen řádky, které konvertovaly, a sečtete jejich náklad a tržby. Proč: tohle je důvod, proč celé cvičení dává smysl. Jakmile oddělíte vítěze od brzdy, vítěze chráníte a zbytek vyhladovíte.

Výseč, která si zaslouží své místo

  • Řádky, které konvertovaly (podíl ze všech) 57 209 — 0,25 %
  • Kolik stály 372 tis. Kč
  • Kolik vrátily 17,4 mil. Kč
  • ROAS té výseče 46,8×

Co máte: čtvrt procenta řádků běží na 46,8× ROAS a fakticky nese celý účet; zbylých 99,75 % stahuje smíšené číslo dolů na 6,8×. Najít tu výseč, chránit její rozpočet a všechno ostatní od ní strukturně odsunout — to je celá ta práce. A nic z toho nejde, dokud každý řádek nenese produkt, proti kterému se prodával. Přesně to vám kupuje ten jednoparametrový UTM ze začátku článku.

The part you can steal

Šablona + tři pasti

{lpurl}?utm_content={product_id}
  1. Nedávejte custom parametr do utm_campaign. Google Ads hodnoty custom parametrů sanitizuje — názvy kampaní se přepíšou a historická kontinuita v GA4 se rozbije. Posílejte jen utm_content; zbytek zařídí auto-tagging.
  2. Aplikujte jen na ZAPNUTÉ kampaně Shopping + PMax. Search to nepotřebuje; pozastavené kampaně vám jen zaplevelí historii změn.
  3. API zádrhel: nasazujete to programaticky? Nedávné verze Google Ads API vyhodily client.get_type(“FieldMask”) — importujte místo toho field_mask_pb2.FieldMask.

FAQ

Funguje to pro Performance Max?

Ano, pro vyhledávací/shopping plochu. Prokliky z Display, YouTube a Gmailu nesou ID produktu, ale žádný dotaz — u těch řádků čekejte prázdnou dimenzi dotazu.

Rozbije mi UTM atribuci v GA4?

Ne. Auto-tagging (gclid) se dál stará o zdroj/médium/kampaň; vy přidáváte jen obsah inzerce. Co by věci rozbilo, je custom parametr uvnitř utm_campaign — to nedělejte.

Proč jen 78% pokrytí?

Zbytek snědí consent mode, PMax plochy bez dotazu a blokátory analytiky. 78 % bohatě stačí na každý use case výše — čtete vzorce, neauditujete halíře.

Uvidím dotazy, na které se reklama zobrazila, ale nikdo neklikl?

Ne. Tahle datová sada začíná u prokliku. Analýza na úrovni zobrazení zůstává ve standardním reportu vyhledávacích dotazů — bez produktů.

Funguje ten vzorec i mimo Google — Bing, Sklik?

Ano, přenáší se: na jakoukoli platformu s URL šablonou, produktovým makrem a analytickou dimenzí, která ho zachytí. Konkrétní makra se liší podle platformy.

Za jak dlouho budu mít použitelná data?

Záleží na objemu. Náš účet měl použitelný report za 7 dní; menší účty by měly sbírat 30.

Oč tu celou dobu jde

Chcete tuhle úroveň přehledu ve svém účtu?

Jeden e-mail. Upřímně vám řeknu, jestli se to pro vaše nastavení vyplatí.

Ozvěte se →