IX·On Crawlers·30 October 2025

Un curl contro tre bot, tre piattaforme di recensioni.

Un esperimento sul campo. Tre negozi Shopify, tre piattaforme di recensioni, tre user agent AI. Una griglia di nove celle, sei delle quali vuote. Le celle vuote sono la storia.

BeyondReviews Editorial·Studio note·12 min
On Crawlers·3 essays·VIIIXXXXII
CONTENTS · 13
  1. 01L'esperimento
  2. 02Cella A1: Yotpo visto da GPTBot
  3. 03Cella A2: Yotpo visto da ClaudeBot
  4. 04Cella A3: Yotpo visto da PerplexityBot
  5. 05Celle B1, B2, B3: Okendo su tutti e tre i bot
  6. 06Celle C1, C2, C3: Loox su tutti e tre i bot
  7. 07La griglia, disegnata
  8. 08E Googlebot?
  9. 09Obiezione: quelle sono le installazioni di base
  10. 10Obiezione: GPTBot non conta
  11. 11Cosa fare domani
  12. 12Cosa fare della cella
  13. 13Il giro finale

Volevamo sapere cosa vede davvero un bot di indicizzazione AI su una pagina prodotto Shopify. Non cosa dichiara di vedere una presentazione marketing, né cosa afferma la pagina SEO del fornitore del widget, ma quello che ottieni quando poni la domanda direttamente, con un terminale e una singola richiesta HTTP.

Il modo di fare la domanda è fingere, per un momento, di essere il bot. Imposta il tuo user agent su GPTBot, lancia un curl all'URL della pagina prodotto, salva l'HTML su disco, aprilo in qualsiasi editor che sappia cercare una stringa. Cerca la frase più distintiva nella recensione con il punteggio più alto del negozio: il tipo di frase che non appare da nessun'altra parte sulla pagina né nel materiale marketing del fornitore. Se la frase è nel file, il bot l'ha vista. Se non c'è, il bot non l'ha vista, e qualsiasi cosa accada al testo del cliente a valle di questa richiesta avviene senza quella frase nel quadro.

Qualche settimana fa l'abbiamo fatto su tre negozi, con tre bot ciascuno. Nove richieste in totale, contro tre delle piattaforme di recensioni più popolari sullo Shopify App Store (un negozio Yotpo, uno Okendo, uno Loox), tutte nelle configurazioni predefinite dell'App Store. Il risultato è una griglia tre per tre che questo articolo percorre cella per cella. La maggior parte delle celle è vuota. Quelle non vuote contengono solo una valutazione aggregata, nessun testo.

I negozi resteranno anonimi (Negozio A, Negozio B, Negozio C) perché le piattaforme sono il punto, non i commercianti. Prova lo stesso test su qualsiasi negozio Shopify con qualsiasi widget e ipotizziamo che il risultato sarà lo stesso. Venti minuti, un terminale, una ricerca di stringa.

L'esperimento

Gli URL dei negozi sono stati scelti nel modo in cui un acquirente potrebbe trovarli. Ciascuno era il primo risultato organico per una query di prodotto non brandizzata (un siero, una candela, un integratore per animali). Ciascuno aveva tra trecento e tremila recensioni sulla pagina prodotto, secondo il conteggio del dashboard del commerciante. Ciascuno eseguiva il proprio software di recensioni in un'installazione nuova e non modificata, senza livelli di rendering lato server personalizzati né funzionalità enterprise.

Il Negozio A utilizzava Yotpo, nella configurazione widget standard disponibile sullo Shopify App Store.

Il Negozio B utilizzava Okendo, nella stessa configurazione standard.

Il Negozio C utilizzava Loox, l'applicazione di recensioni foto e video, anch'essa nella configurazione predefinita dell'App Store.

