Vai al contenuto principale
enricomorano.it/blog/combinazioni-prestashop-chatgpt← ../
Combinazioni PrestaShop e ChatGPT: quale prezzo legge l'AI
▸ Assistenza PrestaShop

Combinazioni PrestaShop e ChatGPT: quale prezzo legge l'AI

Su una scheda PrestaShop con combinazioni un crawler AI vede un prezzo solo, quello predefinito. L'ho misurato su un negozio reale: 9 combinazioni, 3 prezzi, 1 nell'HTML.

1 novembre 2026#prestashop#geo#ai#seo-tecnica#javascript

Su una scheda PrestaShop con combinazioni, un crawler AI che non esegue JavaScript vede un prezzo solo: quello della combinazione predefinita. Le altre varianti le vede come nomi in un menu a tendina, senza cifra accanto. L’ho misurato su un negozio di arredamento che seguo, su un letto matrimoniale con 9 combinazioni e tre prezzi diversi: nell’HTML che il server manda all’indirizzo della scheda c’è solo il più basso. Se un utente chiede a ChatGPT quanto costa la versione con contenitore, la risposta che ha a disposizione è sbagliata del 21%.

⚠️ Il caso che ha aperto la questione

Il 30 ottobre Hoa Cong di Seer Interactive ha pubblicato quello che ha registrato osservando ChatGPT mentre cerca sul web: le query che lancia, i risultati che riceve, le pagine che cita. Il campione è piccolo e lei lo dichiara (9 prompt, piano gratuito, modello mini), ma due casi sono istruttivi per chi vende online. Per una valigia la risposta indicava circa 72 dollari per la versione cabina, mentre la scheda prodotto collegata era quella del bagaglio da stiva, a 174,99: chi clicca trova un altro prodotto a un altro prezzo. E per due app di lingue i prezzi nella risposta non sono arrivati: in un caso erano caricati via JavaScript, nell’altro nell’HTML non c’erano proprio. Che sia stato il JavaScript a nasconderli, l’autrice lo indica come spiegazione probabile, non come prova.

Che i crawler delle AI scarichino il JavaScript senza eseguirlo non è una novità: l’ho già raccontato a proposito del limite dei 2 MB di Googlebot, con i dati di Vercel. La domanda che mi interessava era più stretta: su PrestaShop, dove le combinazioni sono la norma per arredamento, abbigliamento e ricambi, quale prezzo trova un bot che legge solo l’HTML?

🛠️ La misura su una scheda reale

Ho preso 30 schede a campione dalla sitemap di ciascuno di due negozi PrestaShop che seguo. Sul primo, un catalogo di attrezzatura, nessuna aveva combinazioni. Sul secondo, un arredamento online, 3 su 30. Ho tenuto quella con più varianti: un letto matrimoniale 160x200 con 3 colori e 3 tipologie di rete, quindi 9 combinazioni.

Il primo passo è stato aprire ogni combinazione e annotare il prezzo. Il secondo, scaricare con curl l’indirizzo canonico della scheda, quello senza combinazione, e cercare cosa ci fosse dentro.

Cosa c’è nella schedaNell’HTML della pagina canonicaLo legge un crawler AI
Nome, descrizione, immaginiSìSì
Nomi delle opzioni (Con rete, Contenitore, Contenitore doppia alzata, 3 colori)Sì, come voci di menu e pulsantiSì, ma senza prezzo accanto
Prezzo della combinazione predefinita, 446,64 €Sì, nel testo, nel microdata Offer e nel meta product:price:amountSì
Prezzo con contenitore, 565,54 €NoNo
Prezzo con contenitore doppia alzata, 666,67 €NoNo
Link alle altre combinazioniNo, la pagina linka solo la predefinitaNo
Dati strutturati JSON-LD di tipo ProductAssenti, il tema usa il microdataSolo il microdata con un’offerta

Le 9 combinazioni hanno tre prezzi: 446,64 € per le tre con rete, 565,54 € per le tre con contenitore, 666,67 € per le tre con contenitore doppia alzata. Nell’HTML canonico la cifra 565,54 e la cifra 666,67 non compaiono da nessuna parte.

Ho ripetuto lo scaricamento presentandomi come OAI-SearchBot, ChatGPT-User e ClaudeBot: stessa pagina, stessa dimensione, stesso prezzo. Il negozio non tratta i bot in modo diverso dalle persone, quindi il problema non è un blocco: è quello che la pagina contiene prima che qualcuno la tocchi.

I comandi per rifarlo sul tuo shop

Non serve niente di installato oltre a curl e grep. Prendi l’indirizzo di una scheda con combinazioni, quello che trovi nella sitemap o nel tag canonical:

