Dubinska analiza · 13 min čitanja

Izvještaj o korisničkim upitima za Shopping koji ti Google neće dati

Izvještaji za Shopping i PMax pokazuju upit, ali nikad proizvod. Rekonstruiraj nestali izvještaj upit × proizvod uz jedan URL parametar i dvije GA4 dimenzije.

Ilustracija koja uparuje hrpu korisničkih upita s jednim proizvodom, kariku koja nedostaje i koju Googleovi izvještaji skrivaju.
Ozbiljne činjenice su stvarne — naslovnice članaka nisu.

Ukratko: Izvještaji za Shopping i PMax pokazuju upit, ali skrivaju proizvod. Dodaj jedan URL parametar, {lpurl}?utm_content={product_id}, i unutar tjedna GA4 ti vraća umirovljeni izvještaj upit × proizvod spajanjem dimenzije sessionManualAdContent sa sessionGoogleAdsQuery. Na stvarnom je računu taj pogled otkrio da 85 % potrošnje prolazi kroz parove koji nikad nisu konvertirali, dok je djelić od 0,25 % nosio cijeli račun uz ROAS od 46,8×.

Klijent mi je jednom postavio pitanje koje bi trebalo imati odgovor na jedan klik. Netko je pretražio “bežični usisavač do 200”, kliknuo na Shopping oglas i račun je to platio. Na koji je od 5.000 proizvoda u feedu taj klik sletio? Otvorio sam izvještaj o upitima, zatim izvještaj o proizvodima, i nije ih bilo moguće povezati. Nije ni danas. Google ti pokaže upit i pokaže ti proizvod, ali nikad zajedno.

Prije mnogo godina stari AdWords API davao ti je upravo ovo uparivanje. Onda je tiho nestalo i nijedna postavka, nijedan izvještaj, nijedno API polje ne vraća ga natrag. Za webshop ta rupa nije kozmetička. Odnos upita i proizvoda mjesto je gdje živi prava optimizacija. Podudaraju li se tvoji naslovi sa stvarnom potražnjom. Koji proizvodi privlače bezvrijedan promet. Zašto proizvod dobiva klikove, ali nikad ne konvertira.

Dvanaest godina pisanja koda uz Google Ads API naučilo me da se izvještaj koji Google umirovi više ne vraća. Zato sam ga rekonstruirao sam, a rekonstrukcija je gotovo neugodno jednostavna. Jedan URL parametar. Unutar tjedna GA4 ti vraća svaki plaćeni klik uparen kao upit × proizvod, s pridruženim sesijama, konverzijama i prihodom. Postavljanje traje nekoliko minuta; ostatak ovog članka govori što ćeš s onim što ti se vrati.

78 %
klikova upareno upit × proizvod
22
ažuriranih kampanja
1
URL parametar, to je cijeli stack
7 dana
do provjerenih podataka u GA4

Rješenje: jedan parametar, dvije GA4 dimenzije

Dodaj predložak za praćenje

Postavi {lpurl}?utm_content={product_id} na svoje Shopping i PMax kampanje. ValueTrack varijabla {product_id} šalje ID proizvoda iz Merchant Centera sa svakim klikom.

GA4 pohranjuje proizvod

UTM stiže u dimenziju Session manual ad content (sessionManualAdContent).

GA4 već zna upit

Auto-tagging (gclid) puni sessionGoogleAdsQuery u istoj sesiji.

Spoji dvije dimenzije

Svaki plaćeni klik postaje par upit × proizvod, s pridruženim sesijama, stopom konverzije i prihodom.

Auto-tagging i ručni UTM ne sukobljavaju se. Gclid i dalje obrađuje izvor, medij i kampanju; tvoj UTM nosi samo ID proizvoda.

Znaj što dobivaš (i što ne dobivaš)

  • Samo kliknuti upiti. Ovaj skup podataka počinje na kliku. Upiti za koje se tvoj oglas prikazao, ali nitko nije kliknuo, nikad ne stignu u GA4. Analiza na razini pojavljivanja ostaje u Googleovom standardnom izvještaju, bez proizvoda.
  • Oko 20 % klikova neće se upariti. Sesije s odbijenom privolom, PMax površine bez ikakvog upita (Display, YouTube, Gmail), klikovi koji nikad nisu okinuli analitiku.
  • Vezano uz sesiju. Jedna sesija nosi jedan ID proizvoda, onaj kliknuti, čak i ako korisnik potom pregleda još deset drugih.

