Deep Dive · 13 Min. Lesezeit

Der Shopping-Suchbegriffe-Report, den Google dir nicht gibt

Shopping- und PMax-Reports zeigen die Anfrage, nie das Produkt. Bau den Anfrage-×-Produkt-Report mit einem URL-Parameter und zwei GA4-Dimensionen neu.

Illustration, die einen Stapel Suchanfragen mit einem einzelnen Produkt paart, das fehlende Glied, das Googles Reports verbergen.
Die Fakten sind echt — die Artikel-Cover nicht.

Kurz gesagt: Shopping- und PMax-Reports zeigen die Anfrage, aber verstecken das Produkt. Füg einen URL-Parameter hinzu, {lpurl}?utm_content={product_id}, und binnen einer Woche liefert dir GA4 den abgeschafften Report Anfrage × Produkt, indem es sessionManualAdContent mit sessionGoogleAdsQuery joint. Auf einem echten Konto zeigte dieser Blick, dass 85 % der Ausgaben durch Paare flossen, die nie konvertierten, während ein Anteil von 0,25 % das ganze Konto mit 46,8× ROAS trug.

Ein Kunde stellte mir mal eine Frage, die eine Ein-Klick-Antwort haben sollte. Jemand suchte „kabelloser staubsauger unter 200”, klickte auf die Shopping-Anzeige, und das Konto zahlte dafür. Auf welchem der 5.000 Produkte im Feed landete dieser Klick? Ich öffnete den Suchbegriffe-Report, dann den Produkt-Report, und es gab keinen Weg, sie zu verbinden. Den gibt es bis heute nicht. Google zeigt dir die Anfrage, und es zeigt dir das Produkt, aber nie zusammen.

Vor Jahren gab dir die alte AdWords API genau diese Paarung. Dann verschwand sie still, und keine Einstellung, kein Report, kein API-Feld bringt sie zurück. Für einen Onlineshop ist diese Lücke nicht kosmetisch. Anfrage zu Produkt ist der Ort, an dem die echte Optimierung lebt. Ob deine Titel zur realen Nachfrage passen. Welche Produkte Müll-Traffic anziehen. Warum ein Produkt Klicks bekommt, aber nie konvertiert.

Zwölf Jahre gegen die Google Ads API zu programmieren haben mich gelehrt, dass ein Report, den Google abschafft, nicht zurückkommt. Also habe ich ihn selbst neu gebaut, und der Nachbau ist fast peinlich einfach. Ein URL-Parameter. Binnen einer Woche liefert dir GA4 jeden bezahlten Klick gepaart als Anfrage × Produkt, mit Sitzungen, Conversions und Umsatz dran. Der Aufbau dauert Minuten; der Rest dieses Artikels handelt davon, was du mit dem machst, was zurückkommt.

78 %
der Klicks als Anfrage × Produkt gematcht
22
aktualisierte Kampagnen
1
URL-Parameter, das ist der ganze Stack
7 Tage
bis zu verifizierten Daten in GA4

Der Fix: ein Parameter, zwei GA4-Dimensionen

Füg ein Tracking-Template hinzu

Setz {lpurl}?utm_content={product_id} auf deine Shopping- und PMax-Kampagnen. Die ValueTrack-Variable {product_id} sendet die Merchant-Center-Produkt-ID mit jedem Klick.

GA4 speichert das Produkt

Das UTM landet in der Dimension Manueller Anzeigeninhalt der Sitzung (sessionManualAdContent).

GA4 kennt die Anfrage bereits

Auto-Tagging (gclid) füllt sessionGoogleAdsQuery in derselben Sitzung.

Joine die zwei Dimensionen

Jeder bezahlte Klick wird zu einem Paar Anfrage × Produkt, mit Sitzungen, Conversion Rate und Umsatz dran.

Auto-Tagging und das manuelle UTM bekämpfen einander nicht. Der gclid handhabt weiterhin Quelle, Medium und Kampagne; dein UTM trägt nur die Produkt-ID.

Wisse, was du bekommst (und was nicht)

  • Nur geklickte Anfragen. Dieser Datensatz beginnt beim Klick. Anfragen, bei denen deine Anzeige erschien, aber niemand klickte, erreichen GA4 nie. Impression-Level-Analyse bleibt in Googles Standard-Report, ohne Produkte.
  • Etwa 20 % der Klicks paaren nicht. Consent-abgelehnte Sitzungen, PMax-Oberflächen ganz ohne Anfrage (Display, YouTube, Gmail), Klicks, die nie Analytics auslösten.
  • Sitzungsbezogen. Eine Sitzung trägt eine Produkt-ID, die geklickte, selbst wenn der Nutzer danach zehn andere durchstöbert.

