Dybdegående · 13 min. læsning

Shopping-søgetermsrapporten Google ikke giver dig

Shopping- og PMax-rapporter viser forespørgslen, men aldrig produktet. Genopbyg query × produkt-rapporten med én URL-parameter og to GA4-dimensioner.

Illustration af en stak søgetermer parret med ét produkt. Googles egne rapporter viser aldrig den sammenhæng.
De alvorlige fakta er ægte — artikelforsiderne er ikke.

Kort fortalt: Shopping- og PMax-rapporter viser forespørgslen, men skjuler produktet. Tilføj én URL-parameter, {lpurl}?utm_content={product_id}, og inden for en uge giver GA4 dig den nedlagte query × produkt-rapport ved at samkøre sessionManualAdContent med sessionGoogleAdsQuery. På en rigtig konto viste den visning, at 85 % af forbruget løb gennem par, der aldrig konverterede. De 0,25 % af parrene, der faktisk konverterede, kørte med 46,8× ROAS og hentede hele omsætningen.

Gratis download

Vil du bare have den destillerede metode?

Download den komplette AI-instruktion — én fil, du sætter ind i Claude eller en anden kapabel kodeagent, og den trækker query × produkt-rapporten ud af din egen konto. Indtast din e-mailadresse, og filen er din — eller læs bare videre.

Én fil, én liste. Jeg skriver kun, når der er noget værd at læse.

En kunde stillede mig engang et spørgsmål, der burde have et et-kliks-svar. Nogen søgte på »ledningsfri støvsuger under 200«, klikkede på Shopping-annoncen, og kontoen betalte for det. Hvilket af de 5.000 produkter i feedet landede det klik på? Jeg åbnede søgetermsrapporten, derefter produktrapporten, og der var ingen måde at forbinde dem på. Det er der stadig ikke. Google viser dig forespørgslen, Google viser dig produktet, men aldrig de to sammen.

For år tilbage gav det gamle AdWords API dig præcis denne parring. Så forsvandt den i stilhed, og ingen indstilling, ingen rapport, intet API-felt bringer den tilbage. For en webshop er det hul ikke kosmetisk. Forbindelsen mellem query og produkt er der, hvor den reelle optimering ligger: den viser dig, om dine titler matcher den ægte efterspørgsel, hvilke produkter der tiltrækker skraldetrafik, og hvorfor et produkt får klik, men aldrig konverterer.

Tolv år med at bygge på Google Ads API har lært mig, at når Google nedlægger en rapport, kommer den ikke tilbage. Så jeg genopbyggede den selv, og genopbygningen er næsten pinligt enkel. Én URL-parameter. Inden for en uge giver GA4 dig hvert betalt klik parret som query × produkt, med sessioner, konverteringer og omsætning koblet på. Opsætningen tager minutter; resten af artiklen handler om, hvad du stiller op med det, der kommer tilbage.

78 %
af klik matchet som query × produkt
22
opdaterede kampagner
1
URL-parameter, det er hele stakken
7 dage
til verificerede data i GA4

Løsningen: én parameter, to GA4-dimensioner

Tilføj en sporingsskabelon

Sæt {lpurl}?utm_content={product_id} på dine Shopping- og PMax-kampagner. ValueTrack-variablen {product_id} sender Merchant Center-produkt-id’et med hvert klik.

GA4 gemmer produktet

UTM’et lander i dimensionen Manuelt annonceindhold for session (sessionManualAdContent).

GA4 kender allerede forespørgslen

Auto-tagging (gclid) udfylder sessionGoogleAdsQuery i samme session.

Samkør de to dimensioner

Hvert betalt klik bliver et query × produkt-par, med sessioner, konverteringsrate og omsætning koblet på.

Auto-tagging og det manuelle UTM modarbejder ikke hinanden. Gclid håndterer fortsat kilde, medie og kampagne; dit UTM bærer kun produkt-id’et.

Hvad du får (og hvad du ikke får)

  • Kun klikkede forespørgsler. Dette datasæt starter ved klikket. Forespørgsler, hvor din annonce blev vist, men ingen klikkede, når aldrig frem til GA4. Analyse på eksponeringsniveau bliver i Googles standardrapport, uden produkter.
  • Omkring 20 % af klikkene parres ikke. Hullerne er sessioner uden samtykke, PMax-flader helt uden forespørgsel (Display, YouTube, Gmail) og klik, der aldrig udløste analytics.
  • Ét produkt per session. Sessionen bærer id’et på det produkt, brugeren klikkede på, selv om vedkommende derefter kigger på ti andre.