URL="https://www.tuoshop.it/categoria/123-nome-prodotto.html"

# prezzi presenti nell'HTML del server
curl -s -A "Mozilla/5.0 (compatible; OAI-SearchBot/1.3)" "$URL" \
  | grep -o 'itemprop="price"[^>]*content="[^"]*"\|product:price:amount"[^>]*'

# combinazione che il server ha messo nella pagina (tema classic)
curl -s "$URL" | grep -o 'id_product_attribute":[0-9]*' | head -1

Se il terminale non fa per te, c’è il controllo equivalente dal browser: apri la scheda, tasto destro, “Visualizza sorgente pagina”, e cerca con Ctrl+F (Cmd+F su Mac) le cifre dei prezzi. La sorgente è l’HTML che manda il server, cioè quello che legge un crawler AI. Poi torna sulla scheda, cambia le opzioni una alla volta e segna i prezzi. Se il browser mostra cifre che il primo comando non ha trovato, quelle cifre per un crawler AI non esistono.

⚠️ Perché PrestaShop si comporta così

Non è un difetto di quel negozio: è il funzionamento del tema classic di PrestaShop 1.7 e 8, e di quello che ho misurato. I temi su misura e alcuni moduli possono cambiare le cose, quindi il controllo va rifatto sul tuo. PrestaShop costruisce la scheda sul server con la combinazione predefinita, quella che hai segnato come default nel back office. Quando il cliente cambia un’opzione, il tema chiede al server i dati della nuova combinazione e aggiorna prezzo, disponibilità e riferimento nella pagina. Su quel negozio il tema aggiorna anche l’indirizzo, che diventa qualcosa come /44079-25020-letto-...html#/..., e quell’indirizzo, aperto direttamente, il server lo restituisce con il prezzo giusto.

Il punto è che nessuno ci arriva senza JavaScript. La pagina canonica non contiene link a quegli indirizzi, e anche quando un indirizzo di combinazione viene aperto, il suo tag canonical rimanda alla scheda base. Per Google è la scelta corretta, perché altrimenti si troverebbe nove pagine quasi uguali da indicizzare, ma il risultato è che la versione “ufficiale” della scheda racconta una variante su nove.

Un crawler AI non clicca sul menu delle opzioni. Legge la scheda come la vede chi non ha ancora scelto niente, e la presenta come la scheda del prodotto.

⚠️ Cosa può sbagliare un’AI con quella pagina

Mettiti nei panni del modello davanti alla domanda “quanto costa il letto con contenitore?”. Ha una pagina che nomina l’opzione “Contenitore” e un solo prezzo, 446,64 €. La risposta più naturale è quella cifra, che sottostima il prezzo reale del 21% (565,54 €). Per la doppia alzata lo scarto sale al 33%: 220 euro di differenza fra quello che l’utente si aspetta e quello che trova nel carrello.

Non ho testato la risposta di ChatGPT su quel prodotto: le risposte cambiano da un giorno all’altro e un test singolo non dimostrerebbe niente. Quello che ho misurato è l’informazione disponibile, ed è l’informazione che Seer ha visto usare male in un caso identico. Per un negozio il danno non è la citazione mancata: è il cliente che arriva convinto di un prezzo e trova un’altra cifra, cioè il carrello abbandonato con un motivo in più.

Vale anche al contrario. Se la predefinita è la combinazione più cara, l’AI dirà che il prodotto costa più di quanto parte, e chi confronta più negozi in una sola risposta ti scarta prima ancora di visitarti.

✅ Come far leggere tutti i prezzi a chi non esegue JavaScript

La regola è una: quello che vuoi che un’AI sappia deve stare nell’HTML che il server manda all’indirizzo canonico. Le strade, in ordine di costo:

  1. Una riga “da X a Y €” vicino al prezzo. Se le combinazioni hanno prezzi diversi, scrivere sotto il prezzo principale l’intervallo completo, generato dal template con il prezzo minimo e massimo delle combinazioni, toglie l’ambiguità più grave. È una modifica al template dei prezzi del tema, non un modulo.
  2. Una tabella delle varianti nella scheda. Opzione per opzione, con il prezzo accanto, nella descrizione o in una scheda dedicata, costruita lato server. Risolve davvero la domanda “quanto costa la versione X”, perché mette la risposta nella forma in cui un modello la può citare. Per una scheda con 9 combinazioni sono 9 righe; per una con 300 conviene raggruppare per l’opzione che sposta il prezzo, come la tipologia di rete in questo caso.
  3. I dati strutturati delle varianti. Google documenta un formato apposta, ProductGroup con hasVariant, che descrive ogni variante con il suo prezzo. Serve a Google per i risultati con prodotti; non lo metto tra le leve per le risposte AI, perché i dati strutturati non sono un fattore dichiarato da nessun sistema generativo e nel mio test sul markup non hanno spostato niente. Vale la pena se lo fai per Google, non come scorciatoia per ChatGPT.
  4. Il feed per Merchant Center con tutte le varianti. Ogni combinazione come prodotto a sé, con il proprio prezzo e lo stesso item_group_id. È il canale con cui Google riceve i prezzi giusti a prescindere dalla pagina, e l’ho descritto nel pezzo sul feed Merchant multi-paese.