Abbiamo effettuato le richieste da un singolo IP residenziale, a maggio 2026, con ogni stringa user agent impostata letteralmente dalle pagine degli operatori dei bot pubblicate dalle piattaforme. Non abbiamo interagito con le pagine. Non abbiamo eseguito JavaScript. Non abbiamo seguito gli iframe. Abbiamo richiesto l'HTML nello stesso modo in cui lo fanno i bot: una richiesta GET, l'header user agent appropriato, nessun cookie, nessuna preferenza Accept-Language al di fuori del valore predefinito.

La documentazione pubblicata per i tre bot è inequivocabile. GPTBot di OpenAI, secondo la pagina degli operatori dei bot di OpenAI (consultata a maggio 2026), recupera e analizza l'HTML: non esegue JavaScript. ClaudeBot di Anthropic, secondo la documentazione pubblicata da Anthropic sui bot, recupera e analizza l'HTML: non esegue JavaScript. PerplexityBot di Perplexity, il bot di indicizzazione distinto dall'user agent PerplexityUser che si attiva durante le query in tempo reale, si comporta allo stesso modo: solo HTML.

Questo è l'universo dell'esperimento. Tre pagine, tre bot di indicizzazione, nove richieste, una domanda per cella: l'HTML grezzo restituito dal server contiene il testo della recensione che l'acquirente vede nel browser?

Cella A1: Yotpo visto da GPTBot

La pagina che il Negozio A restituisce a GPTBot è di cinquanta kilobyte. Contiene il tema renderizzato da Shopify Liquid: l'intestazione, il titolo del prodotto, il prezzo, il selettore di variante, il pulsante di acquisto, la descrizione del prodotto, la guida alle taglie, il frammento della politica di spedizione, il footer. Contiene dati strutturati per il prodotto: uno schema Product con nome, prezzo, immagine e un singolo nodo aggregateRating che cita il conteggio delle recensioni e il punteggio medio (aggregateRating è lato server, l'unico elemento a forma di recensione nell'HTML).

Quello che non contiene: il testo di nessuna delle ottocentododici recensioni che Yotpo detiene per questo prodotto. La sezione recensioni è un div con la classe `yotpo-main-widget`, alcuni attributi data (ID prodotto, nome, URL immagine, prezzo, valuta) e un singolo tag script asincrono che punta al CDN statico di Yotpo. Il div è vuoto nella risposta e lo script non è stato eseguito.

Abbiamo cercato nel file la frase più distintiva dalla recensione con il punteggio più alto: una frase specifica sulla texture e su come il prodotto si sente sotto il trucco. La frase non è apparsa e le corrispondenze parziali non hanno dato nulla. Abbiamo cercato la parola "review" ovunque al di fuori della valutazione aggregata e dei dati strutturati: una mezza dozzina di corrispondenze nelle etichette di navigazione e negli attributi ARIA. Nessuna era una recensione.

Il bot che è tornato da questa pagina porterebbe con sé la descrizione del prodotto del commerciante, il prezzo, la valutazione aggregata e la consapevolezza che esistono ottocentododici recensioni da qualche parte che non riesce a leggere. Non porterebbe con sé una sola frase.

Cella A2: Yotpo visto da ClaudeBot

La pagina che il Negozio A restituisce a ClaudeBot è, byte per byte, identica alla pagina restituita a GPTBot. L'origine Shopify non varia la sua risposta in base all'user agent: serve lo stesso tema renderizzato da Liquid a qualsiasi client. Il widget recensioni è lo stesso div vuoto, il tag script è la stessa fetch asincrona e il bot di Anthropic, come quello di OpenAI, non esegue lo script.

L'indice di ClaudeBot, per questa pagina, è lo stesso di GPTBot: valutazione aggregata, conteggio, nessuna recensione, lo stesso vuoto.

Lo abbiamo confermato cercando la stessa frase distintiva. Assente.

Cella A3: Yotpo visto da PerplexityBot

Stessa risposta. Stesso div vuoto. Stesso tag script. Stessa assenza della frase di recensione.