Gratis download

Hent den komplette AI-instruktion til denne metode

Hele metoden, omskrevet som en brief, du kan sætte direkte ind i Claude eller enhver kapabel kodeagent. Den sætter sporingsskabelonen, trækker query × produkt-rapporten ud af GA4 og kører aggregeringerne på din konto. Skabelonen og dens tre faldgruber er også med. Indtast din e-mailadresse, og filen er din.

Én fil, én liste. Jeg skriver kun, når der er noget værd at læse.

At trække rapporten ud af GA4

Åbn Udforsk i GA4-interfacet og byg en friform-tabel. Dimensionerne er Manuelt annonceindhold for session og Google Ads-søgeforespørgsel for session. Metrikkerne er sessioner, nøglehændelser (tidligere konverteringer) og købsomsætning. Filtrér på sessionskilde/-medie lig med google / cpc.

Til alt seriøst vil du have Data API’et, for denne rapport hører hjemme i et dashboard eller en BigQuery-samkøring, ikke i en browserfane:

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

Samkør sessionManualAdContent med dit produktfeed (id → titel, pris, kategori), og rapporten er komplet. Query, produkt, titel, konverteringer og omsætning i én tabel.

Verificeret, ikke teori

Vi rullede det ud på live-kontoen hos en tjekkisk elektronikforhandler med 22 aktiverede Shopping-kampagner. Syv dage senere tjekkede jeg GA4:

GA4, 7 dage efter udrulning

  • Rækker med google/cpc-trafik 9.753
  • Bar produkt-id'et (utm_content) 96 %
  • Bar søgeforespørgslen (sessionGoogleAdsQuery) 81 %
  • Bar begge, en fungerende query × produkt-rapport 78 %

Nu den sjove del: hvad parrene fortæller dig

1 · Titel-hullet

Sæt forespørgslerne ved siden af den titel og beskrivelse, de udløste. Misforholdet springer i øjnene:

What people actually search
ledningsfri støvsuger dyrehårstøvsuger til hundehår allergikæledyr støvsuger stillebedste støvsuger dyrehår 2026
What the title says
Støvsuger X300 Turbo 2000W - EAN 8595…
Beskrivelse: »Støvsuger af høj kvalitet med moderne design og rigt tilbehør.«
The gap: Titlen sælger watt, ingen søger på, og rammer ved siden af dyrehår, som alle søger på. (Illustrativt eksempel.)

Feed-roadmappet skriver sig selv. Jeg har brugt de sidste to år på at bygge et AI-værktøj til feed-berigelse, og skal jeg være ærlig, er hele kategoriens svaghed at bevise effekt. Denne rapport løser det. Omskriv titlen, så den passer til den efterspørgsel, du lige har bevist, og se så CTR og konverteringsrate flytte sig per forespørgsel. AI-feed-berigelse er ikke længere noget, du må tage på tro, men en målbar cyklus.

2 · Hvem ellers er på »din« forespørgsel, og med hvilket produkt

Én ting kan du ikke: tilføje negative søgeord per produkt. Google giver dig ikke den løftestang i Shopping eller PMax. Så når et query × produkt-par underpræsterer, fører spørgsmålet om, hvordan du udelukker det, ingen steder hen. Det produktive spørgsmål er hvorfor det underpræsterer.

Tag forespørgslen og scrape den resultatside, den giver lige nu. Jeg bruger endpointet serp/google/organic/live/advanced hos DataForSEO. Én POST med forespørgselsteksten og location_code for dit marked returnerer hele resultatsiden som struktureret JSON: betalte annoncer, shopping-blokke med forhandlernavne og priser samt organiske resultater nedenunder. DataForSEO afregner per SERP, og én SERP dækker op til 10 resultater. Med den aktuelle basispris på cirka 0,002 $ per SERP koster det omkring 0,40 $ at tjekke 200 forespørgsler med standarddybde, eksklusive eventuelle gebyrer for avancerede parametre.

Et typisk fund. Din mellemklasse-sovepose samler klik på en generisk forespørgsel, og samme forespørgsel viser tre budgetmærker i samme kategori til det halve af din pris. Produktet fejler ikke noget. Prisen taber præcis den auktion.