Poi c’è una scelta che non costa niente: decidere con criterio qual è la combinazione predefinita. Se è quella che vendi di più, l’errore dell’AI colpisce meno persone. Se è la più economica, accompagnala sempre con l’intervallo di prezzo, altrimenti il prezzo d’ingresso diventa il prezzo e basta.

⚠️ Le pagine delle combinazioni non vanno aperte all’indice

La tentazione, letto il problema, è togliere il canonical dalle combinazioni o linkarle tutte dalla scheda, così che ogni variante abbia la sua pagina leggibile. Su un catalogo vero vuol dire moltiplicare le pagine quasi identiche per il numero di combinazioni, con il crawl di Googlebot che si disperde su copie della stessa scheda: lo stesso spreco che si vede nei log di un PrestaShop quando le faccette non sono governate. La scheda canonica resta una, e dentro ci va scritto quello che oggi sta solo dietro il menu.

✅ Prima di toccare il template

Fai la misura su tre schede: quella con più combinazioni, quella che vendi di più, quella con la differenza di prezzo più ampia fra le varianti. Se l’HTML canonico contiene già tutti i prezzi, il tuo tema li scrive e non c’è niente da fare. Se ne contiene uno, sai quanto vale il problema guardando lo scarto fra quel prezzo e gli altri. Il ragionamento è lo stesso del pezzo su cosa cita l’AI degli e-commerce PrestaShop: prima di ottimizzare per le risposte generative, controllare che la pagina dica il vero a chi la legge senza cliccare. Se vuoi che la misura la faccia io su tutto il catalogo, scrivimi.

❓ Domande frequenti

ChatGPT legge il prezzo delle combinazioni di PrestaShop?
Legge quello che trova nell'HTML della pagina, e su una scheda PrestaShop standard c'è solo il prezzo della combinazione predefinita. I prezzi delle altre varianti vengono caricati quando l'utente sceglie un'opzione, con JavaScript, e i crawler delle AI non lo eseguono. Il risultato è che il modello vede i nomi delle opzioni ma un solo prezzo.
Come verifico quale prezzo vede un crawler AI sulla mia scheda?
Scarica l'indirizzo canonico della scheda con curl e cerca i prezzi nell'HTML (itemprop price e il meta product:price:amount). Poi apri la stessa scheda nel browser e cambia le opzioni: ogni prezzo che vedi nel browser e non trovi nell'HTML scaricato per un crawler AI non esiste.
Devo rendere indicizzabile ogni combinazione per farla leggere alle AI?
No. Togliere il canonical o linkare tutte le combinazioni moltiplica le pagine quasi uguali e disperde il crawl di Google. La strada giusta è scrivere nella scheda canonica l'intervallo di prezzo e, quando le varianti cambiano molto il prezzo, una tabella con il prezzo di ogni opzione.
I dati strutturati ProductGroup risolvono il problema con ChatGPT?
Non c'è nessuna prova che lo facciano. ProductGroup con hasVariant è un formato documentato da Google per i risultati con prodotti, e ha senso usarlo per Google. Per le risposte delle AI conta il testo visibile della pagina: se il prezzo di una variante non è scritto lì, il markup da solo non garantisce che venga letto.
Quale combinazione conviene impostare come predefinita?
Quella che vendi di più, perché è quella che chi legge la scheda senza scegliere si aspetta. Se le varianti hanno prezzi molto diversi, accompagnala sempre con l'intervallo da-a scritto vicino al prezzo, così né un cliente né un'AI scambiano il prezzo d'ingresso per il prezzo del prodotto.
Enrico Morano
Sviluppatore PrestaShop freelance da quasi 10 anni - debug, performance, moduli custom

Hai un progetto in testa?

Raccontami cosa ti serve o cosa non funziona. Rispondo entro 24 ore, senza preventivi a scatola chiusa.

Descrivi il tuo progetto →il form guidato, 2 minuti
Scrivimi una mailemail
Scrivimi su WhatsAppdi solito rispondo in giornata