Izvlačenje izvještaja iz GA4

U GA4 sučelju otvori Explore i složi free-form tablicu. Dimenzije su Session manual ad content i Session Google Ads query. Metrike su sesije, ključni događaji (nekadašnje konverzije) i prihod od kupnji. Filtriraj izvor/medij sesije na google / cpc.

Za bilo što ozbiljno htjet ćeš Data API, jer ovaj izvještaj pripada u dashboard ili BigQuery spajanje, a ne u karticu preglednika:

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"),
    )),
)

Spoji sessionManualAdContent sa svojim product feedom (id → naslov, cijena, kategorija) i izvještaj je potpun. Upit, proizvod, naslov i ekonomika u jednoj tablici.

Provjereno, ne teoretizirano

Postavili smo ovo na živi račun, češkog trgovca elektronikom s 22 uključene Shopping kampanje, i provjerio sam GA4 sedam dana kasnije:

GA4, 7 dana nakon postavljanja

  • Redaka google/cpc prometa 9.753
  • Nosi ID proizvoda (utm_content) 96 %
  • Nosi upit za pretraživanje (sessionGoogleAdsQuery) 81 %
  • Nosi oboje, funkcionalan izvještaj upit × proizvod 78 %

Sad zabavni dio: što ti govore parovi

1 · Praznina u naslovu

Stavi upite uz naslov i opis koje su pokrenuli. Nepodudarnost odmah upada u oči:

What people actually search
bežični usisavač dlaka kućnih ljubimacausisavač za pseću dlaku alergijaljubimci tihi usisavačnajbolji usisavač životinjska dlaka 2026
What the title says
Usisavač X300 Turbo 2000W, EAN 8595…
Opis: "Visokokvalitetni usisavač modernog dizajna i bogate opreme."
The gap: Naslov prodaje snagu u vatima koju nitko ne pretražuje i promašuje slučaj uporabe za dlaku ljubimaca koji svi pretražuju. (Ilustrativni primjer.)

Roadmap za feed piše se sam. Zadnje dvije godine gradim AI alat za obogaćivanje feedova i poštena slabost cijele kategorije jest dokazivanje učinka. Ovaj izvještaj to rješava. Prepiši naslov oko potražnje koju si upravo dokazao, pa gledaj kako se CTR i stopa konverzije mijenjaju po upitu. AI obogaćivanje feeda prestaje biti skok vjere i postaje mjerljiva petlja.

2 · Tko je još na “tvojem” upitu, i s kojim proizvodom

Jedno ne možeš napraviti. Ne možeš dodati negativne ključne riječi po proizvodu. Google ti ne daje takvu polugu ni u Shoppingu ni u PMaxu. Pa kad par upit × proizvod podbacuje, pitanje kako ga isključiti ne vodi nikamo. Produktivno pitanje je zašto podbacuje.

Uzmi upit i dohvati živu stranicu rezultata za njega. Ja koristim DataForSEO, endpoint serp/google/organic/live/advanced. Jedan POST s tekstom upita i location_code-om tvojeg tržišta vraća cijelu stranicu rezultata kao strukturirani JSON, plaćene oglase, shopping blokove s imenima trgovaca i cijenama, organske rezultate ispod. DataForSEO naplaćuje po SERP-u, a jedan SERP pokriva do 10 rezultata. Uz trenutnu osnovnu cijenu od oko 0,002 $ po SERP-u, provjera 200 upita zadane dubine košta oko 0,40 $, bez plaćenih naprednih parametara.

Tipičan nalaz. Tvoja vreća za spavanje srednje klase skuplja klikove na generičkom upitu, a isti upit prikazuje tri budget brenda u istoj kategoriji za pola tvoje cijene. Proizvod je u redu. Cijena gubi tu konkretnu aukciju.

Sad imaš stvarne opcije. Promijeni cijenu. Gurni diferencijator u naslov (“punjenje paperjem, komfor do −15 °C”). Premjesti proizvod u kampanju čije licitiranje odgovara stvarnosti njegove marže. Ili prihvati upit kao gornji dio lijevka i sudi mu po asistiranim metrikama umjesto po zadnjem kliku.

