Approfondimento· Shopping & PMax · 13 min di lettura

Il report delle query di ricerca Shopping che Google non ti dà

I report Shopping e PMax mostrano la query ma mai il prodotto. Ricostruisci il report mancante query × prodotto con un parametro URL e due dimensioni GA4.

Illustrazione che accosta una pila di query di ricerca a un singolo prodotto, l'anello mancante che i report di Google nascondono.
I fatti seri sono veri — le copertine degli articoli no.

In breve: I report Shopping e PMax mostrano la query ma nascondono il prodotto. Aggiungi un parametro URL — {lpurl}?utm_content={product_id} — ed entro una settimana GA4 ti consegna il report ritirato query × prodotto unendo sessionManualAdContent con sessionGoogleAdsQuery. Su un account reale ha rivelato l'85% della spesa che scorreva in coppie a conversione zero e una fetta dello 0,25% che reggeva l'intero account a 46,8× ROAS.

78 %
dei clic abbinati query × prodotto
22
campagne aggiornate
1
parametro URL — è tutto lo stack
7 giorni
fino a dati verificati in GA4

Aggiungi un parametro URL alle tue campagne Shopping e Performance Max e, entro una settimana, GA4 ti consegna il report che Google ha ritirato in silenzio: ogni clic a pagamento accoppiato come query × prodotto — con sessioni, conversioni e ricavi attaccati. Quella singola coppia è dove si nascondono i soldi — quali prodotti attirano traffico spazzatura, quali titoli mancano la domanda reale, quali query bruciano budget e non vendono mai. La costruzione è quell’unico parametro; il resto di questo articolo è cosa fai con ciò che torna indietro.

Se gestisci campagne Shopping o Performance Max, conosci il report delle query di ricerca. Ciò che potresti non aver notato — perché Google non te lo fa mai notare — è cosa manca: il prodotto.

Vedi che qualcuno ha cercato “aspirapolvere senza filo sotto i 200”. Vedi clic e costo. Non vedi quale dei tuoi 5.000 prodotti quella query ha attivato, su quale è atterrata o quale ha venduto.

Anni fa, l’API di AdWords ti dava questa coppia. Oggi non lo fa più. E per un account e-commerce non è un gap cosmetico — query-prodotto è dove vive la vera ottimizzazione: se i tuoi titoli corrispondono alla domanda reale, quali prodotti attirano traffico spazzatura, perché un prodotto riceve clic ma non converte mai.

Prima che tu lo chieda: no, non c’è alcuna impostazione per questo. Nessun report, nessun campo API, nessuno script che lo riporti indietro dal lato di Google. Devi ricostruirlo da te — e la ricostruzione è quasi imbarazzantemente semplice.

La soluzione: un parametro, due dimensioni GA4

Aggiungi un tracking template

Sulle tue campagne Shopping e PMax: {lpurl}?utm_content={product_id}. La variabile ValueTrack {product_id} invia l’ID prodotto Merchant Center a ogni clic.

GA4 memorizza il prodotto

L’UTM atterra nella dimensione Session manual ad content (sessionManualAdContent).

GA4 conosce già la query

L’auto-tagging (gclid) riempie sessionGoogleAdsQuery sulla stessa sessione.

Unisci le due dimensioni

Ogni clic a pagamento diventa una coppia query × prodotto — con sessioni, tasso di conversione e ricavi attaccati.

L’auto-tagging e l’UTM manuale non si pestano i piedi: gclid continua a gestire origine, mezzo e campagna; il tuo UTM porta solo l’ID prodotto.

Sappi cosa stai ottenendo (e cosa no)

  • Solo query cliccate. Questo dataset parte dal clic. Le query per cui il tuo annuncio è apparso ma nessuno ha cliccato non arrivano mai a GA4 — l’analisi a livello di impressione resta nel report standard di Google (senza prodotti).
  • ~20% dei clic non si accoppia: sessioni con consenso rifiutato, superfici PMax senza alcuna query (Display, YouTube, Gmail), clic che non hanno mai attivato analytics.
  • Ambito di sessione. Una sessione = un ID prodotto — quello cliccato, anche se l’utente poi ne sfoglia altri dieci.