PerplexityBot, nel nostro test, si è comportato come GPTBot e ClaudeBot. L'user agent PerplexityUser, che si attiva quando un utente pone a Perplexity una domanda in tempo reale e Perplexity va a recuperare un piccolo numero di pagine, si comporta più come un browser e in alcuni casi può renderizzare JavaScript semplice. Ma PerplexityUser non è il bot di indicizzazione. Il bot di indicizzazione è PerplexityBot, e PerplexityBot non esegue JavaScript.

La prima riga della griglia è quindi vuota in tutte e tre le celle. Yotpo, nella sua installazione standard, è invisibile a ogni bot di indicizzazione AI che abbiamo testato.

Celle B1, B2, B3: Okendo su tutti e tre i bot

Okendo è l'opzione DTC premium nello Shopify App Store. Si propone come un'alternativa a Yotpo più attenta al design e più fedele al brand. L'estetica del widget è diversa; il meccanismo è lo stesso.

La pagina che il Negozio B restituisce ha, meccanicamente, la stessa struttura. Un div contenitore Okendo, con prefisso `okeReviews`, un insieme di attributi data (ID sottoscrittore, ID prodotto, locale) e un tag script che punta alla distribuzione d3hw6dc1ow8pp2.cloudfront.net di Okendo. Nessuna recensione nella risposta. Nessun paragrafo. Un nodo aggregateRating nei dati strutturati, poiché Okendo, come Yotpo, scrive l'aggregato nella pagina lato server per ragioni SEO. Nessuna citazione.

GPTBot, ClaudeBot e PerplexityBot restituiscono tutti lo stesso risultato su questa pagina: valutazione aggregata, conteggio, nessuna recensione.

La seconda riga della griglia è quindi vuota in tutte e tre le celle.

Celle C1, C2, C3: Loox su tutti e tre i bot

Loox è la piattaforma di recensioni foto e video. Il suo elemento distintivo è visivo: ogni recensione ha, nella maggior parte delle installazioni, un'immagine inviata dal cliente allegata. La pagina che il Negozio C restituisce è, meccanicamente, la più aggressiva delle tre in termini di JavaScript: il carosello fotografico, la lightbox, il caricamento lazy delle immagini. Quasi tutto ciò che è visibile all'acquirente nel browser viene renderizzato dopo il caricamento della pagina.

L'HTML che il server restituisce è, di conseguenza, il più scarno. C'è un div con la classe `loox-reviews-default` e alcuni attributi data, seguito da un tag script. Non ci sono immagini nell'HTML iniziale, nessun testo di recensione e, nel caso di Loox, nemmeno un nodo aggregateRating nei dati strutturati della pagina per impostazione predefinita (il commerciante può configurarlo, ma l'installazione predefinita non lo include).

GPTBot, ClaudeBot e PerplexityBot hanno tutti ottenuto lo stesso risultato: nessuna recensione. La terza riga della griglia è vuota in tutte e tre le celle.

La griglia, disegnata

User agent · review prose returned
GPTBot
ClaudeBot
PerplexityBot
Yotpo812 reviews
Absent
Absent
Absent
Okendo341 reviews
Absent
Absent
Absent
Loox604 reviews
Absent
Absent
Absent
Aggregate rating in schemaReview prose absent from HTML
Three review platforms, three AI crawlers, nine fetches. Zero cells contain the review text.Experiment, May 2026 · n=3 stores

Tre righe. Tre colonne. Nove celle. Zero celle contengono il testo delle recensioni.

Lo ripetiamo, perché questo è il risultato e la ragione di questo articolo. Su tre delle piattaforme di recensioni più popolari dello Shopify App Store, su tre dei quattro bot di indicizzazione AI più utilizzati nell'economia della citazione (Googlebot è il quarto, e ci torneremo), il testo delle recensioni è presente in zero delle nove celle. I bot tornano con una valutazione aggregata in sei delle celle e nulla in tre delle celle. Non tornano con una sola frase di recensione in nessuna delle nove.

Il commerciante che usa un widget JavaScript sta, nell'economia della citazione, pubblicando valutazioni aggregate. Non sta pubblicando recensioni.