Den Report aus GA4 ziehen

In der GA4-Oberfläche öffnest du Explorativ und baust eine Tabelle in freier Form. Dimensionen sind Manueller Anzeigeninhalt der Sitzung und Google Ads-Suchanfrage der Sitzung. Metriken sind Sitzungen, Schlüsselereignisse (früher Conversions) und Kaufumsatz. Filtere auf Quelle/Medium der Sitzung gleich google / cpc.

Für alles Ernsthafte willst du die Data API, denn dieser Report gehört in ein Dashboard oder einen BigQuery-Join, nicht in einen Browser-Tab:

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

Joine sessionManualAdContent gegen deinen Produkt-Feed (id zu Titel, Preis, Kategorie), und der Report ist komplett. Anfrage, Produkt, Titel und Ökonomie in einer Tabelle.

Verifiziert, nicht theoretisiert

Wir haben das auf einem Live-Konto ausgerollt, einem tschechischen Elektronikhändler mit 22 aktiven Shopping-Kampagnen, und ich habe GA4 sieben Tage später geprüft:

GA4, 7 Tage nach dem Deployment

  • Zeilen google/cpc-Traffic 9.753
  • Trugen die Produkt-ID (utm_content) 96 %
  • Trugen die Suchanfrage (sessionGoogleAdsQuery) 81 %
  • Trugen beides, ein funktionierender Anfrage-×-Produkt-Report 78 %

Jetzt der spaßige Teil: was dir die Paare verraten

1 · Die Titel-Lücke

Stell die Anfragen neben den Titel und die Beschreibung, die sie auslösten. Der Mismatch springt heraus:

What people actually search
kabelloser staubsauger tierhaarestaubsauger für hundehaare allergiehaustier staubsauger leisebester staubsauger tierhaare 2026
What the title says
Staubsauger X300 Turbo 2000W, EAN 8595…
Beschreibung: „Hochwertiger Staubsauger mit modernem Design und reichem Zubehör."
The gap: Der Titel verkauft Watt, nach denen niemand sucht, und verfehlt den Tierhaar-Use-Case, nach dem alle suchen. (Illustratives Beispiel.)

Die Feed-Roadmap schreibt sich von selbst. Ich baue seit zwei Jahren ein KI-Tool zur Feed-Anreicherung, und die ehrliche Schwäche der ganzen Kategorie ist der Wirkungsnachweis. Dieser Report löst das. Schreib den Titel um die Nachfrage herum, die du gerade bewiesen hast, und beobachte dann, wie sich CTR und Conversion Rate pro Anfrage bewegen. KI-Feed-Anreicherung hört auf, ein Vertrauensvorschuss zu sein, und wird zu einer messbaren Schleife.

2 · Wer noch auf „deiner” Anfrage ist, und mit welchem Produkt

Negative Keywords pro Produkt kannst du nicht hinzufügen. Google gibt dir in Shopping und PMax keinen solchen Hebel. Wenn ein Anfrage-×-Produkt-Paar also unterperformt, führt die Frage, wie du es ausschließt, ins Nichts. Die produktive Frage ist, warum es unterperformt.

Nimm die Anfrage und scrape die Live-Ergebnisseite dafür. Ich nutze DataForSEO, Endpoint serp/google/organic/live/advanced. Ein POST mit dem Anfragetext und dem location_code deines Marktes liefert die ganze Ergebnisseite als strukturiertes JSON zurück, Paid-Anzeigen, Shopping-Blöcke mit Händlernamen und Preisen, Organik darunter. DataForSEO rechnet pro SERP ab, und eine SERP deckt bis zu 10 Ergebnisse ab. Beim aktuellen Basispreis von etwa 0,002 $ pro SERP kostet die Prüfung von 200 Anfragen mit Standardtiefe rund 0,40 $, vor bezahlten erweiterten Parametern.

Ein typischer Befund. Dein Mittelklasse-Schlafsack sammelt Klicks auf einer generischen Anfrage, und dieselbe Anfrage zeigt drei Budget-Marken derselben Kategorie zum halben Preis. Das Produkt ist in Ordnung. Der Preis verliert genau diese Auktion.

Jetzt hast du echte Optionen. Neu bepreisen. Das Unterscheidungsmerkmal in den Titel schieben („Daunenfüllung, −15 °C Komfort”). Das Produkt in eine Kampagne mit Bidding verschieben, das zu seiner Margenrealität passt. Oder die Anfrage als Upper Funnel akzeptieren und sie an Assisted-Metriken statt am letzten Klick messen.