Tirare fuori il report da GA4

Nell’interfaccia: Esplora → formato libero. Dimensioni: Session manual ad content + Session Google Ads query. Metriche: sessioni, conversioni, ricavi da acquisto. Filtro: origine/mezzo sessione = google / cpc.

Tramite la Data API — per qualsiasi cosa seria, questo alimenta una dashboard o un join in BigQuery:

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

Unisci sessionManualAdContent al tuo product feed (id → titolo, prezzo, categoria) e il report è completo: query × prodotto × titolo × economia.

Verificato, non teorizzato

Lo abbiamo messo in produzione su un account reale — un retailer di elettronica ceco con 22 campagne Shopping attive — e abbiamo controllato GA4 sette giorni dopo:

GA4, 7 giorni dopo il deploy

  • Righe di traffico google/cpc 9.753
  • Con l'ID prodotto (utm_content) 96 %
  • Con la query di ricerca (sessionGoogleAdsQuery) 81 %
  • Con entrambi — un report query × prodotto funzionante 78 %

Ora la parte divertente: cosa ti dicono le coppie

1 · Il title gap

Metti le query accanto al titolo e alla descrizione che hanno attivato. Il disallineamento salta all’occhio:

What people actually search
aspirapolvere senza filo peli animaliaspirapolvere per peli di cane allergiaanimali domestici aspirapolvere silenziosomiglior aspirapolvere peli animali 2026
What the title says
Vacuum X300 Turbo 2000W — EAN 8595…
Descrizione: "Aspirapolvere di alta qualità con design moderno e accessori ricchi."
The gap: Il titolo vende watt che nessuno cerca e manca il caso d'uso peli animali che cercano tutti. (Esempio illustrativo.)

La roadmap del feed si scrive da sola. Ed è qui che l’arricchimento del feed con l’AI smette di essere un atto di fede e diventa un loop misurabile: riscrivi il titolo attorno alla domanda che hai appena dimostrato, poi guarda CTR e tasso di conversione per query muoversi.

2 · Chi altro c’è sulla “tua” query — e con quale prodotto

Una cosa che non puoi fare: aggiungere parole chiave escluse per prodotto. Google non ti dà questa leva in Shopping o PMax. Quindi quando una coppia query × prodotto rende poco, la domanda non è “come la escludo” — è “perché rende poco”.

Prendi la query e fai lo scraping della pagina dei risultati live per essa. Concretamente: DataForSEO, endpoint serp/google/organic/live/advanced — un POST con il testo della query e il location_code del tuo mercato, e ti restituisce l’intera pagina dei risultati come JSON strutturato: annunci a pagamento, blocchi shopping con nomi dei merchant e prezzi, organico sotto. A ~0,0035 $ per query, controllare 200 query costa circa 0,70 $.

Un risultato tipico: il tuo sacco a pelo di fascia media raccoglie clic su una query generica — e la stessa query mostra tre brand economici nella stessa categoria a metà del tuo prezzo. Il tuo prodotto non è scadente; è battuto sul prezzo in quella specifica asta.

Ora hai opzioni reali: ritoccare il prezzo; portare il fattore differenziante nel titolo (“imbottitura in piuma, comfort −15 °C”); spostare il prodotto in una campagna con una strategia di offerta che corrisponde alla sua realtà di margine; o accettare la query come upper-funnel e giudicarla sulle metriche assistite invece che sull’ultimo clic.

3 · Decisioni di struttura e di offerte

I prodotti che attirano query ad alto intento meritano i propri gruppi di asset e budget. I prodotti che raccolgono solo traffico generico stanno nei gruppi catch-all con target conservativi. Questo report è la base di prove per la segmentazione shopping — non l’istinto.

4 · Un check di salute per PMax

