Djupdykning · 13 min läsning

Shopping-sökfrågerapporten Google inte ger dig

Shopping- och PMax-rapporter visar sökfrågan men aldrig produkten. Återskapa den saknade rapporten med en URL-parameter och två GA4-dimensioner.

Illustration av en stapel sökfrågor parade med en enda produkt. Googles egna rapporter visar aldrig den kopplingen.
De seriösa fakta är på riktigt — artikelomslagen är det inte.

Kort sagt: Shopping- och PMax-rapporter visar sökfrågan men döljer produkten. Lägg till en URL-parameter, {lpurl}?utm_content={product_id}, och inom en vecka ger GA4 dig den nedlagda sökfråga × produkt- rapporten genom att koppla ihop sessionManualAdContent med sessionGoogleAdsQuery. På ett verkligt konto visade den vyn att 85 % av utgifterna gick till kombinationer som aldrig konverterade. De 0,25 % av paren som faktiskt konverterade låg på 46,8× ROAS och drog in hela intäkten.

Gratis nedladdning

Vill du bara ha den destillerade metoden?

Ladda ner de kompletta AI-instruktionerna — en fil du klistrar in i Claude eller någon annan kapabel kodagent, och den drar ut sökfråga × produkt-rapporten ur ditt eget konto. Lämna din e-post så är filen din — eller läs bara vidare.

En fil, en lista. Jag skriver bara när det finns något värt att läsa.

En kund ställde mig en gång en fråga som borde gå att besvara med ett klick. Någon sökte på ”sladdlös dammsugare under 200”, klickade på Shopping-annonsen, och kontot betalade för det. Vilken av de 5 000 produkterna i feeden landade det klicket på? Jag öppnade sökfrågerapporten, sedan produktrapporten, och det fanns inget sätt att koppla ihop dem. Det går fortfarande inte. Google visar dig sökfrågan, Google visar dig produkten, men aldrig båda samtidigt.

För flera år sedan gav det gamla AdWords-API:et dig exakt den här kopplingen. Sedan försvann den i tysthet, och ingen inställning, ingen rapport och inget API-fält kan återskapa den. För en webbutik är den luckan inte kosmetisk. Kopplingen mellan sökfråga och produkt är där den verkliga optimeringen sitter: den visar om dina titlar matchar verklig efterfrågan, vilka produkter som drar skräptrafik och varför en produkt får klick men aldrig konverterar.

Tolv år av arbete med Google Ads API har lärt mig att när Google lägger ner en rapport kommer den inte tillbaka. Därför återskapade jag rapporten själv. Lösningen är nästan pinsamt enkel: en URL-parameter. Inom en vecka ger GA4 dig ett sökfråga × produkt-par för varje betalt klick, med sessioner, konverteringar och intäkt. Det tar några minuter att sätta upp; resten av den här artikeln handlar om vad du gör med resultatet.

78 %
av klicken kunde kopplas till sökfråga × produkt
22
kampanjer uppdaterade
1
URL-parameter, det är hela stacken
7 dagar
till verifierad data i GA4

Fixen: en parameter, två GA4-dimensioner

Lägg till en spårningsmall

Sätt {lpurl}?utm_content={product_id} på dina Shopping- och PMax-kampanjer. ValueTrack-variabeln {product_id} skickar Merchant Center-produkt-ID:t med varje klick.

GA4 lagrar produkten

UTM:en landar i dimensionen Session manual ad content (sessionManualAdContent).

GA4 känner redan sökfrågan

Auto-tagging (gclid) fyller i sessionGoogleAdsQuery i samma session.

Koppla ihop de två dimensionerna

Varje betalt klick kopplas till ett sökfråga × produkt-par, med sessioner, konverteringsgrad och intäkt.

Auto-tagging och den manuella UTM:en krockar inte med varandra. Parametern gclid fortsätter att hantera källa, medium och kampanj; din UTM innehåller bara produkt-ID:t.

Vad du får (och vad du inte får)

  • Endast sökfrågor som ledde till klick. Det här datasetet börjar vid klicket. Sökfrågor där din annons visades men ingen klickade når aldrig GA4. Analys på exponeringsnivå måste fortfarande göras i den vanliga sökfrågerapporten, utan produktdata.
  • Ungefär 20 % av klicken paras inte ihop. Bortfallet består av sessioner utan samtycke, PMax-ytor helt utan sökfråga (Display, YouTube, Gmail) och klick där analystaggen aldrig aktiverades.
  • En produkt per session. Sessionen innehåller produkt-ID:t för den produkt som användaren klickade på, även om hen sedan bläddrar genom tio andra.