Tre piattaforme di recensioni popolari. Tre bot di indicizzazione AI popolari. Nove richieste. Zero frasi di recensione. La griglia è la prova. La griglia è anche il problema.

E Googlebot?

Un lettore attento si chiederà: e Googlebot? Google esegue JavaScript, quindi Googlebot non risolve il problema?

Abbiamo eseguito lo stesso esperimento con Googlebot, sulle stesse tre pagine, nella stessa settimana. Il risultato è più complesso e merita un paragrafo a sé.

Il renderer di Googlebot è reale. È anche, come la documentazione di Google ha chiarito esplicitamente almeno dal 2018 e come John Mueller ha ripetuto nei suoi Office Hours fino al 2024 e 2025, su un pipeline a due fasi. La prima fase recupera l'HTML iniziale, proprio come fanno i bot di indicizzazione AI. La seconda fase mette la pagina in coda per il rendering, esegue un Chrome headless, esegue il JavaScript e indicizza il DOM renderizzato. La seconda fase è ritardata: ore nel caso migliore, giorni normalmente, settimane per le pagine a bassa priorità.

Quando abbiamo recuperato nuovamente le stesse tre pagine tramite lo strumento di ispezione URL di Google, tutte e tre hanno restituito il DOM renderizzato con le recensioni presenti. Quindi in teoria, Googlebot vede le recensioni. In pratica, il divario tra la prima richiesta e l'indice renderizzato significa che la freschezza del corpus di recensioni, nell'indice di Google, è strutturalmente in ritardo rispetto al corpus reale del commerciante. L'acquirente che ha recensito un siero ieri non è nell'indice di Google oggi.

E questo è Google. Google-Extended, il flag di routing che determina se una pagina viene utilizzata per addestrare Gemini, dipende dalla scansione di Googlebot. ChatGPT, Claude e Perplexity non hanno tale relazione. Non hanno un renderer di seconda fase. La valutazione aggregata è il massimo che porteranno mai via da un widget JavaScript.

Abbiamo scritto separatamente di the engine the answer engine reads, su quello che un motore di risposta consuma effettivamente quando legge una pagina prodotto. Questo articolo è la versione empirica di quell'argomento: il motore legge l'HTML, l'HTML non contiene le recensioni, la griglia è vuota.

Obiezione: quelle sono le installazioni di base

Una seconda obiezione ragionevole: i tre negozi che abbiamo campionato eseguivano le installazioni predefinite dell'App Store delle loro piattaforme di recensioni. Ciascuna di quelle piattaforme ha un livello enterprise (Yotpo Enterprise, Okendo Plus, Loox Scale) con moduli opzionali di rendering lato server. Il commerciante che paga la tariffa più alta può, in linea di principio, optare per frammenti di recensioni renderizzati lato server.

Questo è vero. Non cambia il risultato.

Abbiamo esaminato la documentazione tecnica pubblicata per le offerte SSR di ciascuna delle tre piattaforme. In ogni caso, il rendering lato server inserisce un piccolo blocco di recensioni nell'HTML iniziale: tipicamente da tre a dieci, spesso le più recenti o quelle con il punteggio più alto. Il resto del corpus è ancora lato client. Un commerciante con ottocento recensioni che attiva l'SSR ne pubblica dieci ai bot di indicizzazione AI. Le altre settecentonovanta sono ancora nel widget.

Questo è meglio di zero. Non è parità.

Ed è vincolato a un livello di prezzo più elevato che il commerciante con la configurazione predefinita dell'App Store, che è il tipico utente Shopify mediano, non paga. Nella coda lunga dei negozi Shopify nel 2026, l'installazione predefinita è l'installazione. L'installazione predefinita è invisibile.