PMax ti dice quasi nulla sulla rete di ricerca. Questo report è la cosa più vicina che otterrai a un audit di ciò che PMax compra davvero per te sulla superficie search — per prodotto.

Guardami percorrere un export reale, passo per passo

Tutto ciò che precede è il perché. Ecco il com’è davvero — ogni passo, cosa scarichi, cosa fissi e il numero reale che torna indietro.

I dati sono di un secondo account: un diverso e-shop ceco di medie dimensioni (non il retailer di elettronica del box GA4 qui sopra — lo uso perché il suo catalogo è abbastanza ampio da far emergere ogni pattern a pieno regime). Ho estratto il suo report grezzo delle query di ricerca Shopping tramite la Google Ads API in una tabella SQLite locale e ho eseguito le aggregazioni qui sotto. Una precisazione prima: questo report grezzo ti dà il gruppo di annunci / gruppo di prodotti sotto cui la query è stata servita, non il singolo prodotto. È esattamente il gap che chiude il trucco dell’UTM — ma anche a livello di gruppo di prodotti, gli output intermedi sono abbastanza eloquenti da rendere l’idea.

Fonte per ogni numero in questa sezione: report delle query di ricerca Shopping di Google Ads, un account e-shop ceco di medie dimensioni, ~22,6 mln di righe, dati estratti ad aprile 2026.

Passo 1 · Estrai il report grezzo e misura il mucchio

Cosa fai: esporta il report delle query di ricerca Shopping tramite la Google Ads API (search_term_view) in una tabella locale — SQLite o BigQuery, qualsiasi cosa su cui tu possa eseguire GROUP BY. Perché per primo: prima di unire qualunque cosa, devi sentire quanto è grande e quanto è rumoroso il mucchio grezzo. Quel singolo fatto azzera ogni aspettativa che segue.

Esegui un semplice COUNT(*) e un paio di SUM ed ecco cosa atterra:

Il mucchio grezzo — un COUNT, tre SUM

  • Righe del report (query × gruppo di prodotti) 22.640.716
  • Query di ricerca distinte 5.370.131
  • Gruppi di prodotti sotto cui sono state servite 10.393
  • Spesa / ricavi (ROAS misto 6,8×) 2,57 mln / 17,4 mln CZK

Cosa hai ottenuto: 22,6 milioni di righe, 5,4 milioni di query uniche. Nessun umano le legge. L’unico compito del numero è dirti la mossa successiva — collassa questo mucchio in base alla dimensione che paga le bollette — e avvertirti che qualsiasi triage manuale riga per riga è senza speranza.

Passo 2 · Butta via il 96% prima di analizzare qualsiasi cosa

Cosa fai: conta le righe con zero clic, poi filtrale via. Perché: il report delle query di ricerca Shopping registra ogni query per cui il tuo annuncio è apparso, la maggior parte delle quali nessuno ha cliccato. Quelle righe di sole impressioni non possono costarti né convertire — sono rumore che fa sembrare la tabella spaventosa.

Situazione: 22,6 mln di righe, non sai da dove iniziare. Azione: WHERE clicks > 0. Risultato: la tabella collassa a 738.444 righe — una dimensione gestibile.

L'inondazione di impressioni

  • Righe con zero clic (pure impressioni) 21.902.272 — 96,7 %
  • Righe che hanno speso anche solo una corona 738.444 — 3,3 %

Cosa hai ottenuto: il 96,7% del numero spaventoso non è mai stato altro che rumore. Ora lavori su una tabella da 738K righe, non da 22,6 mln — e ogni aggregazione qui sotto gira sulla parte che spende davvero soldi.

Passo 3 · Poni l’unica domanda che riformula l’account

Cosa fai: sulle righe cliccate, dividi la spesa tra “convertito almeno una volta” e “mai convertito”, e somma il costo di ciascuna. Perché: questo è il numero che trasforma “l’account va bene, il ROAS è 6,8” in “la maggior parte del budget non fa nulla”. È l’output intermedio di punta — calcolalo prima di qualsiasi idea di ottimizzazione.