Gratis nedladdning

Hämta de kompletta AI-instruktionerna för den här metoden

Hela metoden, omskriven som en brief du kan klistra in direkt i Claude eller vilken kapabel kodagent som helst. Den sätter spårningsmallen, drar ut sökfråga × produkt-rapporten ur GA4 och kör aggregeringarna på ditt konto. Mallen och dess tre fällor finns också med. Lämna din e-post så är filen din.

En fil, en lista. Jag skriver bara när det finns något värt att läsa.

Att dra ut rapporten ur GA4

Öppna Explore i GA4-gränssnittet och bygg en tabell i fritt format. Dimensionerna är Session manual ad content och Session Google Ads query. Mätvärdena är sessioner, nyckelhändelser (tidigare konverteringar) och köpintäkt. Filtrera på session source/medium som har värdet google / cpc.

För allt seriöst vill du ha Data API:t, för den här rapporten hör hemma i en dashboard eller en BigQuery-join, inte i en webbläsarflik:

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

Koppla sessionManualAdContent till din produktfeed (id → titel, pris, kategori), så är rapporten komplett. Sökfråga, produkt, titel, konverteringar och intäkt i en och samma tabell.

Verifierat, inte teori

Vi rullade ut det här på live-kontot hos en tjeckisk elektronikåterförsäljare med 22 aktiverade Shopping-kampanjer. Sju dagar senare kollade jag GA4:

GA4, 7 dagar efter utrullning

  • Rader med google/cpc-trafik 9 753
  • Innehöll produkt-ID:t (utm_content) 96 %
  • Innehöll sökfrågan (sessionGoogleAdsQuery) 81 %
  • Innehöll båda och gav därmed en fungerande sökfråga × produkt-rapport 78 %

Nu den roliga delen: vad paren berättar för dig

1 · Titelgapet

Sätt sökfrågorna bredvid titeln och beskrivningen de utlöste. Felmatchningen sticker ut direkt:

What people actually search
sladdlös dammsugare djurhårdammsugare för hundhår allergihusdjur dammsugare tystbästa dammsugare djurhår 2026
What the title says
Dammsugare X300 Turbo 2 000 W – EAN 8595…
Beskrivning: ”Högkvalitativ dammsugare med modern design och ett stort utbud av tillbehör.”
The gap: Titeln säljer watt ingen söker på och missar djurhår, som alla söker på. (Illustrativt exempel.)

Planen för produktfeeden skriver sig själv. Jag har ägnat de senaste två åren åt att bygga ett AI-verktyg som berikar produktfeeds. Om jag ska vara ärlig är svagheten i hela kategorin att effekten är svår att bevisa. Den här rapporten löser det. Skriv om titeln så att den matchar efterfrågan du just har belagt, och följ sedan hur CTR och konverteringsgrad förändras per sökfråga. AI-baserad berikning av produktfeeds slutar vara något du måste lita på utan belägg och blir en mätbar process.

2 · Vem mer syns på ”din” sökfråga, och med vilken produkt

En sak du inte kan göra är att lägga till negativa sökord per produkt. Google ger dig ingen sådan möjlighet i Shopping eller PMax. Så när ett sökfråga × produkt-par underpresterar leder frågan om hur du exkluderar det ingenvart. Den produktiva frågan är varför det underpresterar.

Ta sökfrågan och skrapa resultatsidan den ger just nu. Jag använder endpointen serp/google/organic/live/advanced hos DataForSEO. En POST med sökfrågetexten och location_code för din marknad returnerar hela resultatsidan som strukturerad JSON: betalda annonser, shopping-block med handlarnamn och priser samt organiska resultat under. DataForSEO fakturerar per SERP, och en SERP täcker upp till 10 resultat. Med det aktuella baspriset på ungefär 0,002 $ per SERP kostar det runt 0,40 $ att kolla 200 sökfrågor med standarddjup, exklusive eventuella avgifter för avancerade parametrar.

Ett typiskt fynd: din sovsäck i mellanklassen får klick från en generell sökfråga. På samma sökning visas tre lågprismärken i samma kategori till halva ditt pris. Produkten är helt okej. I just den auktionen förlorar produkten på priset.