3 · Odluke o strukturi i licitiranju

Proizvodi koji privlače upite s visokom namjerom zaslužuju vlastite grupe elemenata i proračune. Proizvodi koji skupljaju samo generički promet pripadaju u catch-all grupe s konzervativnim ciljevima. Ovaj izvještaj daje segmentaciji Shoppinga dokaznu bazu i zamjenjuje osjećaj u trbuhu.

4 · Zdravstveni pregled za PMax

PMax ti o pretraživanju ne govori gotovo ništa. Ovaj izvještaj je najbliže što ćeš doći reviziji onoga što PMax stvarno kupuje za tebe na search površini, po proizvodu.

Gledaj kako prolazim jedan stvarni izvoz, korak po korak

Sve gore je zašto. Evo kako to stvarno izgleda, svaki korak, što preuzimaš, u što buljiš i koji se stvarni broj vrati.

Podaci su drugi račun, srednje velik češki webshop u budget segmentu. Nije to trgovac elektronikom iz GA4 okvira gore; koristim ga jer mu je katalog dovoljno širok da se svaki obrazac pokaže u punom opsegu. Povukao sam njegov sirovi Shopping izvještaj o upitima kroz Google Ads API u lokalnu SQLite tablicu i pokrenuo donje agregacije. Prvo jedna napomena. Sirovi izvještaj daje ti grupu oglasa ili grupu proizvoda pod kojom je upit posluživan, ne pojedinačni proizvod. Upravo tu rupu zatvara UTM trik. No čak i na razini grupe proizvoda, međurezultati su dovoljno glasni da poentiraju.

Izvor za svaki broj u ovom odjeljku: Google Ads izvještaj o korisničkim upitima za Shopping, jedan srednje velik češki webshop račun, ~22,6 mil. redaka, podaci povučeni u travnju 2026. Iznosi preračunati iz CZK po tečaju od ~25 CZK/EUR.

Korak 1 · Povuci sirovi izvještaj i izmjeri hrpu

Izvezi Shopping izvještaj o upitima putem Google Ads API-ja (search_term_view) u bilo što na čemu možeš pokrenuti GROUP BY, SQLite ili BigQuery. Prije nego išta spojiš ili filtriraš, pokreni običan COUNT(*) i par SUM-ova. Moraš osjetiti koliko je sirova hrpa velika i bučna, jer ta jedna činjenica resetira svako očekivanje koje slijedi:

Sirova hrpa, jedan COUNT i tri SUM-a

  • Redaka izvještaja (upit × grupa proizvoda) 22.640.716
  • Različitih korisničkih upita 5.370.131
  • Grupa proizvoda pod kojima su posluživani 10.393
  • Potrošnja / prihod (kombinirani ROAS 6,8×) 103 tis. € / 697 tis. €

22,6 milijuna redaka, 5,4 milijuna jedinstvenih upita. To nijedan čovjek ne čita. Jedini posao tog broja jest da ti kaže sljedeći potez, a to je srušiti hrpu po dimenziji koja plaća račune, i da te upozori da je ručna trijaža red po red beznadna.

Korak 2 · Baci 96 % toga prije nego išta analiziraš

Izbroji redove s nula klikova, pa ih izfiltriraj. Shopping izvještaj o upitima bilježi svaki upit za koji se tvoj oglas prikazao, a većinu tih upita nitko nikad nije kliknuo. Redovi samo s pojavljivanjima ne mogu te koštati i ne mogu konvertirati. Oni su šum zbog kojeg tablica izgleda zastrašujuće.

WHERE clicks > 0 ruši tablicu na 738.444 redaka, veličinu s kojom stvarno možeš raditi.

Poplava pojavljivanja

  • Redaka s nula klikova (čista pojavljivanja) 21.902.272 (96,7 %)
  • Redaka koji su ikad koštali novac 738.444 (3,3 %)

96,7 % zastrašujućeg broja nikad nije bilo ništa drugo nego šum. Filtriraj na kliknute redove prije nego išta analiziraš, pa se svaka donja agregacija vrti na dijelu koji stvarno troši novac.