3 · Struktur- und Bidding-Entscheidungen

Produkte, die High-Intent-Anfragen anziehen, verdienen eigene Asset-Gruppen und Budgets. Produkte, die nur generischen Traffic sammeln, gehören in Catch-all-Gruppen mit konservativen Zielen. Dieser Report gibt der Shopping-Segmentierung eine Evidenzbasis, und er ersetzt das Bauchgefühl.

4 · Ein Gesundheitscheck für PMax

PMax sagt dir fast nichts über Search. Dieser Report ist das Nächste an einem Audit dessen, was PMax auf der Search-Oberfläche tatsächlich für dich einkauft, pro Produkt.

Ich gehe mit dir einen echten Export durch, Schritt für Schritt

Alles oben ist das Warum. Hier ist, wie es wirklich aussieht, jeder Schritt, was du herunterlädst, worauf du starrst und welche echte Zahl zurückkommt.

Die Daten sind ein zweites Konto, ein mittelgroßer tschechischer Onlineshop im Schnäppchen-Segment. Es ist nicht der Elektronikhändler aus der GA4-Box oben; ich nehme es, weil sein Katalog breit genug ist, dass jedes Muster in voller Größe auftaucht. Ich habe seinen rohen Shopping-Suchbegriffe-Report über die Google Ads API in eine lokale SQLite-Tabelle gezogen und die Aggregationen unten darauf laufen lassen. Ein Vorbehalt vorab. Der Rohreport gibt dir die Anzeigen- oder Produktgruppe, unter der die Anfrage ausgeliefert wurde, nicht das einzelne Produkt. Genau diese Lücke schließt der UTM-Trick. Aber selbst auf Produktgruppen-Ebene sind die Zwischenergebnisse laut genug, um den Punkt zu machen.

Quelle für jede Zahl in diesem Abschnitt: Shopping-Suchbegriffe-Report (Google Ads), ein mittelgroßes tschechisches Onlineshop-Konto, ~22,6 Mio. Zeilen, Daten gezogen im April 2026. Beträge aus CZK zu ~25 CZK/EUR umgerechnet.

Schritt 1 · Zieh den Rohreport und vermiss den Haufen

Exportier den Shopping-Suchbegriffe-Report über die Google Ads API (search_term_view) in irgendetwas, worauf du ein GROUP BY laufen lassen kannst, SQLite oder BigQuery. Bevor du irgendetwas joinst oder filterst, lass ein schlichtes COUNT(*) und ein paar SUMs laufen. Du musst spüren, wie groß und wie verrauscht der rohe Haufen ist, denn diese eine Tatsache setzt jede Erwartung zurück, die danach kommt:

Der Rohhaufen, ein COUNT und drei SUMs

  • Report-Zeilen (Anfrage × Produktgruppe) 22.640.716
  • Eindeutige Suchbegriffe 5.370.131
  • Produktgruppen, unter denen sie liefen 10.393
  • Kosten / Umsatz (gemischter ROAS 6,8×) 103.000 € / 697.000 €

22,6 Millionen Zeilen, 5,4 Millionen eindeutige Anfragen. Das liest kein Mensch. Die einzige Aufgabe dieser Zahl ist, dir den nächsten Zug zu sagen, nämlich den Haufen entlang der Dimension zu kollabieren, die die Rechnungen zahlt, und dich zu warnen, dass manuelle Triage pro Zeile aussichtslos ist.

Schritt 2 · Wirf 96 % weg, bevor du irgendetwas analysierst

Zähl die Zeilen mit null Klicks und filter sie heraus. Der Shopping-Suchbegriffe-Report loggt jede Anfrage, für die deine Anzeige erschien, und auf die meisten dieser Anfragen klickte nie jemand. Reine Impressions-Zeilen können dich nichts kosten und nichts konvertieren. Sie sind Rauschen, das die Tabelle furchteinflößend aussehen lässt.

WHERE clicks > 0 kollabiert die Tabelle auf 738.444 Zeilen, eine Größe, mit der du wirklich arbeiten kannst.

Die Impressions-Flut

  • Zeilen mit null Klicks (reine Impressions) 21.902.272 (96,7 %)
  • Zeilen, die dich überhaupt etwas kosteten 738.444 (3,3 %)

96,7 % der furchteinflößenden Zahl waren nie etwas anderes als Rauschen. Filtere auf geklickte Zeilen, bevor du irgendetwas analysierst, dann läuft jede Aggregation unten auf dem Teil, der wirklich Geld ausgibt.