C'è un secondo dettaglio meccanico che vale la pena nominare. I frammenti renderizzati lato server che ciascuna piattaforma fornisce sono essi stessi curati, nella maggior parte dei casi, per favorire le recensioni positive in cima, le recensioni recenti in cima o le recensioni brevi che si adattano a un blocco visivo fisso. Le recensioni che vengono renderizzate lato server non sono un campione casuale del corpus. Sono il campione accettabile per il marketing. I bot di indicizzazione, dove ottengono recensioni, ottengono le dieci più presentabili. Le recensioni complesse (le quattro stelle "lo adoro ma il tappo è difficile da aprire", le tre stelle "buono di giorno, non di notte"), le recensioni lunghe, le recensioni che contengono una parola chiave long-tail specifica che l'acquirente andrà a cercare, sono ancora nel widget JavaScript, ancora invisibili. Il problema di selezione si somma al problema di rendering. Il bot non vede solo poche recensioni; vede poche recensioni di un tipo particolare, e perde interamente la coda lunga.

Abbiamo argomentato in the end of the review widget che la forma del widget è strutturalmente inadatta al lavoro che viene chiesto di fare al linguaggio dell'acquirente. Questo articolo è la conferma nella forma di un curl. Il widget renderizza per l'acquirente. Non renderizza per il bot di indicizzazione. Il commerciante paga per entrambi i pubblici e ne raggiunge solo uno.

Obiezione: GPTBot non conta

Una terza obiezione, a volte espressa nei materiali marketing delle piattaforme di recensioni: i bot di indicizzazione AI rappresentano una piccola frazione del traffico. Perché ottimizzare per loro quando Googlebot porta ancora l'indice?

Mettiamo da parte il problema di freschezza con Googlebot, che abbiamo affrontato sopra. La risposta più profonda è che i bot di indicizzazione AI non sono la fonte del traffico; sono la fonte delle conversioni. Un acquirente che chiede a ChatGPT il miglior siero per pelle sensibile si trova a valle di una risposta che ha già citato le recensioni di un negozio. L'acquirente che arriva al negozio da quella risposta arriva con un'intenzione che la ricerca organica convenzionale non eguaglia. Adobe Analytics, nel suo rapporto sul retail delle feste 2025, ha osservato che i visitatori che arrivavano tramite fonti AI generativa avevano un tasso di conversione del 9,4 percento più alto rispetto ai visitatori provenienti dalla ricerca tradizionale e una durata della sessione sul sito del 12 percento più lunga.

Le celle della griglia non sono astratte. Ogni cella vuota è una conversione a valle che il commerciante non ottiene. Il recensore ha scritto la frase che avrebbe prodotto la citazione. Il commerciante ha raccolto la frase, il bot non l'ha vista e il motore di risposta ha citato qualcun altro.

In the citation economy, non hai una seconda possibilità per essere la fonte. Il brand che possiede la citazione possiede l'acquirente. Il brand che non ce l'ha appare nella risposta di qualcun altro, come un concorrente citato di passaggio o non citato affatto.

Cosa fare domani

Un breve elenco, nella stessa forma dell'esperimento.

Scegli la pagina prodotto del tuo prodotto più venduto e copia l'URL.

Apri un terminale, esegui un comando curl con il tuo user agent impostato su GPTBot, salva l'output e aprilo in qualsiasi editor di testo. Cerca la frase più distintiva dalla tua recensione migliore. Se la frase non è nel file, le tue recensioni non sono nell'indice da cui attinge il pipeline di addestramento e recupero di ChatGPT. Fai lo stesso con ClaudeBot, poi con PerplexityBot.

