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 sessionManualAdContent sa sessionGoogleAdsQuery. Na stvarnom je računu taj pogled otkrio da je 85 % potrošnje prolazilo kroz parove koji nikad nisu konvertirali. Onih 0,25 % parova koji jesu konvertirali radilo je uz ROAS od 46,8× i donijelo sav prihod.
Želiš samo destiliranu metodu?
Preuzmi kompletne AI upute — jedna datoteka koju zalijepiš u Claude ili bilo kojeg sposobnog coding agenta, i on izvlači izvještaj upit × proizvod s tvog računa. Ostavi e-mail i datoteka je tvoja — ili jednostavno čitaj dalje.
Jedna datoteka, jedna lista. Pišem samo kad ima što za pročitati.
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. Veza između upita i proizvoda mjesto je gdje živi prava optimizacija: ona ti govori podudaraju li se tvoji naslovi sa stvarnom potražnjom, koji proizvodi privlače bezvrijedan promet i zašto proizvod dobiva klikove, ali nikad ne konvertira.
Dvanaest godina razvoja na Google Ads API-ju 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.
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. Rupe čine sesije s odbijenom privolom, PMax površine bez ikakvog upita (Display, YouTube, Gmail) i klikovi koji nikad nisu okinuli analitiku.
- Jedan proizvod po sesiji. Sesija nosi ID onog proizvoda na koji je korisnik kliknuo, čak i ako potom pregleda još deset drugih.
Uzmi kompletne AI upute za ovu metodu
Cijela metoda, prepisana kao brief koji možeš zalijepiti ravno u Claude ili bilo kojeg sposobnog coding agenta. 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.
Jedna datoteka, jedna lista. Pišem samo kad ima što za pročitati.
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, konverzije i prihod u jednoj tablici.
Provjereno, ne teoretizirano
Primijenili smo ovu metodu na stvarnom računu češkog trgovca elektronikom koji vodi 22 uključene Shopping kampanje. Sedam dana poslije provjerio sam GA4:
GA4, 7 dana nakon postavljanja
- Redaka google/cpc prometa 9.753
- Nosi ID proizvoda (utm_content) 96 %
- Nosi korisnički upit (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:
Plan za feed piše se sam. Zadnje dvije godine gradim AI alat za obogaćivanje feedova i ako ću biti iskren, slabost cijele kategorije jest dokazivanje učinka. Ovaj izvještaj to rješava. Prepiši naslov tako da odgovara potražnji koju si upravo dokazao, pa gledaj kako se CTR i stopa konverzije mijenjaju po upitu. AI obogaćivanje feeda prestaje biti stvar povjerenja i postaje mjerljiva petlja.
2 · Tko je još na „tvojem” upitu, i s kojim proizvodom
Jedno 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. Za to koristim endpoint serp/google/organic/live/advanced na platformi DataForSEO. 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 te 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 jeftina 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 zbirne grupe s konzervativnim ciljevima. Ovaj izvještaj segmentaciju Shoppinga postavlja na dokaze umjesto na osjećaj.
4 · Zdravstveni pregled za PMax
PMax ti o pretraživanju ne govori gotovo ništa. Ovaj izvještaj najbliže je reviziji koju možeš dobiti: za svaki proizvod vidiš što PMax na search površini stvarno kupuje za tebe.
Gledaj kako prolazim jedan stvarni izvoz, korak po korak
Sve dosad odgovaralo je na pitanje zašto. Sada slijedi kako: što preuzimaš, u što gledaš i koji se stvarni broj vrati.
Podaci u ovom odjeljku dolaze s drugog računa, srednje velikog češkog webshopa u jeftinom segmentu. Ovaj webshop nije trgovac elektronikom iz prethodno prikazanog GA4 okvira. Odabrao sam upravo ovaj webshop jer je njegov katalog dovoljno širok da se svaki obrazac pokaže u punom opsegu. Povukao sam njegov sirovi Shopping izvještaj o upitima preko Google Ads API-ja 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, brojke u nastavku dovoljno jasno pokazuju kamo potrošnja zapravo odlazi.
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, primjerice 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. Ta dva broja imaju samo jednu svrhu: pokazati da ručna trijaža redak po redak ne dolazi u obzir. Jedini je put naprijed agregirati podatke po dimenziji koja plaća račune.
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 mijenja tvoj pogled na račun
Razvrstaj retke s klikovima u dvije skupine: one s barem jednom konverzijom i one bez ijedne konverzije. Zatim zbroji trošak svake skupine. Upravo ta podjela pretvara „račun je u redu, ROAS je 6,8” u „većina proračuna ne radi ništa”. Napravi taj izračun prije bilo kakve 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 najveći problem na računu. A vidio si to samo zato što si svaki upit srušio na grupu proizvoda pod kojom je posluživan.
Korak 4 · Provjeri je li za rasipanje kriva šačica negativaca ili cijela gomila
Sortiraj kliknute redove po trošku, uzmi gornjih 1 % i gornjih 10 % pa izmjeri koliki udio 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 je rasipana potrošnja zapravo koncentrirana
- Gornjih 1 % kliknutih redaka po trošku 10,5 % potrošnje
- Gornjih 10 % kliknutih redaka po trošku 29,8 % potrošnje
Rasipanje je tanko razmazano. Gornjih 1 % skupih redaka čini jedva desetinu potrošnje, pa pauziranje 20 loših pojmova ne mijenja ništa. Umjesto da juriš pojedinačne upite, popravi strukturu: odluči koji proizvod ide u koju kampanju i s kojim ciljem. 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. Upit „lego technic” bio je posluživan pod 300 različitih grupa oglasa i proizvoda.
Raspršivanje upita po katalogu
- Različitih korisničkih upita posluživanih pod više od jedne grupe proizvoda 46,7 % od 5.370.131
- 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. Odatle dolazi teret nula konverzija iz koraka 3. I upravo je to 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 pod kojom je posluživan. Agregatne brojke pokazuju razmjere problema. Ova tri retka pokaži svojem šefu:
| Korisnički upit | Posluživan pod grupom proizvoda | Klikovi | Trošak | Konv. |
|---|---|---|---|---|
| ovratnik za dresuru psa | Torbe | 97 | 11 € | 0 |
| uređaj protiv laveža | Proizvodi za bebe | 76 | 9,60 € | 0 |
| lego technic | Rasvjeta | 70 | 6,80 € | 0 |
Upit „ovratnik za dresuru psa” bio je posluživan pod grupom Torbe. Upit „uređaj protiv laveža” bio je posluživan pod Proizvodima za bebe. Grupa proizvoda nema nikakve veze s upitom. Google je upit uparivao sa š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×. Cijeli se posao svodi na to da pronađeš tih 0,25 % redaka, zaštitiš proračun tog segmenta i preustrojiš ostatak računa tako da se više ne natječe za isti novac. I ništa od toga ne funkcionira dok se u svakom retku ne navede proizvod na čiji je oglas korisnik kliknuo. Taj podatak dolazi samo iz jednog izvora: parametra utm_content={product_id} koji si postavio na početku.
Preuzmi kompletne upute za svoj AI
Cijela prethodno opisana metoda, prepisana kao brief koji možeš zalijepiti ravno u Claude ili bilo kojeg sposobnog coding agenta. 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.
Jedna datoteka, jedna lista. Pišem samo kad ima što za pročitati.
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š sadržaj oglasa. 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 svaku od opisanih primjena, 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 će trebati da dobijem upotrebljive podatke?
Ovisi o volumenu. Naš je račun imao upotrebljiv izvještaj nakon 7 dana prikupljanja. Manji bi račun trebao prikupljati 30 dana.
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.