Nu har du verkliga alternativ. Prissätt om. Lyft fram det som särskiljer produkten i titeln (”dunfyllning, −15 °C komfort”). Flytta produkten till en kampanj med budgivning som matchar den faktiska marginalen. Eller acceptera sökfrågan som toppen av tratten och bedöm den utifrån assisterande mätvärden i stället för enbart utifrån attribuering till sista klicket.

3 · Struktur- och budgivningsbeslut

Produkter som drar sökfrågor med hög köpintention förtjänar egna tillgångsgrupper och budgetar. Produkter som bara samlar generisk trafik hör hemma i uppsamlingsgrupper med konservativa mål. Den här rapporten ger shopping-segmenteringen ett bevisunderlag i stället för magkänsla.

4 · En hälsokontroll för PMax

PMax berättar nästan inget om söktrafiken. Den här rapporten är det närmaste du kommer en granskning av vilken söktrafik PMax faktiskt köper åt dig, per produkt.

Följ med när jag går igenom en verklig export, steg för steg

Allt ovan är varför. Nu kommer hur: vad du laddar ner, vad du tittar på och vilket faktiskt resultat du får.

Uppgifterna i det här avsnittet kommer från ett andra konto, en medelstor tjeckisk webbutik i lågprissegmentet. Butiken är inte elektronikåterförsäljaren från GA4-rutan ovan. Jag valde den här butiken eftersom katalogen är bred nog för att alla mönster ska synas i full skala. Jag hämtade butikens råa Shopping-sökfrågerapport via Google Ads API och lade den i en lokal SQLite-tabell innan jag körde aggregeringarna nedan. Ett förbehåll först. Den råa rapporten visar vilken annons- eller produktgrupp sökfrågan kopplades till, inte den enskilda produkten. Det är precis den lucka som UTM-lösningen fyller. Men redan på produktgruppsnivå visar siffrorna nedan tydligt vart utgifterna faktiskt går.

Källa för varje siffra i det här avsnittet: Google Ads Shopping-sökfrågerapport från ett medelstort tjeckiskt webbutikskonto, ~22,6 miljoner rader, data som hämtades i april 2026. Beloppen är omräknade från CZK med kursen ~25 CZK/EUR.

Steg 1 · Hämta rårapporten och mät omfattningen

Exportera Shopping-sökfrågerapporten via Google Ads API (search_term_view) till ett system där du kan köra GROUP BY, till exempel SQLite eller BigQuery. Innan du kopplar ihop eller filtrerar något, kör ett rent COUNT(*) och ett par SUM:ar. Du behöver förstå hur stor den råa datamängden är och hur mycket brus den innehåller, för just det faktumet ställer om alla förväntningar som följer:

Den råa högen, ett COUNT och tre SUM:ar

  • Rapportrader (sökfråga × produktgrupp) 22 640 716
  • Distinkta sökfrågor 5 370 131
  • Produktgrupper som sökfrågorna kopplades till 10 393
  • Utgift / intäkt (sammanvägd ROAS 6,8×) 103 000 € / 697 000 €

22,6 miljoner rader, 5,4 miljoner unika sökfrågor. Ingen människa läser det. De här två antalen har bara ett syfte: att avfärda tanken på manuell granskning rad för rad. Den enda vägen framåt är att aggregera datamängden efter den dimension som betalar räkningarna.

Steg 2 · Släng 96 % innan du analyserar något

Räkna raderna med noll klick och filtrera sedan bort dem. Shopping-sökfrågerapporten loggar varje sökfråga som din annons visades för, och de flesta av dem fick aldrig något klick. Rader med bara exponeringar kan inte kosta dig något och kan inte konvertera. De är brus som får tabellen att se skrämmande ut.

WHERE clicks > 0 krymper tabellen till 738 444 rader, en storlek du faktiskt kan jobba med.

Exponeringsfloden

  • Rader med noll klick (rena exponeringar) 21 902 272 (96,7 %)
  • Rader som någonsin kostade pengar 738 444 (3,3 %)

96,7 % av den skrämmande siffran var aldrig något annat än brus. Filtrera fram rader med klick innan du analyserar något, så bygger alla följande aggregeringar på rader som faktiskt medför en kostnad.

Steg 3 · Ställ den fråga som sätter kontot i ett nytt ljus