Il peso morto a conversione zero

  • Righe del report che hanno convertito zero volte 99,75 %
  • Quota della spesa totale che quelle righe si sono mangiate 85,5 %
  • Spesa senza alcuna conversione dietro 2,20 mln CZK (~88k €)
  • Delle sole righe cliccate, quota con zero conversioni 92,3 %

Cosa hai ottenuto: l’85% del budget è fluito attraverso combinazioni query × gruppo di prodotti che non hanno convertito nemmeno una volta. Non è un errore di arrotondamento da ottimizzare dopo — è l’evento principale. E hai potuto vederlo solo perché hai collassato la query fino al prodotto a cui era abbinata.

Passo 4 · Verifica se lo spreco è qualche cattivo o tutta la folla

Cosa fai: ordina le righe cliccate per costo, prendi il top 1% e il top 10%, e vedi quanta spesa totale tengono. Perché: questo decide la tua tattica. Se una manciata di termini brucia il budget, li metti in pausa e hai finito. Se lo spreco è distribuito in modo sottile, mettere in pausa i termini è inutile — ti servono correzioni strutturali.

Dove sta davvero la spesa sprecata

  • Top 1% delle righe cliccate per costo 10,5 % della spesa
  • Top 10% delle righe cliccate per costo 29,8 % della spesa

Cosa hai ottenuto: il peso morto è long-tail, non qualche colpevole — il top 1% delle righe costose tiene a malapena un decimo della spesa. Quindi mettere in pausa 20 termini cattivi non cambia nulla. Questa è la ragione supportata dai dati per sistemare la struttura (quali prodotti stanno in quale campagna con quale target) invece di inseguire singole query — e un promemoria che Google comunque non ti lascia nemmeno aggiungere una parola chiave esclusa per prodotto.

Passo 5 · Scopri perché la long tail perde: una query, molti prodotti

Cosa fai: per ogni query di ricerca, conta sotto quanti gruppi di prodotti distinti è stata servita. Perché: spiega lo spreco a livello meccanico. Shopping abbina una query ai segnali del tuo intero feed, non alla pertinenza di un singolo prodotto — quindi una singola query si disperde tra angoli scorrelati del tuo catalogo, e tu paghi per ogni buco a vuoto.

Situazione: “dissuasore antiabbaio” continua a bruciare budget. Azione: COUNT(DISTINCT ad_group) per quel termine. Risultato: è stato servito sotto 139 diversi gruppi di annunci / prodotti per 976 CZK e ~0 conversioni. “lego technic” ne ha toccati 300.

Dispersione della query nel catalogo

  • Query distinte servite sotto più di un gruppo di prodotti 46,7 %
  • Massimo numero di gruppi di prodotti raggiunti da una singola query 6.661
  • "dissuasore antiabbaio" → gruppi / costo / conversioni 139 / 976 CZK / ~0

Cosa hai ottenuto: quasi metà delle tue query è spalmata su più gruppi di prodotti, e i peggiori ne raggiungono migliaia. È questo il motore del peso morto a conversione zero del Passo 3 — e proprio la cosa che puoi finalmente vedere una volta che ogni clic porta il suo ID prodotto.

Passo 6 · Osserva i disallineamenti peggiori — sono assurdi

Cosa fai: estrai le righe a costo più alto che non hanno mai convertito e leggi la query accanto al gruppo di prodotti a cui è stata abbinata. Perché: i numeri aggregati convincono il tuo foglio di calcolo; queste tre righe convincono il tuo capo. Sono il volto leggibile dall’uomo del Passo 5.

Coppie query × gruppo di prodotti a conversione zero e costo più alto (tradotte e anonimizzate; illustrative delle righe reali).
Query di ricercaServita sotto il gruppo di prodottiClicCostoConv.
collare addestramento caneBorse97270 CZK0
dissuasore antiabbaioProdotti per bambini76239 CZK0
lego technicIlluminazione70169 CZK0

