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 diese Auswertung, dass 85 % der Ausgaben durch Paare flossen, die nie konvertierten. Die 0,25 % der Paare, die konvertierten, liefen mit 46,8× ROAS und brachten den gesamten Umsatz.
Willst du nur die destillierte Methode?
Lade dir die komplette KI-Anleitung herunter — eine Datei, die du in Claude oder einen anderen fähigen Coding-Agenten einfügst, und er zieht den Anfrage-×-Produkt-Report aus deinem eigenen Konto. Lass deine E-Mail da und die Datei gehört dir — oder lies einfach weiter.
Eine Datei, eine Liste. Ich schreibe nur, wenn es etwas zu lesen gibt.
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 keine Möglichkeit, sie zu verbinden. Die gibt es bis heute nicht. Google zeigt dir die Anfrage, Google zeigt dir das Produkt, aber nie beides 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. Die Verbindung zwischen Anfrage und Produkt ist der Ort der echten Optimierung: Sie zeigt dir, ob deine Titel zur realen Nachfrage passen, welche Produkte Müll-Traffic anziehen und warum ein Produkt Klicks bekommt, aber nie konvertiert.
Zwölf Jahre Entwickeln mit der Google Ads API 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 dazu. Der Aufbau dauert Minuten; der Rest dieses Artikels handelt davon, was du mit dem machst, was zurückkommt.
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 dazu.
Auto-Tagging und das manuelle UTM kommen einander nicht in die Quere. Der gclid handhabt weiterhin Quelle, Medium und Kampagne; dein UTM trägt nur die Produkt-ID.
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 lassen sich nicht paaren. Die Lücken sind Sitzungen ohne Einwilligung, PMax-Oberflächen ganz ohne Anfrage (Display, YouTube, Gmail) und Klicks, die nie Analytics auslösten.
- Ein Produkt pro Sitzung. Die Sitzung enthält die ID des Produkts, das der Nutzer angeklickt hat, selbst wenn er danach zehn andere durchstöbert.
Hol dir die komplette KI-Anleitung für diese Methode
Die ganze Methode, 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.
Eine Datei, eine Liste. Ich schreibe nur, wenn es etwas zu lesen gibt.
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 brauchst 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 mit deinem Produktfeed (id → Titel, Preis, Kategorie), und der Report ist komplett. Anfrage, Produkt, Titel, Conversions und Umsatz in einer Tabelle.
Verifiziert, nicht theoretisiert
Wir haben das im Live-Konto eines tschechischen Elektronikhändlers mit 22 aktiven Shopping-Kampagnen ausgerollt. Sieben Tage später habe ich GA4 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 und ergaben so einen funktionierenden 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 ins Auge:
Die Feed-Roadmap schreibt sich von selbst. Ich baue seit zwei Jahren ein KI-Tool zur Feed-Anreicherung, und ehrlich gesagt ist die Schwäche der ganzen Kategorie der Wirkungsnachweis. Dieser Report löst das. Schreib den Titel so um, dass er zu der Nachfrage passt, die du gerade bewiesen hast, und beobachte dann, wie sich CTR und Conversion-Rate pro Anfrage bewegen. KI-Feed-Anreicherung ist dann keine Vertrauenssache mehr, sondern ein messbarer Kreislauf.
2 · Wer noch auf „deiner“ Anfrage ist, und mit welchem Produkt
Eines kannst du nicht: negative Keywords pro Produkt 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 dazu. Ich nutze dafür den serp/google/organic/live/advanced-Endpoint von DataForSEO. 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 sowie organische Ergebnisse 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 $, ohne etwaige Aufpreise für erweiterte Parameter.
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 einer Gebotsstrategie verschieben, die 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 Gebotsentscheidungen
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 statt Bauchgefühl.
4 · Ein Gesundheitscheck für PMax
PMax sagt dir fast nichts über Search. Näher als mit diesem Report kommst du an ein Audit nicht heran: 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. Jetzt kommt das Wie: was du herunterlädst, worauf du schaust und welche echte Zahl am Ende herauskommt.
Die Daten in diesem Abschnitt stammen aus einem zweiten Konto, einem mittelgroßen tschechischen Onlineshop im Schnäppchen-Segment. Der Shop ist nicht der Elektronikhändler aus der GA4-Box oben. Ich habe diesen Shop ausgewählt, weil sein Katalog breit genug ist, dass jedes Muster in vollem Umfang auftaucht. Den rohen Shopping-Suchbegriffe-Report dieses Kontos habe ich ü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 Produktgruppenebene zeigen die folgenden Zahlen deutlich, wohin die Ausgaben tatsächlich fließen.
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 zum Kurs von ~25 CZK/EUR umgerechnet.
Schritt 1 · Zieh den Rohreport und miss den Haufen
Exportier den Shopping-Suchbegriffe-Report über die Google Ads API (search_term_view) in ein beliebiges System, in dem du GROUP BY ausführen kannst, zum Beispiel 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. Diese beiden Zahlen haben genau eine Aufgabe: die Vorstellung zu begraben, jede einzelne Zeile manuell zu prüfen. Der einzige Weg nach vorn besteht darin, die Daten nach der Dimension zusammenzufassen, die die Rechnungen zahlt.
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 können nicht konvertieren. Sie sind Rauschen, das die Tabelle furchteinflößend aussehen lässt.
WHERE clicks > 0 dampft die Tabelle auf 738.444 Zeilen ein, 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 in ein neues Licht rückt
Sortier die geklickten Zeilen in zwei Gruppen: „mindestens einmal konvertiert“ und „nie konvertiert“. Summier dann die Kosten jeder Gruppe. Genau diese Aufteilung macht aus „das Konto ist okay, ROAS 6,8“ ein „der Großteil des Budgets tut nichts“. 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. Das ist das größte Problem im Konto. Und du konntest es nur sehen, weil du jede Anfrage auf die Produktgruppe eingedampft hast, unter der sie ausgeliefert wurde.
Schritt 4 · Prüf, ob hinter der Verschwendung ein paar Schurken stecken oder die ganze Menge
Sortier die geklickten Zeilen nach Kosten, nimm die obersten 1 % und 10 % und miss ihren Anteil an den Gesamtkosten. 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 Verschwendung ist dünn verteilt. Die obersten 1 % der teuren Zeilen machen kaum ein Zehntel der Kosten aus, also ändert das Pausieren von 20 schlechten Anfragen nichts. Statt einzelnen Anfragen hinterherzujagen, bring die Struktur in Ordnung: entscheide, welche Produkte in welcher Kampagne mit welchem Ziel laufen. 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 gleicht eine Anfrage mit den Signalen deines gesamten Feeds ab, nicht mit der Relevanz eines einzelnen Produkts. Eine einzelne Anfrage streut quer durch völlig fremde 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. Die Anfrage „lego technic“ wurde unter 300 verschiedenen Anzeigen- und Produktgruppen ausgeliefert.
Anfrage-Streuung über den Katalog
- Eindeutige Suchbegriffe, die unter mehr als einer Produktgruppe ausgeliefert wurden 46,7 % von 5.370.131
- 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. Daher kommt die Null-Conversion-Bremse aus Schritt 3. Und genau das ist es, was 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, unter der sie ausgeliefert wurde. Die aggregierten Zahlen zeigen das Ausmaß des Problems. Diese drei Zeilen legst du deinem Chef vor:
| Suchanfrage | Ausgeliefert unter Produktgruppe | Klicks | Kosten | Conv. |
|---|---|---|---|---|
| Hunde-Trainingshalsband | Handtaschen | 97 | 11 € | 0 |
| Anti-Bell-Gerät | Babyartikel | 76 | 9,60 € | 0 |
| lego technic | Beleuchtung | 70 | 6,80 € | 0 |
Die Anfrage „Hunde-Trainingshalsband“ wurde unter der Gruppe Handtaschen ausgeliefert. Die Anfrage „Anti-Bell-Gerät“ lief unter Babyartikel. Die Produktgruppe hat nichts mit der Anfrage zu tun. Google glich die Anfrage mit groben Feed-Signalen ab, 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 der Lohn: 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. Die ganze Arbeit besteht darin, diese 0,25 % zu finden, ihr Budget zu schützen und alles andere so umzustrukturieren, dass es nicht mehr um dasselbe Geld konkurriert. Und nichts davon funktioniert, solange nicht jede Zeile das Produkt nennt, dessen Anzeige angeklickt wurde. Diese Angabe stammt aus genau einer Quelle: dem Parameter utm_content={product_id}, den du am Anfang eingerichtet hast.
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.
Eine Datei, eine Liste. Ich schreibe nur, wenn es etwas zu lesen gibt.
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 tatsächlich etwas kaputt macht, 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. Nach 7 Tagen Datenerfassung hatte unser Konto einen brauchbaren Report. Ein kleineres Konto sollte 30 Tage 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.