Sortera de klickade raderna i två grupper: ”konverterade minst en gång” och ”konverterade aldrig”. Summera sedan kostnaden för varje grupp. Det är den uppdelningen som förvandlar ”kontot är okej, ROAS är 6,8” till ”större delen av budgeten gör ingenting”. Beräkna den innan du överväger någon optimering:

Kostnaden för trafiken utan konverteringar

  • Rapportrader som konverterade noll gånger 99,75 %
  • De här radernas andel av den totala kostnaden 85,5 %
  • Kostnad som inte ledde till någon konvertering 88 000 €
  • Andel rader utan konvertering bland rader med klick 92,3 %

85 % av budgeten gick till kombinationer av sökfråga och produktgrupp som aldrig konverterade.

Det är inget avrundningsfel du optimerar senare. Det är kontots största problem. Och du kunde bara se det eftersom du aggregerade varje sökfråga efter den produktgrupp som den kopplades till.

Steg 4 · Kolla om slöseriet är några få skurkar eller hela hopen

Sortera de klickade raderna efter kostnad, ta ut de översta 1 respektive 10 procenten och mät deras andel av den totala utgiften. Det här avgör din taktik. Om en handfull sökfrågor bränner budgeten pausar du dem och är klar. Om slöseriet är utspritt över många rader är det meningslöst att pausa sökfrågor; då behöver du strukturella förändringar:

Var den slösade utgiften faktiskt sitter

  • De dyraste 1 % av raderna med klick 10,5 % av utgiften
  • De dyraste 10 % av raderna med klick 29,8 % av utgiften

Slöseriet är utspritt över många rader. De dyraste 1 % av raderna står för knappt en tiondel av utgiften, så att pausa 20 dåliga sökfrågor ändrar ingenting. I stället för att jaga enskilda sökfrågor, förbättra strukturen: bestäm vilka produkter som ska ligga i vilka kampanjer och med vilka mål. Och kom ihåg att Google ändå inte ens låter dig lägga till ett negativt sökord per produkt.

Steg 5 · Ta reda på varför långsvansen läcker: en sökfråga, många produkter

Räkna för varje sökfråga hur många distinkta produktgrupper den kopplades till. Det visar mekanismen bakom slöseriet. Shopping matchar en sökfråga utifrån signalerna i hela feeden, inte utifrån relevansen för en viss produkt. En enda sökfråga kan kopplas till orelaterade delar av katalogen, och du betalar för varje felmatchning.

Ett konkret fall från kontot. Sökfrågan ”antiskall-apparat” fortsatte bränna budget, så jag körde COUNT(DISTINCT ad_group) på den. Sökfrågan hade kopplats till 139 olika annons- och produktgrupper. Klicken kostade 39 € och gav i praktiken inga konverteringar. Sökfrågan ”lego technic” kopplades till 300 olika annons- och produktgrupper.

Sökfrågornas spridning i katalogen

  • Distinkta sökfrågor kopplade till mer än en produktgrupp 46,7 % av 5 370 131
  • Högsta antalet produktgrupper för en enskild sökfråga 6 661
  • ”antiskall-apparat” → grupper / kostnad / konverteringar 139 / 39 € / ≈ 0

Nästan hälften av sökfrågorna är spridda över flera produktgrupper, och de värsta sökfrågorna kopplas till tusentals grupper. Det är därifrån kostnaden för trafiken utan konverteringar i steg 3 kommer. Och det är precis det du äntligen kan se när varje klick är kopplat till sitt produkt-ID.

Steg 6 · Granska de värsta felmatchningarna, för de är absurda

Hämta de dyraste raderna som aldrig konverterade och jämför varje sökfråga med den tillhörande produktgruppen. De aggregerade siffrorna visar problemets omfattning. Det är de här tre raderna du visar för chefen:

De dyraste kombinationerna av sökfråga och produktgrupp utan konverteringar (översatta och anonymiserade; de illustrerar hur de faktiska raderna såg ut).
SökfrågaKopplad till produktgruppKlickKostnadKonv.
hundträningshalsband Handväskor9711 €0
antiskall-apparat Babyprodukter769,60 €0
lego technic Belysning706,80 €0

