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 query × prodotto che Google ha ritirato, unendo sessionManualAdContent con sessionGoogleAdsQuery. Su un account reale quella vista ha rivelato che l'85% della spesa passava per coppie che non hanno mai convertito. Lo 0,25% di coppie che ha convertito girava a 46,8× di ROAS e portava tutti i ricavi.
Vuoi solo il metodo distillato?
Scarica le istruzioni complete per l'AI — un file che incolli in Claude o in qualsiasi agente di coding capace, ed estrae il report query × prodotto dal tuo account. Lascia la tua email e il file è tuo — oppure continua a leggere qui sotto.
Un file, una lista. Scrivo solo quando c'è qualcosa che vale la pena leggere.
Un cliente una volta mi ha fatto una domanda che dovrebbe avere una risposta in un clic. Qualcuno ha cercato «aspirapolvere senza filo sotto i 200», ha cliccato sull’annuncio Shopping e l’account ha pagato. Su quale dei 5.000 prodotti del feed è atterrato quel clic? Ho aperto il report sui termini di ricerca, poi quello dei prodotti, e non c’era modo di collegarli. E ancora oggi non c’è. Google ti mostra la query e ti mostra il prodotto, ma mai insieme.
Anni fa la vecchia API di AdWords ti dava esattamente questa coppia. Poi è sparita in silenzio, e nessuna impostazione, nessun report, nessun campo API la riporta indietro. Per un negozio online quel buco non è un dettaglio. È nel legame tra query e prodotto che vive la vera ottimizzazione: ti dice se i tuoi titoli corrispondono alla domanda reale, quali prodotti attirano traffico spazzatura e perché un prodotto riceve clic ma non converte mai.
Dodici anni a sviluppare sulla Google Ads API mi hanno insegnato che quando Google ritira un report, non torna. Così l’ho ricostruito da solo, e la ricostruzione è quasi imbarazzantemente semplice. Un parametro URL. Entro una settimana, GA4 ti consegna ogni clic a pagamento accoppiato come query × prodotto, con tanto di sessioni, conversioni e ricavi. La configurazione richiede pochi minuti; il resto dell’articolo ti mostra cosa fare con i dati che ottieni.
La soluzione: un parametro, due dimensioni GA4
Aggiungi un tracking template
Imposta {lpurl}?utm_content={product_id} sulle tue campagne Shopping e PMax. La variabile ValueTrack {product_id} invia l’ID prodotto di 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 nella stessa sessione.
Unisci le due dimensioni
Ogni clic a pagamento diventa una coppia query × prodotto, con tanto di sessioni, tasso di conversione e ricavi.
L’auto-tagging e l’UTM manuale non si pestano i piedi. Il 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.
- Circa il 20% dei clic non si accoppierà. A mancare sono le sessioni con consenso rifiutato, le superfici PMax senza alcuna query (Display, YouTube, Gmail) e i clic che non hanno mai attivato analytics.
- Un solo prodotto per sessione. La sessione porta l’ID del prodotto su cui l’utente ha cliccato, anche se poi ne sfoglia altri dieci.
Ottieni le istruzioni AI complete per questo metodo
L'intero metodo, riscritto come brief che puoi incollare direttamente in Claude o in qualsiasi agente di coding capace. Imposta il tracking template, estrae il report query × prodotto da GA4 ed esegue le aggregazioni sul tuo account. Dentro trovi anche il template e le sue tre trappole. Lascia la tua email e il file è tuo.
Un file, una lista. Scrivo solo quando c'è qualcosa che vale la pena leggere.
Tirare fuori il report da GA4
Nell’interfaccia di GA4, apri Esplora e costruisci una tabella in formato libero. Le dimensioni sono Session manual ad content e Session Google Ads query. Le metriche sono le sessioni, gli eventi chiave (prima conversioni) e i ricavi da acquisto. Filtra su origine/mezzo della sessione uguale a google / cpc.
Per qualsiasi cosa seria vorrai la Data API, perché questo report appartiene a una dashboard o a un join in BigQuery, non a una scheda del browser:
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"),
)),
)
Unisci sessionManualAdContent al tuo feed dei prodotti (id → titolo, prezzo, categoria) e il report è completo. Query, prodotto, titolo, conversioni e ricavi in un’unica tabella.
Verificato, non teorizzato
Lo abbiamo messo in produzione sull’account reale di un retailer di elettronica ceco con 22 campagne Shopping attive. Sette giorni dopo ho controllato GA4:
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 disallineamento del titolo
Metti accanto al titolo e alla descrizione le query che li hanno attivati. Il disallineamento salta all’occhio:
La roadmap del feed si scrive da sola. Ho passato gli ultimi due anni a costruire uno strumento di arricchimento feed con l’AI e, a essere sincero, il punto debole dell’intera categoria è la difficoltà di dimostrarne l’impatto. Questo report risolve il problema. Riscrivi il titolo perché rispecchi la domanda che hai appena dimostrato, poi guarda CTR e tasso di conversione muoversi per query. L’arricchimento del feed con l’AI smette di essere qualcosa da prendere sulla fiducia e diventa un loop misurabile.
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 né in Shopping né in PMax. Quindi quando una coppia query × prodotto rende poco, chiedersi come escluderla non porta da nessuna parte. La domanda produttiva è perché rende poco.
Prendi la query e fai lo scraping della pagina dei risultati live. Io uso l’endpoint serp/google/organic/live/advanced di DataForSEO. Un POST con il testo della query e il location_code del tuo mercato restituisce l’intera pagina dei risultati come JSON strutturato: annunci a pagamento, blocchi Shopping con nomi dei merchant e prezzi, e i risultati organici sotto. DataForSEO fattura per SERP, e una SERP copre fino a 10 risultati. Al prezzo base attuale di circa 0,002 $ per SERP, controllare 200 query a profondità predefinita costa circa 0,40 $, senza contare i parametri avanzati a pagamento.
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 della stessa categoria a metà del tuo prezzo. Il prodotto va bene. Il prezzo perde quella specifica asta.
Ora hai opzioni reali. Ritocca il prezzo. Porta il fattore differenziante nel titolo («imbottitura in piuma, comfort −15 °C»). Sposta il prodotto in una campagna con offerte che corrispondono al suo margine reale. Oppure accetta la query come upper-funnel e giudicala 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 fonda la segmentazione Shopping su prove invece che sull’istinto.
4 · Un check di salute per PMax
PMax non ti dice quasi nulla sulla ricerca. Questo report è la cosa più vicina che avrai 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é. Quello che segue è il come: cosa scarichi, cosa guardi e il numero reale che ne esce.
I dati di questa sezione vengono da un secondo account, un negozio online ceco di medie dimensioni nel segmento discount. Il negozio non è il retailer di elettronica del box GA4 qui sopra. Ho scelto questo negozio perché il suo catalogo è abbastanza ampio da far emergere ogni pattern a piena scala. Ho estratto il suo report grezzo sui termini di ricerca Shopping tramite la Google Ads API in una tabella SQLite locale e ho eseguito le aggregazioni qui sotto. Prima una precisazione. Il report grezzo ti dà il gruppo di annunci o il gruppo di prodotti sotto cui la query è stata servita, non il singolo prodotto. È esattamente il gap che il trucco dell’UTM chiude. Ma anche a livello di gruppo di prodotti, i numeri qui sotto mostrano chiaramente dove finisce davvero la spesa.
Fonte per ogni numero di questa sezione: report sui termini di ricerca Shopping di Google Ads, un account di negozio online ceco di medie dimensioni, ~22,6 mln di righe, dati estratti ad aprile 2026. Importi convertiti da CZK al cambio di ~25 CZK/EUR.
Passo 1 · Estrai il report grezzo e misura il mucchio
Esporta il report sui termini di ricerca Shopping tramite la Google Ads API (search_term_view) in qualsiasi sistema su cui puoi eseguire GROUP BY, come SQLite o BigQuery. Prima di unire o filtrare qualsiasi cosa, esegui un semplice COUNT(*) e un paio di SUM. Devi sentire quanto è grande e rumoroso il mucchio grezzo, perché quel singolo fatto ricalibra ogni aspettativa che segue:
Il mucchio grezzo, un COUNT e 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 complessivo 6,8×) 103.000 € / 697.000 €
22,6 milioni di righe, 5,4 milioni di query uniche. Nessun umano le legge. Quei due conteggi servono a dimostrare una cosa: controllare ogni riga a mano è impraticabile. L’unico modo per procedere è aggregare le righe in base alla dimensione che paga le bollette.
Passo 2 · Butta via il 96% prima di analizzare qualsiasi cosa
Conta le righe con zero clic, poi filtrale via. Il report sui termini di ricerca Shopping registra ogni query per cui il tuo annuncio è apparso, e la maggior parte di quelle query nessuno le ha mai cliccate. Le righe di sole impressioni non possono costarti né convertire. Sono rumore che fa sembrare la tabella spaventosa.
WHERE clicks > 0 riduce la tabella a 738.444 righe, una dimensione su cui puoi davvero lavorare.
L'inondazione di impressioni
- Righe con zero clic (pure impressioni) 21.902.272 (96,7%)
- Righe che sono arrivate a costare qualcosa 738.444 (3,3%)
Il 96,7% del numero spaventoso non è mai stato altro che rumore. Filtra sulle righe cliccate prima di analizzare qualsiasi cosa, e tutte le aggregazioni che seguono si calcolano solo sulla parte che spende davvero soldi.
Passo 3 · Poni l’unica domanda che cambia il modo in cui vedi l’account
Dividi le righe cliccate in due gruppi: quelle che hanno convertito almeno una volta e quelle che non hanno mai convertito. Poi somma il costo di ciascun gruppo. È questa suddivisione a trasformare «l’account va bene, il ROAS è 6,8» in «la maggior parte del budget non fa nulla». Calcolala 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 88.000 €
- Delle sole righe cliccate, quota con zero conversioni 92,3%
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. È il problema più grosso dell’account. E hai potuto vederlo solo perché hai ridotto ogni query al gruppo di prodotti sotto cui è stata servita.
Passo 4 · Verifica se lo spreco è di pochi colpevoli o di tutta la folla
Ordina le righe cliccate per costo, prendi il top 1% e il top 10%, e misura la loro quota di spesa totale. Questo decide la tua tattica. Se una manciata di termini brucia il budget, li metti in pausa e hai finito. Se lo spreco è diffuso, mettere in pausa i termini è inutile e 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
Lo spreco è diffuso. Il top 1% delle righe costose vale a malapena un decimo della spesa, quindi mettere in pausa 20 termini cattivi non cambia nulla. Invece di inseguire singole query, sistema la struttura: decidi quali prodotti stanno in quale campagna e con quale target. E ricorda 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
Per ogni query di ricerca, conta sotto quanti gruppi di prodotti distinti è stata servita. Questo spiega lo spreco a livello meccanico. Shopping abbina una query ai segnali del tuo intero feed, non alla pertinenza di un singolo prodotto. Una singola query si disperde in angoli del tuo catalogo che non c’entrano niente, e tu paghi ogni colpo a vuoto.
Un caso concreto dall’account. La query «dissuasore antiabbaio» continuava a bruciare budget, così ci ho fatto sopra un COUNT(DISTINCT ad_group). Era stata servita sotto 139 diversi gruppi di annunci e di prodotti, per 39 € e circa zero conversioni. La query «lego technic» è stata servita sotto 300 diversi gruppi di annunci e di prodotti.
Dispersione della query nel catalogo
- Query di ricerca distinte servite sotto più di un gruppo di prodotti 46,7% di 5.370.131
- Massimo numero di gruppi di prodotti raggiunti da una singola query 6.661
- «dissuasore antiabbaio» → gruppi / costo / conversioni 139 / 39 € / ~0
Quasi metà delle query è spalmata su più gruppi di prodotti, e le peggiori ne raggiungono migliaia. È da lì che viene il peso morto a conversione zero del passo 3. Ed è proprio la cosa che puoi finalmente vedere una volta che ogni clic porta il suo ID prodotto.
Passo 6 · Dai un’occhiata ai disallineamenti peggiori, perché sono assurdi
Estrai le righe a costo più alto che non hanno mai convertito e leggi la query accanto al gruppo di prodotti sotto cui è stata servita. I numeri aggregati quantificano il problema. Queste sono le tre righe da mostrare al tuo capo:
| Query di ricerca | Servita sotto il gruppo di prodotti | Clic | Costo | Conv. |
|---|---|---|---|---|
| collare addestramento cane | Borse | 97 | 11 € | 0 |
| dissuasore antiabbaio | Prodotti per bambini | 76 | 9,60 € | 0 |
| lego technic | Illuminazione | 70 | 6,80 € | 0 |
La query «collare addestramento cane» è stata servita sotto il gruppo Borse. La query «dissuasore antiabbaio» è stata servita sotto Prodotti per bambini. Il gruppo di prodotti non ha nulla a che fare con la query. Google ha abbinato la query a segnali ampi del feed, ha raccolto il clic e ha addebitato l’account. Con query × prodotto vedi tutto questo in un colpo d’occhio; con il report standard di Google non lo vedrai mai. (Categorie tradotte e anonimizzate.)
Passo 7 · Ora la ricompensa: lo 0,25% che paga l’intero account
Inverti il passo 3. Isola solo le righe che hanno convertito e somma il loro costo e i loro ricavi. È 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 14.900 €
- Quanto hanno reso 697.000 €
- ROAS su quella fetta 46,8×
Lo 0,25% delle righe gira a 46,8× di ROAS e di fatto regge l’account. Il restante 99,75% fa scendere il ROAS complessivo a 6,8×. L’intero lavoro consiste nell’individuare proprio quello 0,25%, proteggerne il budget e ristrutturare tutto il resto affinché smetta di competere per gli stessi soldi. Niente di tutto questo funziona finché ogni riga non identifica il prodotto dell’annuncio su cui l’utente ha cliccato. A fornire quell’identificazione è un solo elemento: il parametro utm_content={product_id} impostato all’inizio.
Scarica le istruzioni complete per la tua AI
L'intero metodo qui sopra, riscritto come brief che puoi incollare direttamente in Claude o in qualsiasi agente di coding capace. Imposta il tracking template, estrae il report query × prodotto da GA4 ed esegue le aggregazioni sul tuo account. Dentro trovi anche il template e le sue tre trappole. Lascia la tua email e il file è tuo.
Un file, una lista. Scrivo solo quando c'è qualcosa che vale la pena leggere.
FAQ
Funziona per Performance Max?
Sì, per la superficie Search e Shopping. I clic su Display, YouTube e Gmail portano l’ID prodotto ma nessuna query, quindi 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 e campagna; tu aggiungi solo l’ad content. Ciò che manderebbe tutto all’aria è un parametro personalizzato dentro utm_campaign, quindi non metterne mai uno lì.
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, perché 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 sui termini di ricerca, senza prodotti.
Il pattern funziona fuori da Google, per esempio Bing o Sklik?
Sì. Il pattern si trasferisce a 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 dopo 7 giorni di dati. Per un account più piccolo ne servono 30.
CTA: Quali dei tuoi prodotti si guadagnano i loro clic e quali ti mandano solo il conto? Aggiungi il parametro oggi e tra una settimana lo saprai. Oppure mandami il tuo account e leggiamo il report insieme.