Una query per collare da addestramento pagata sotto il tuo gruppo Borse. Un dissuasore antiabbaio abbinato a Prodotti per bambini. Il gruppo di prodotti non ha nulla a che fare con la query — Google ha abbinato su segnali ampi del feed, ha raccolto il clic e te lo ha addebitato. Con query × prodotto vedi questo in un colpo d’occhio; con il report standard di Google non lo farai mai. (Esempio illustrativo — categorie tradotte e anonimizzate.)

Passo 7 · Ora la ricompensa: lo 0,25% che paga l’intero account

Cosa fai: inverti il Passo 3 — isola solo le righe che hanno convertito e somma il loro costo e ricavo. Perché: è la ragione per cui l’intero esercizio conta. Una volta che puoi separare i vincitori dal peso morto, proteggi i vincitori e affami il resto.

La fetta che si guadagna il pane

  • Righe che hanno convertito (quota di tutte le righe) 57.209 — 0,25 %
  • Quanto sono costate 372k CZK (~14,9k €)
  • Quanto hanno reso 17,4 mln CZK (~697k €)
  • ROAS su quella fetta 46,8×

Cosa hai ottenuto: un quarto dell’uno percento delle righe gira a 46,8× ROAS e di fatto regge l’account; l’altro 99,75% trascina il dato misto giù a 6,8×. Trovare quella fetta, proteggerne il budget e strutturare tutto il resto lontano da essa è l’intero lavoro — e niente di tutto questo è possibile finché ogni riga non porta il prodotto a cui è stata abbinata. È questo che ti compra l’UTM a un parametro all’inizio di questo articolo.

The part you can steal

Il template + le tre trappole

{lpurl}?utm_content={product_id}
  1. Non mettere un parametro personalizzato in utm_campaign. Google Ads sanitizza i valori dei parametri personalizzati — i nomi delle tue campagne vengono riscritti e la continuità storica di GA4 si rompe. Invia solo utm_content; all’auto-tagging pensa il resto.
  2. Applica solo alle campagne Shopping + PMax ATTIVE. La rete di ricerca non ne ha bisogno; le campagne in pausa inquinano solo la cronologia delle modifiche.
  3. Trabocchetto API: stai facendo il deploy in modo programmatico? Le versioni recenti della Google Ads API hanno rimosso client.get_type(“FieldMask”) — importa invece field_mask_pb2.FieldMask.

FAQ

Funziona per Performance Max?

Sì, per la superficie search/shopping. I clic su Display, YouTube e Gmail portano l’ID prodotto ma nessuna query — aspettati che quelle righe abbiano la dimensione query vuota.

L'UTM romperà la mia attribuzione GA4?

No. L’auto-tagging (gclid) continua a gestire origine/mezzo/campagna; tu aggiungi solo l’ad content. Ciò che romperebbe le cose è un parametro personalizzato dentro utm_campaign — non farlo.

Perché solo il 78% di copertura?

La modalità consenso, le superfici PMax senza query e i blocker analytics si mangiano il resto. Il 78% basta e avanza per ogni caso d’uso qui sopra — stai leggendo pattern, non controllando i centesimi.

Posso vedere le query per cui il mio annuncio è apparso ma nessuno ha cliccato?

No. Questo dataset parte dal clic. L’analisi a livello di impressione resta nel report standard delle query di ricerca — senza prodotti.

Il pattern funziona fuori da Google — Bing, Sklik?

Sì, è trasferibile: qualsiasi piattaforma con un template URL, una macro di prodotto e una dimensione analytics per catturarla. Le macro specifiche cambiano da piattaforma a piattaforma.

Quanto ci vuole prima di avere dati utilizzabili?

Dipende dal volume. Il nostro account aveva un report utilizzabile in 7 giorni; gli account più piccoli dovrebbero raccoglierne 30.

Il senso di tutto questo

Vuoi questo livello di visibilità nel tuo account?

Una sola e-mail. Ti dirò onestamente se ne vale la pena per il tuo setup.

Contattami →