Sökfrågan ”hundträningshalsband” kopplades till gruppen Handväskor. Sökfrågan ”antiskall-apparat” kopplades till Babyprodukter. Produktgruppen har inget med sökfrågan att göra. Google kopplade sökfrågan till produktgruppen utifrån generella signaler från produktfeeden, registrerade klicket och debiterade kontot. Med sökfråga × produkt ser du det här med en enda blick; med Googles standardrapport kan du aldrig se det. (Kategorier översatta och anonymiserade.)

Steg 7 · Nu utdelningen: de 0,25 % som betalar för hela kontot

Gör motsatsen till steg 3. Isolera bara raderna som faktiskt konverterade och summera deras kostnad och intäkt. Det här är skälet till att hela övningen spelar roll. När du väl kan skilja vinnarna från raderna som belastar resultatet skyddar du vinnarna och stryper budgeten för resten.

De 0,25 % som bär kontot

  • Rader som konverterade (andel av alla rader) 57 209 (0,25 %)
  • Vad de kostade 14 900 €
  • Vad de gav tillbaka 697 000 €
  • ROAS för de raderna 46,8×

En kvarts procent av raderna kör på 46,8× ROAS och bär i praktiken kontot. De andra 99,75 % drar ner den sammanvägda ROAS-siffran till 6,8×. Hela jobbet består i att hitta de 0,25 % av raderna, skydda deras budget och strukturera om resten så att det inte längre konkurrerar om samma pengar. Inget av det fungerar förrän varje rad anger vilken produkt annonsklicket gällde. Den uppgiften kommer från ett enda ställe: utm_content={product_id}, som du ställde in i början.

Ta med den

Ladda ner de kompletta instruktionerna för din AI

Hela metoden ovan, omskriven som en brief du kan klistra in direkt i Claude eller vilken kapabel kodagent som helst. Den sätter spårningsmallen, drar ut sökfråga × produkt-rapporten ur GA4 och kör aggregeringarna på ditt konto. Mallen och dess tre fällor finns också med. Lämna din e-post så är filen din.

En fil, en lista. Jag skriver bara när det finns något värt att läsa.

FAQ

Funkar det här för Performance Max?

Ja, för sök- och Shopping-ytorna. Klick från Display, YouTube och Gmail innehåller produkt-ID:t men ingen sökfråga, så räkna med att de raderna har en tom sökfrågedimension.

Bryter UTM:en min GA4-attribution?

Nej. Auto-tagging (gclid) fortsätter hantera källa, medium och kampanj; du lägger bara till annonsinnehåll. Det som faktiskt ställer till det är en anpassad parameter i utm_campaign, så lägg aldrig en där.

Varför bara 78 % täckning?

Consent mode, sökfrågelösa PMax-ytor och analysblockerare står för resten. 78 % räcker gott för varje användningsfall ovan, eftersom du läser mönster, inte granskar ören.

Kan jag se sökfrågor min annons visades för men ingen klickade på?

Nej. Det här datasetet börjar vid klicket. Analys på exponeringsnivå måste fortfarande göras i den vanliga sökfrågerapporten, utan produktdata.

Funkar mönstret utanför Google, säg Bing eller Sklik?

Ja. Metoden fungerar på alla plattformar som har en URL-mall, ett produktmakro och en analysdimension som fångar upp produkt-ID:t. De specifika makrona skiljer sig mellan plattformarna.

Hur lång tid tar det innan jag har användbar data?

Beror på volym. Vårt konto hade en användbar rapport efter 7 dagars data. Ett mindre konto bör samla in data i 30 dagar.


CTA: Vilka av dina produkter förtjänar sina klick, och vilka kostar bara pengar? Lägg till parametern idag, så vet du om en vecka. Eller ge mig tillgång till ditt konto så läser vi rapporten tillsammans.

Hela poängen med det här

Vill du ha den här nivån av insyn i ditt konto?

Ett mejl. Jag säger dig ärligt om det är värt det för din uppsättning.

Hör av dig →
Gratis nedladdning

Ladda ner de kompletta instruktionerna för din AI

Hela metoden ovan, omskriven som en brief du kan klistra in direkt i Claude eller vilken kapabel kodagent som helst. Den sätter spårningsmallen, drar ut sökfråga × produkt-rapporten ur GA4 och kör aggregeringarna på ditt konto. Mallen och dess tre fällor finns också med. Lämna din e-post så är filen din.

En fil, en lista. Jag skriver bara när det finns något värt att läsa.