Nu har du reelle muligheder. Justér prisen. Skub differentieringen op i titlen (»dunfyld, −15 °C komfort«). Flyt produktet over i en kampagne med budgivning, der matcher dets margenvirkelighed. Eller acceptér forespørgslen som upper funnel og bedøm den på assisterede metrikker i stedet for last click.

3 · Struktur- og budgivningsbeslutninger

Produkter, der tiltrækker forespørgsler med høj købsintention, fortjener deres egne asset groups og budgetter. Produkter, der kun samler generisk trafik, hører hjemme i catch-all-grupper med konservative mål. Denne rapport giver shopping-segmentering et evidensgrundlag i stedet for mavefornemmelse.

4 · Et sundhedstjek for PMax

PMax fortæller dig næsten intet om search. Denne rapport er det tætteste, du kommer på en audit af, hvad PMax faktisk køber for dig på search-fladen, per produkt.

Se mig gå én rigtig eksport igennem, trin for trin

Alt ovenfor er hvorfor. Nu kommer hvordan: hvad du downloader, hvad du kigger på, og det rigtige tal, der kommer tilbage.

Dataene i dette afsnit kommer fra en anden konto, en mellemstor tjekkisk webshop i discountsegmentet. Webshoppen er ikke elektronikforhandleren fra GA4-boksen ovenfor. Jeg valgte webshoppen, fordi dens katalog er bredt nok til, at hvert mønster dukker op i fuld størrelse. Jeg trak dens rå Shopping-søgetermsrapport gennem Google Ads API ind i en lokal SQLite-tabel og kørte aggregeringerne nedenfor. Ét forbehold først. Den rå rapport giver dig annoncegruppen eller produktgruppen, forespørgslen blev serveret under, ikke det enkelte produkt. Det er præcis det hul, UTM-tricket lukker. Men selv på produktgruppeniveau er tallene nedenfor tydelige nok til at vise, hvor pengene rent faktisk bliver brugt.

Kilde for hvert tal i dette afsnit: Google Ads Shopping-søgetermsrapport, én mellemstor tjekkisk webshop-konto, ~22,6 mio. linjer, data trukket april 2026. Beløb omregnet fra CZK med en kurs på ~25 CZK/EUR.

Trin 1 · Træk rå-rapporten og mål bunken

Eksportér Shopping-søgetermsrapporten via Google Ads API (search_term_view) ind i et hvilket som helst system, hvor du kan køre GROUP BY, for eksempel SQLite eller BigQuery. Før du samkører eller filtrerer en eneste ting, kør et rent COUNT(*) og et par SUMs. Du skal mærke, hvor stor og hvor støjende den rå bunke er, for den ene kendsgerning nulstiller enhver forventning, der følger:

Den rå bunke, ét COUNT og tre SUMs

  • Rapportlinjer (query × produktgruppe) 22.640.716
  • Unikke søgetermer 5.370.131
  • Produktgrupper, de blev serveret under 10.393
  • Forbrug / omsætning (blandet ROAS 6,8×) 103.000 € / 697.000 €

22,6 millioner linjer, 5,4 millioner unikke forespørgsler. Det læser intet menneske. De to tal har præcis én opgave: at aflive idéen om at gennemgå hver enkelt linje manuelt. Den eneste vej videre er at aggregere dataene efter den dimension, der betaler regningerne.

Trin 2 · Smid 96 % af det væk, før du analyserer noget

Tæl linjerne med nul klik, og filtrér dem fra. Shopping-søgetermsrapporten logger hver forespørgsel, din annonce blev vist på, og på de fleste af de forespørgsler klikkede aldrig nogen. Rene eksponeringslinjer kan hverken koste dig noget eller konvertere. De er støj, der får tabellen til at se skræmmende ud.

WHERE clicks > 0 klapper tabellen sammen til 738.444 linjer, en størrelse du faktisk kan arbejde med.

Eksponeringsfloden

  • Linjer med nul klik (rene eksponeringer) 21.902.272 (96,7 %)
  • Linjer, der overhovedet kostede penge 738.444 (3,3 %)

96,7 % af det skræmmende tal var aldrig andet end støj. Filtrér til klikkede linjer, før du analyserer noget, så kører hver aggregering nedenfor på den del, der rent faktisk bruger penge.

Trin 3 · Stil det ene spørgsmål, der sætter kontoen i et nyt lys