Schritt 3 · Stell die eine Frage, die das Konto neu zeichnet

Teil auf den geklickten Zeilen die Ausgaben in „mindestens einmal konvertiert” und „nie konvertiert” und summier die Kosten je Gruppe. Das ist die Zahl, die aus „das Konto ist okay, ROAS 6,8” ein „der Großteil des Budgets tut nichts” macht. Berechne sie vor jeder Optimierungsidee:

Die Null-Conversion-Bremse

  • Report-Zeilen, die null Mal konvertierten 99,75 %
  • Anteil der Gesamtkosten, den diese Zeilen fraßen 85,5 %
  • Kosten ohne eine einzige Conversion dahinter 88.000 €
  • Nur geklickte Zeilen, Anteil mit null Conversions 92,3 %

85 % des Budgets flossen durch Anfrage-×-Produktgruppen-Kombinationen, die nie ein einziges Mal konvertierten.

Das ist kein Rundungsfehler, den du später glättest. Es ist das Hauptereignis. Und du konntest es nur sehen, weil du die Anfrage auf das kollabiert hast, wogegen sie verkauft wurde.

Schritt 4 · Prüf, ob die Verschwendung ein paar Schurken sind oder die ganze Menge

Sortier die geklickten Zeilen nach Kosten, nimm die obersten 1 % und 10 % und sieh, wie viel der Gesamtkosten sie halten. Das entscheidet deine Taktik. Verbrennt eine Handvoll Anfragen das Budget, pausierst du sie und bist fertig. Ist die Verschwendung dünn verteilt, bringt das Pausieren von Anfragen nichts und du brauchst strukturelle Eingriffe:

Wo die verschwendeten Kosten wirklich sitzen

  • Oberste 1 % der geklickten Zeilen nach Kosten 10,5 % der Kosten
  • Oberste 10 % der geklickten Zeilen nach Kosten 29,8 % der Kosten

Die Bremse ist der Long Tail. Die obersten 1 % der teuren Zeilen halten kaum ein Zehntel der Kosten, also ändert das Pausieren von 20 schlechten Anfragen nichts. Reparier die Struktur, also welches Produkt mit welchem Ziel in welcher Kampagne sitzt, statt einzelnen Anfragen hinterherzujagen. Und denk daran, dass Google dir ein Negative pro Produkt ohnehin nicht erlaubt.

Schritt 5 · Finde heraus, warum der Long Tail leckt: eine Anfrage, viele Produkte

Zähl für jeden Suchbegriff, unter wie vielen verschiedenen Produktgruppen er ausgeliefert wurde. Das erklärt die Verschwendung mechanisch. Shopping matcht eine Anfrage gegen die Signale deines gesamten Feeds, nicht gegen die Relevanz eines einzelnen Produkts. Eine einzelne Anfrage leckt in unverwandte Ecken deines Katalogs, und du zahlst für jeden Fehlschuss.

Ein konkreter Fall aus dem Konto. Die Anfrage „Anti-Bell-Gerät” verbrannte immer wieder Budget, also ließ ich COUNT(DISTINCT ad_group) darauf laufen. Sie war unter 139 verschiedenen Anzeigen- und Produktgruppen ausgeliefert worden, für 39 € und ungefähr null Conversions. „lego technic” berührte 300.

Anfrage-Streuung über den Katalog

  • Begriffe, die unter mehr als einer Produktgruppe liefen 46,7 %
  • Meiste Produktgruppen, die eine Anfrage erreichte 6.661
  • „Anti-Bell-Gerät" → Gruppen / Kosten / Conversions 139 / 39 € / ~0

Fast die Hälfte der Anfragen ist über mehrere Produktgruppen verschmiert, und die schlimmsten erreichen Tausende. Das ist der Motor der Null-Conversion-Bremse aus Schritt 3, und genau das Ding, das du endlich siehst, sobald jeder Klick die ID seines Produkts trägt.

Schritt 6 · Schau dir die schlimmsten Fehlpaarungen an, denn sie sind absurd

Zieh die teuersten Zeilen, die nie konvertierten, und lies die Anfrage neben der Produktgruppe, gegen die sie verkauft wurde. Die Aggregat-Zahlen überzeugen dein Spreadsheet. Diese drei Zeilen überzeugen deinen Chef:

Teuerste Anfrage-×-Produktgruppe-Paare mit null Conversions (übersetzt und anonymisiert; illustrativ für die echten Zeilen).
SuchanfrageAusgeliefert unter ProduktgruppeKlicksKostenConv.
Hunde-Trainingshalsband Handtaschen9711 €0
Anti-Bell-Gerät Babyartikel769,60 €0
lego technic Beleuchtung706,80 €0

Eine Hunde-Trainingshalsband-Anfrage, bezahlt unter der Gruppe Handtaschen. Ein Anti-Bell-Gerät, verkauft gegen Babyartikel. Die Produktgruppe hat nichts mit der Anfrage zu tun. Google matchte auf grobe Feed-Signale, kassierte den Klick und stellte ihn dem Konto in Rechnung. Mit Anfrage × Produkt siehst du das auf einen Blick; mit Googles Standardreport nie. (Kategorien übersetzt und anonymisiert.)

Schritt 7 · Jetzt die Auszahlung: die 0,25 %, die das ganze Konto bezahlen

Kehr Schritt 3 um. Isolier nur die Zeilen, die konvertierten, und summier ihre Kosten und ihren Umsatz. Das ist der Grund, warum die ganze Übung zählt. Sobald du die Gewinner von der Bremse trennen kannst, schützt du die Gewinner und hungerst den Rest aus.

Der Anteil, der seinen Platz verdient

  • Zeilen, die konvertierten (Anteil an allen) 57.209 (0,25 %)
  • Was sie kosteten 14.900 €
  • Was sie zurückbrachten 697.000 €
  • ROAS dieses Anteils 46,8×

Ein Viertelprozent der Zeilen läuft mit 46,8× ROAS und trägt faktisch das ganze Konto. Die übrigen 99,75 % ziehen die gemischte Zahl auf 6,8× herunter. Diesen Anteil finden, sein Budget schützen und alles andere strukturell von ihm wegschieben, das ist die ganze Arbeit. Und nichts davon geht, solange nicht jede Zeile das Produkt trägt, gegen das sie verkauft wurde. Genau das kauft dir der Ein-Parameter-UTM vom Anfang dieses Artikels.

Take it with you

Lade dir die komplette Anleitung für deine KI herunter

Die ganze Methode oben, umgeschrieben als Briefing, das du direkt in Claude oder einen anderen fähigen Coding-Agenten einfügst. Es setzt das Tracking-Template, zieht den Anfrage-×-Produkt-Report aus GA4 und lässt die Aggregationen auf deinem Konto laufen. Das Template und seine drei Fallen sind auch drin. Hinterlass deine E-Mail und die Datei gehört dir.

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

FAQ

Funktioniert das für Performance Max?

Ja, für die Search- und Shopping-Oberfläche. Display-, YouTube- und Gmail-Klicks tragen die Produkt-ID, aber keine Anfrage, also erwarte bei diesen Zeilen eine leere Query-Dimension.

Bricht das UTM meine GA4-Attribution?

Nein. Auto-Tagging (gclid) handhabt weiterhin Quelle, Medium und Kampagne; du fügst nur Anzeigeninhalt hinzu. Was Dinge brechen würde, ist ein Custom-Parameter in utm_campaign, also pack nie einen dorthin.

Warum nur 78 % Abdeckung?

Consent Mode, anfragenlose PMax-Oberflächen und Analytics-Blocker fressen den Rest. 78 % reichen für jeden Use Case oben, denn du liest Muster, du prüfst keine Cents.

Kann ich Anfragen sehen, für die meine Anzeige erschien, aber niemand klickte?

Nein. Dieser Datensatz beginnt beim Klick. Impression-Level-Analyse bleibt im Standard-Suchbegriffe-Report, ohne Produkte.

Funktioniert das Muster außerhalb von Google, etwa Bing oder Sklik?

Ja. Das Muster überträgt sich auf jede Plattform mit einem URL-Template, einem Produkt-Makro und einer Analytics-Dimension, die es auffängt. Die konkreten Makros unterscheiden sich pro Plattform.

Wie lange, bis ich nutzbare Daten habe?

Hängt vom Volumen ab. Unser Konto hatte einen brauchbaren Report in 7 Tagen; kleinere Konten sollten 30 sammeln.


CTA: Welche deiner Produkte verdienen ihre Klicks, und welche stellen dir nur Rechnungen? Füg den Parameter heute hinzu, und in einer Woche weißt du es. Oder schick mir dein Konto und wir lesen den Report zusammen.

Worum es hier eigentlich geht

Willst du dieses Maß an Transparenz in deinem Konto?

Eine E-Mail. Ich sage dir ehrlich, ob es sich für dein Setup lohnt.

Kontakt aufnehmen →