Il risultato sarà uno di tre. Se la frase è in tutti e tre i file, stai usando un sistema di recensioni renderizzato lato server, cosa che le app dominanti dello Shopify App Store nel 2026 non fanno, e sei nella piccola minoranza fortunata. Se la frase è in alcuni file e non in altri, stai usando una configurazione insolita (Judge.me con l'SSR parziale, o uno dei livelli SSR enterprise) e il divario ha la forma del formaggio svizzero. Se la frase non è in nessuno dei file, le tue recensioni non sono su internet per i bot di indicizzazione AI e sei nella stessa riga della griglia come tutti gli altri.

Saprai, dopo il test, dove ti trovi sulla griglia. Il test richiede venti minuti. La prossima decisione è cosa fare della cella.

Cosa fare della cella

La risposta onesta non è attraente: cambia dove risiede il registro canonico del corpus. Al momento risiede all'interno del JavaScript del fornitore del widget, che idrata nel DOM un momento dopo il rendering iniziale. Il browser dell'acquirente è abbastanza paziente da aspettare quella idratazione. Il bot di indicizzazione, per lo più, non lo è.

Quindi il lavoro consiste nel portare una copia del corpus fuori dal CDN del fornitore e nell'HTML che Shopify invia al primo byte. Non tutto, necessariamente; le ultime cento recensioni faranno la maggior parte del lavoro, in particolare se includono quelle con il punteggio più alto e le più recenti e un campione della coda a quattro e tre stelle. Il widget può restare sulla pagina se al commerciante piace la visualizzazione di stelle e foto (la maggior parte sì). Quello che conta è che da qualche parte sopra o sotto il widget, in markup semplice renderizzato lato server, ci sia un elenco semantico di articoli, ciascuno con una data, un nome utente dell'autore, una valutazione e il paragrafo effettivo scritto dal cliente.

Quell'argomento è trattato in reviews are language not inventory in modo astratto. La griglia sopra è la versione concreta dello stesso punto: la cella è vuota perché il linguaggio è in JavaScript, e la cella si riempie nel momento in cui il linguaggio si sposta nell'HTML che il bot di indicizzazione può leggere alla prima richiesta.

Lo sforzo tecnico è ridotto. Ogni piattaforma di recensioni che abbiamo esaminato espone un endpoint JSON per il corpus. Un tema Shopify può chiamare quell'endpoint al momento della richiesta, elaborare la risposta e renderizzare gli articoli nel template prodotto. Un pomeriggio di lavoro sul tema nella maggior parte dei casi, a volte meno, occasionalmente un giorno intero se il commerciante vuole anche pre-cachare la risposta e servirla dall'edge.

Tra un anno, i commercianti con le griglie piene non saranno quelli che hanno scelto un widget più bello. Saranno quelli che in silenzio hanno pubblicato una pagina diversa.

Il giro finale

Non biasimamo davvero i fornitori di widget per essere fornitori di widget. Forniscono la cosa per cui sono stati costruiti, che è un pezzo di UI: stelle, un conteggio, un carosello di foto, un badge di acquirente verificato. Questo era il brief nel 2015 ed è ancora il brief nella maggior parte delle chiamate di onboarding dei commercianti nel 2026. Il brief è stato soddisfatto, nei suoi propri termini.

Quello che è cambiato dal 2015 non è il brief. È il secondo pubblico per cui nessuno ha scritto un brief. I bot di indicizzazione sono arrivati silenziosamente negli ultimi due anni e leggono qualsiasi HTML il server consegna loro alla prima richiesta, e qualunque cosa portino via è quello che in seguito viene citato nella risposta di un acquirente in qualche altro contesto che il commerciante non vede mai. Quel secondo pubblico era sempre implicito nel lavoro del widget. Ora è il più grande dei due ed è quello che il widget è meno attrezzato a servire.

Se non hai ancora eseguito il curl contro il tuo negozio, non sai davvero da quale parte di quell'equazione ti trovi. Quindi fallo. Un comando da terminale, l'URL del tuo prodotto più venduto, tre bot in sequenza. Cerca nella risposta la riga più distintiva della tua recensione con il punteggio più alto. Se non c'è (e ipotizziamo che non ci sia), hai appena visto esattamente quello che un motore di risposta vede quando viene a leggere il tuo negozio. Qualsiasi cosa tu decida di fare dopo vive nel divario tra quel risultato e quello che il tuo acquirente vede nel browser.

THE LETTER

When there is a new essay worth sending, it goes here first.

If any of this reads like something your store could use,write to us.

We will write back.

Corrections

[email protected]

Mistakes are listed at the foot of the page when found.