Sortér de klikkede linjer i to grupper: »konverterede mindst én gang« og »konverterede aldrig«. Læg derefter omkostningerne for hver gruppe sammen. Det er denne opdeling, der forvandler »kontoen er fin, ROAS er 6,8« til »det meste af budgettet gør ingenting«. Beregn den før enhver optimeringsidé:

Nul-konverterings-bremsen

  • Rapportlinjer, der konverterede nul gange 99,75 %
  • Andel af samlet forbrug, de linjer åd 85,5 %
  • Forbrug på linjer uden en eneste konvertering 88.000 €
  • Af kun klikkede linjer, andel med nul konverteringer 92,3 %

85 % af budgettet løb gennem query × produktgruppe-kombinationer, der ikke konverterede en eneste gang.

Det er ikke en ubetydelig afvigelse, du kan tage dig af senere. Det er kontoens største problem. Og du kunne kun se det, fordi du klappede hver forespørgsel sammen til den produktgruppe, den blev serveret under.

Trin 4 · Tjek, om spildet er nogle få skurke eller hele flokken

Sortér de klikkede linjer efter omkostning, tag top 1 % og top 10 %, og mål deres andel af det samlede forbrug. Det afgør din taktik. Hvis en håndfuld termer brænder budgettet af, sætter du dem på pause, og du er færdig. Hvis spildet er spredt tyndt, er det nytteløst at pause termer, og du har brug for strukturelle løsninger:

Hvor det spildte forbrug faktisk sidder

  • Top 1 % af klikkede linjer efter omkostning 10,5 % af forbruget
  • Top 10 % af klikkede linjer efter omkostning 29,8 % af forbruget

Spildet er spredt tyndt ud. Top 1 % af de dyre linjer står for knap en tiendedel af forbruget, så at sætte 20 dårlige termer på pause ændrer ingenting. I stedet for at jagte enkelte forespørgsler skal du rette strukturen: beslut, hvilke produkter der sidder i hvilken kampagne ved hvilket mål. Og husk, at Google alligevel ikke engang lader dig tilføje et negativt søgeord per produkt.

Trin 5 · Find ud af hvorfor long tail lækker: én forespørgsel, mange produkter

Tæl for hver søgeterm, hvor mange forskellige produktgrupper den blev serveret under. Det forklarer spildet mekanisk. Shopping matcher en forespørgsel med hele dit feeds signaler, ikke med ét produkts relevans. En enkelt forespørgsel lækker ud i hjørner af dit katalog, der intet har med den at gøre, og du betaler for hver forbier.

Et konkret tilfælde fra kontoen. Forespørgslen »anti-gø-enhed« blev ved med at brænde budget af, så jeg kørte COUNT(DISTINCT ad_group) på den. Den var blevet serveret under 139 forskellige annonce- og produktgrupper, for 39 € og cirka nul konverteringer. Forespørgslen »lego technic« blev serveret under 300 forskellige annonce- og produktgrupper.

Forespørgsler spredt ud over kataloget

  • Unikke søgetermer serveret under mere end én produktgruppe 46,7 % af 5.370.131
  • Flest produktgrupper, en enkelt forespørgsel nåede 6.661
  • »anti-gø-enhed« → grupper / omkostning / konverteringer 139 / 39 € / ≈ 0

Næsten halvdelen af forespørgslerne er smurt ud over flere produktgrupper, og de værste syndere når tusinder. Det er derfra, nul-konverterings-bremsen fra trin 3 kommer. Og det er præcis det, du endelig kan se, så snart hvert klik bærer sit produkt-id.

Trin 6 · Tag de værste fejlpar i øjesyn, for de er absurde

Træk de dyreste linjer, der aldrig konverterede, og læs forespørgslen ved siden af den produktgruppe, den blev serveret under. Aggregattallene viser problemets omfang. Det er disse tre rækker, du lægger frem for din chef:

Dyreste query × produktgruppe-par med nul konverteringer (oversat og anonymiseret; illustrative for de rigtige rækker).
SøgetermServeret under produktgruppeKlikOmkostningKonv.
hundetræningshalsbånd Håndtasker9711 €0
anti-gø-enhed Babyprodukter769,60 €0
lego technic Belysning706,80 €0