Korak 3 · Postavi jedno pitanje koje preokreće cijeli račun

Na kliknutim redovima podijeli potrošnju na “konvertirao barem jednom” i “nikad nije konvertirao” pa zbroji trošak svake skupine. Ovo je broj koji “račun je u redu, ROAS je 6,8” pretvara u “većina proračuna ne radi ništa”. Izračunaj ga prije bilo koje ideje o optimizaciji:

Teret nula konverzija

  • Redaka izvještaja koji su konvertirali nula puta 99,75 %
  • Udio ukupne potrošnje koji su ti redovi pojeli 85,5 %
  • Potrošnja bez ijedne konverzije iza sebe 88 tis. €
  • Od samo kliknutih redaka, udio s nula konverzija 92,3 %

85 % proračuna proteklo je kroz kombinacije upit × grupa proizvoda koje nikad nisu konvertirale.

To nije pogreška zaokruživanja koju optimiziraš kasnije. To je glavni događaj. A vidio si ga samo zato što si srušio upit na ono protiv čega je prodavan.

Korak 4 · Provjeri je li rasipanje nekoliko negativaca ili cijela gomila

Sortiraj kliknute redove po trošku, uzmi gornjih 1 % i gornjih 10 % pa pogledaj koliko ukupne potrošnje drže. To odlučuje tvoju taktiku. Ako šačica pojmova spaljuje proračun, pauziraš ih i gotov si. Ako je rasipanje tanko razmazano, pauziranje pojmova je besmisleno i trebaju ti strukturni popravci:

Gdje rasipana potrošnja stvarno sjedi

  • Gornjih 1 % kliknutih redaka po trošku 10,5 % potrošnje
  • Gornjih 10 % kliknutih redaka po trošku 29,8 % potrošnje

Teret je dugorepi. Gornjih 1 % skupih redaka drži jedva desetinu potrošnje, pa pauziranje 20 loših pojmova ne mijenja ništa. Popravi strukturu, dakle koji proizvodi sjede u kojoj kampanji s kojim ciljem, umjesto da juriš pojedinačne upite. I zapamti da ti Google ionako ne dopušta dodati negativnu ključnu riječ po proizvodu.

Korak 5 · Otkrij zašto dugi rep curi: jedan upit, mnogo proizvoda

Za svaki upit izbroji pod koliko je različitih grupa proizvoda posluživan. To mehanički objašnjava rasipanje. Shopping uparuje upit sa signalima cijelog tvojeg feeda, a ne s relevantnošću jednog proizvoda. Jedan upit curi po nepovezanim kutovima tvojeg kataloga, a ti plaćaš svaki promašaj.

Konkretan slučaj s računa. Upit “uređaj protiv laveža” stalno je spaljivao proračun, pa sam za njega pokrenuo COUNT(DISTINCT ad_group). Bio je posluživan pod 139 različitih grupa oglasa i proizvoda, za 39 € i otprilike nula konverzija. “lego technic” dotaknuo je 300.

Raspršivanje upita po katalogu

  • Različitih pojmova posluživanih pod više od jedne grupe proizvoda 46,7 %
  • Najviše grupa proizvoda koje je jedan upit dosegao 6.661
  • "uređaj protiv laveža" → grupe / trošak / konverzije 139 / 39 € / ~0

Gotovo polovica upita razmazana je po više grupa proizvoda, a najgori prijestupnici dosežu tisuće. To je motor tereta nula konverzija iz koraka 3 i upravo ono što napokon možeš vidjeti kad svaki klik nosi svoj ID proizvoda.

Korak 6 · Pogledaj najgore nepodudarnosti, jer su apsurdne

Izvuci redove s najvišim troškom koji nikad nisu konvertirali i pročitaj upit uz grupu proizvoda protiv koje je prodavan. Agregatne brojke uvjeravaju tvoju tablicu. Ova tri reda uvjeravaju tvojeg šefa:

Parovi upit × grupa proizvoda s najvišim troškom i nula konverzija (prevedeno i anonimizirano; ilustrativno za stvarne redove).
Korisnički upitPosluživan pod grupom proizvodaKlikoviTrošakKonv.
ovratnik za dresuru psa Torbe9711 €0
uređaj protiv laveža Proizvodi za bebe769,60 €0
lego technic Rasvjeta706,80 €0