Forespørgslen »hundetræningshalsbånd« blev serveret under gruppen Håndtasker. Forespørgslen »anti-gø-enhed« blev serveret under Babyprodukter. Produktgruppen har intet med forespørgslen at gøre. Google matchede forespørgslen med brede feed-signaler, tog imod klikket og sendte regningen videre til kontoen. Med query × produkt ser du det med ét blik; med Googles standardrapport gør du det aldrig. (Kategorier oversat og anonymiseret.)

Trin 7 · Nu udbyttet: de 0,25 %, der betaler for hele kontoen

Vend trin 3 om. Isolér kun de linjer, der faktisk konverterede, og læg deres omkostning og omsætning sammen. Det er grunden til, at hele øvelsen betyder noget. Når du først kan skille vinderne fra bremsen, beskytter du vinderne og sulter resten.

Skiven, der gør sig fortjent

  • Linjer, der konverterede (andel af alle linjer) 57.209 (0,25 %)
  • Hvad de kostede 14.900 €
  • Hvad de gav igen 697.000 €
  • ROAS på den skive 46,8×

En kvart procent af linjerne kører ved 46,8× ROAS og bærer reelt kontoen. De øvrige 99,75 % trækker det blandede tal ned til 6,8×. Hele arbejdet består i at finde de 0,25 %, beskytte deres budget og omstrukturere alt andet, så det ikke længere konkurrerer om de samme penge. Og intet af det virker, før hver linje angiver, hvilket produkts annonce der blev klikket på. Den oplysning kommer fra ét sted: parameteren utm_content={product_id}, som du satte op i begyndelsen.

Tag den med

Download den komplette instruktion til din AI

Hele metoden ovenfor, omskrevet som en brief, du kan sætte direkte ind i Claude eller enhver kapabel kodeagent. Den sætter sporingsskabelonen, trækker query × produkt-rapporten ud af GA4 og kører aggregeringerne på din konto. Skabelonen og dens tre faldgruber er også med. Indtast din e-mailadresse, og filen er din.

Én fil, én liste. Jeg skriver kun, når der er noget værd at læse.

FAQ

Virker det for Performance Max?

Ja, for search- og shopping-fladen. Klik fra Display, YouTube og Gmail bærer produkt-id’et, men ingen forespørgsel, så forvent en tom query-dimension på de rækker.

Ødelægger UTM'et min GA4-attribution?

Nej. Auto-tagging (gclid) håndterer fortsat kilde, medie og kampagne; du tilføjer kun annonceindhold. Det, der ville ødelægge noget, er en custom-parameter inde i utm_campaign, så læg aldrig en derind.

Hvorfor kun 78 % dækning?

Consent mode, PMax-flader uden forespørgsel og analytics-blockere æder resten. 78 % er rigeligt til alle use cases ovenfor, fordi du leder efter mønstre frem for at afstemme tallene ned til sidste øre.

Kan jeg se forespørgsler, min annonce blev vist på, men ingen klikkede?

Nej. Dette datasæt starter ved klikket. Analyse på eksponeringsniveau bliver i standard-søgetermsrapporten, uden produkter.

Virker mønstret uden for Google, fx Bing eller Sklik?

Ja. Mønstret kan overføres til enhver platform med en URL-skabelon, en produktmakro og en analytics-dimension til at opfange det. De konkrete makroer er forskellige fra platform til platform.

Hvor lang tid før jeg har brugbare data?

Afhænger af volumen. Vores konto havde en brugbar rapport efter 7 dages data. En mindre konto bør indsamle data i 30 dage.


CTA: Hvilke af dine produkter gør sig fortjent til deres klik, og hvilke sender dig bare en regning? Tilføj parameteren i dag, så ved du det om en uge. Eller send mig din konto, så læser vi rapporten sammen.

Pointen med det hele

Vil du have dette niveau af indsigt i din konto?

Én e-mail. Jeg siger dig ærligt, om det er besværet værd for dit setup.

Kontakt →
Gratis download

Download den komplette instruktion til din AI

Hele metoden ovenfor, omskrevet som en brief, du kan sætte direkte ind i Claude eller enhver kapabel kodeagent. Den sætter sporingsskabelonen, trækker query × produkt-rapporten ud af GA4 og kører aggregeringerne på din konto. Skabelonen og dens tre faldgruber er også med. Indtast din e-mailadresse, og filen er din.

Én fil, én liste. Jeg skriver kun, når der er noget værd at læse.