Upit za ovratnik za dresuru psa plaćen pod grupom Torbe. Uređaj protiv laveža prodavan protiv Proizvoda za bebe. Grupa proizvoda nema nikakve veze s upitom. Google se uparivao na širokim signalima feeda, pokupio klik i naplatio ga računu. Uz upit × proizvod ovo vidiš na prvi pogled; uz Googleov standardni izvještaj nikad nećeš. (Kategorije prevedene i anonimizirane.)

Korak 7 · Sad nagrada: 0,25 % koji plaća cijeli račun

Invertiraj korak 3. Izoliraj samo redove koji jesu konvertirali i zbroji njihov trošak i prihod. To je razlog zašto je cijela vježba bitna. Kad jednom možeš odvojiti pobjednike od tereta, štitiš pobjednike i izgladnjuješ ostatak.

Djelić koji zarađuje svoj kruh

  • Redaka koji su konvertirali (udio svih redaka) 57.209 (0,25 %)
  • Koliko su koštali 14,9 tis. €
  • Koliko su vratili 697 tis. €
  • ROAS na tom djeliću 46,8×

Četvrtina jednog posto redaka radi uz 46,8× ROAS i praktički nosi račun. Ostalih 99,75 % vuče kombiniranu brojku dolje na 6,8×. Pronaći taj djelić, zaštititi mu proračun i sve ostalo strukturirati dalje od njega, to je cijeli posao. I ništa od toga nije moguće dok svaki redak ne nosi proizvod protiv kojeg je prodavan. To ti kupuje UTM s jednim parametrom s vrha ovog članka.

Take it with you

Preuzmi kompletne upute za svoj AI

Cijela gornja metoda, prepisana kao brief koji možeš zalijepiti ravno u Claude ili bilo koji sposoban coding agent. Postavlja predložak za praćenje, izvlači izvještaj upit × proizvod iz GA4 i vrti agregacije na tvom računu. Unutra su i predložak i njegove tri zamke. Ostavi svoj e-mail i datoteka je tvoja.

One file, one list. I only write when there's something worth reading.

FAQ

Radi li ovo za Performance Max?

Da, za search i shopping površinu. Klikovi s Displaya, YouTubea i Gmaila nose ID proizvoda, ali ne i upit, pa očekuj da će ti redovi imati praznu dimenziju upita.

Hoće li UTM pokvariti moju GA4 atribuciju?

Ne. Auto-tagging (gclid) i dalje obrađuje izvor, medij i kampanju; ti samo dodaješ ad content. Stvari bi pokvario prilagođeni parametar unutar utm_campaign, pa ga tamo nikad ne stavljaj.

Zašto samo 78 % pokrivenosti?

Consent mode, PMax površine bez upita i blokatori analitike pojedu ostatak. 78 % je sasvim dovoljno za svaki gornji slučaj uporabe, jer čitaš obrasce, a ne revidiraš svaku lipu.

Mogu li vidjeti upite za koje se moj oglas prikazao, ali nitko nije kliknuo?

Ne. Ovaj skup podataka počinje na kliku. Analiza na razini pojavljivanja ostaje u standardnom izvještaju o korisničkim upitima, bez proizvoda.

Radi li obrazac izvan Googlea, recimo Bing ili Sklik?

Da. Obrazac se prenosi na svaku platformu koja ima URL predložak, makro za proizvod i analitičku dimenziju koja će ga uhvatiti. Konkretni makroi razlikuju se po platformi.

Koliko dugo dok ne dobijem upotrebljive podatke?

Ovisi o volumenu. Naš je račun imao upotrebljiv izvještaj za 7 dana; manji bi računi trebali prikupljati 30.


CTA: Koji tvoji proizvodi zarađuju svoje klikove, a koji ti samo ispostavljaju račun? Dodaj parametar danas i za tjedan dana znat ćeš. Ili mi pošalji svoj račun pa ćemo izvještaj pročitati zajedno.

O tome se zapravo radi

Želiš ovu razinu uvida u svom računu?

Jedan e-mail. Iskreno ću ti reći isplati li se to za tvoju postavu.

Javi se →