Um curl contra três rastreadores, três plataformas de avaliação.
Um experimento de campo com três lojas Shopify, três plataformas de avaliação e três user agents de IA gerou uma grade de nove células, seis delas vazias, e as células vazias são a história.
CONTENTS · 13
- 01O experimento
- 02Célula A1: Yotpo visto pelo GPTBot
- 03Célula A2: Yotpo visto pelo ClaudeBot
- 04Célula A3: Yotpo visto pelo PerplexityBot
- 05Células B1, B2, B3: Okendo nos três rastreadores
- 06Células C1, C2, C3: Loox nos três rastreadores
- 07A grade, desenhada
- 08E o Googlebot?
- 09A objeção: essas são as instalações baratas
- 10A objeção: o GPTBot simplesmente não importa
- 11O que o lojista deve fazer amanhã
- 12O que fazer com a célula
- 13O giro final
Queríamos saber o que um rastreador de IA realmente enxerga em uma página de produto Shopify. Não o que um deck de marketing afirma que ele vê, nem o que a página de SEO de um fornecedor de widget diz que ele vê, mas o que retorna quando você coloca a questão diretamente, com um terminal e uma única requisição HTTP.
A forma de fazer essa pergunta é fingir, por um momento, ser o rastreador. Configure seu user agent como GPTBot, dispare um curl na URL do produto, salve o HTML no disco, abra em qualquer editor que consiga buscar uma string. Procure a frase mais característica da avaliação mais bem avaliada da loja, o tipo de frase que não aparece em nenhum outro lugar da página nem no material de marketing do fornecedor. Se a frase estiver no arquivo, o rastreador a viu. Se não estiver, o rastreador não a viu, e tudo o que acontece com a linguagem do cliente a partir dessa requisição acontece sem essa frase no contexto.
Algumas semanas atrás, fizemos isso em três lojas, com três rastreadores cada. Nove requisições no total, contra três das plataformas de avaliação mais populares do Shopify App Store (uma loja Yotpo, uma Okendo, uma Loox), todas em suas instalações padrão do App Store. O resultado é uma grade três por três que este ensaio percorre, célula por célula. A maioria das células está vazia. As que não estão carregam apenas uma classificação agregada, sem texto de avaliação.
As lojas permanecerão anônimas (Loja A, Loja B, Loja C) porque as plataformas são o ponto central, não os lojistas. Execute o mesmo teste em qualquer loja Shopify rodando qualquer widget e apostamos que o resultado será o mesmo. Vinte minutos, um terminal, uma busca de string.
O experimento
As URLs das lojas foram escolhidas da forma como um comprador poderia encontrá-las. Cada uma era o resultado orgânico principal para uma consulta de produto sem marca (um sérum, uma vela, um suplemento para pets). Cada uma tinha entre trezentas e três mil avaliações na página de produto, conforme a contagem do próprio painel do lojista. Cada uma rodava seu software de avaliação em uma instalação nova e sem modificações, sem camada personalizada de renderização no lado do servidor nem recurso enterprise.
A Loja A rodava Yotpo, na configuração padrão de widget disponível no Shopify App Store.
A Loja B rodava Okendo, na mesma configuração padrão.
A Loja C rodava Loox, o aplicativo de avaliações com fotos e vídeos, também no padrão do App Store.
Fizemos as requisições a partir de um único IP residencial, em maio de 2026, com cada string de user agent configurada exatamente como nas páginas publicadas pelos operadores de rastreadores das plataformas. Não interagimos com as páginas. Não executamos JavaScript. Não seguimos iframes. Requisitamos o HTML da mesma forma que os próprios rastreadores fazem: uma requisição GET, o cabeçalho de user agent apropriado, sem cookies, sem preferência de Accept-Language além do padrão.
A documentação publicada para os três bots é inequívoca. O GPTBot da OpenAI, conforme a página de operadores de rastreadores da OpenAI (consultada em maio de 2026), busca e analisa HTML; não executa JavaScript. O ClaudeBot da Anthropic, conforme a documentação publicada de bots da Anthropic, busca e analisa HTML; não executa JavaScript. O PerplexityBot da Perplexity, o rastreador de indexação distinto do agente PerplexityUser que é acionado durante consultas ao vivo, comporta-se da mesma forma: apenas HTML.
Este é o universo do experimento. Três páginas, três rastreadores, nove requisições, uma pergunta por célula: o HTML bruto retornado pelo servidor contém o texto de avaliação que o comprador vê no navegador?
Célula A1: Yotpo visto pelo GPTBot
A página que a Loja A retorna para o GPTBot tem cinquenta kilobytes. Contém o tema renderizado pelo Shopify Liquid: o cabeçalho, o título do produto, o preço, o seletor de variantes, o botão de compra, a descrição do produto, o guia de tamanhos, o trecho da política de envio, o rodapé. Contém dados estruturados para o produto, um schema Product com nome, preço e imagem, e um único nó AggregateRating citando o número de avaliações e a pontuação média (o AggregateRating está no lado do servidor, a única evidência de avaliação no HTML da página).
O que não contém: o texto de nenhuma das oitocentas e doze avaliações que o Yotpo armazena para este produto. A seção de avaliações é uma div com a classe `yotpo-main-widget`, alguns atributos de dados (id do produto, nome, URL da imagem, preço, moeda) e uma única tag de script assíncrona apontando para o CDN estático do Yotpo. A div está vazia na resposta, e o script não foi executado.
Buscamos no arquivo a frase mais característica da avaliação mais bem avaliada: uma frase específica sobre textura e como o produto se comporta sob a maquiagem. A frase não apareceu, e correspondências parciais não retornaram nada. Buscamos a palavra "avaliação" em qualquer lugar fora da classificação agregada e dos dados estruturados: meia dúzia de correspondências em rótulos de navegação e atributos ARIA. Nenhuma delas era uma avaliação.
O rastreador que retornou desta página carregaria consigo a descrição do produto do lojista, o preço, a classificação agregada e a noção de que existem oitocentas e doze avaliações em algum lugar que ele não consegue ler. Não carregaria consigo uma frase sequer.
Célula A2: Yotpo visto pelo ClaudeBot
A página que a Loja A retorna para o ClaudeBot é, byte por byte, idêntica à página retornada para o GPTBot. A origem do Shopify não varia sua resposta com base no user agent; serve o mesmo tema renderizado pelo Liquid para qualquer cliente. O widget de avaliações é a mesma div vazia, a tag de script é o mesmo fetch assíncrono, e o rastreador da Anthropic, assim como o da OpenAI, não executa o script.
O índice do ClaudeBot para esta página é o mesmo índice do GPTBot: classificação agregada, contagem, sem avaliações, mesma lacuna.
Confirmamos isso buscando a mesma frase característica. Ausente.
Célula A3: Yotpo visto pelo PerplexityBot
Mesma resposta. Mesma div vazia. Mesma tag de script. Mesma ausência da frase de avaliação.
O PerplexityBot, em nosso teste, comportou-se da mesma forma que o GPTBot e o ClaudeBot. O agente PerplexityUser, que é acionado quando um usuário faz uma pergunta ao vivo no Perplexity e o Perplexity busca um pequeno número de páginas em tempo real, comporta-se mais como um navegador e pode, em alguns casos, renderizar JavaScript simples. Mas o PerplexityUser não é o indexador. O indexador é o PerplexityBot, e o PerplexityBot não executa JavaScript.
A primeira linha da grade está, portanto, vazia nas três células. O Yotpo, em sua instalação padrão, é invisível para todos os rastreadores de IA que testamos.
Células B1, B2, B3: Okendo nos três rastreadores
O Okendo é a opção premium DTC no Shopify App Store. Posiciona-se como uma alternativa ao Yotpo mais atenta ao design e mais fiel à marca. A estética do widget é diferente; o mecanismo é o mesmo.
A página que a Loja B retorna é, mecanicamente, a mesma forma. Uma div contêiner Okendo com prefixo `okeReviews`, um conjunto de atributos de dados (ID do assinante, ID do produto, localidade) e uma tag de script apontando para a distribuição d3hw6dc1ow8pp2.cloudfront.net do Okendo. Sem avaliações na resposta. Sem parágrafos. Um nó AggregateRating nos dados estruturados, já que o Okendo, como o Yotpo, grava o agregado na página no lado do servidor por razões de SEO. Sem citações.
O GPTBot, o ClaudeBot e o PerplexityBot retornam o mesmo resultado nesta página: classificação agregada, contagem, sem avaliações.
A segunda linha da grade, portanto, está vazia nas três células.
Células C1, C2, C3: Loox nos três rastreadores
O Loox é a plataforma de avaliações com fotos e vídeos. Seu diferencial é visual: cada avaliação tem, na maioria das instalações, uma imagem enviada pelo cliente anexada. A página que a Loja C retorna é, mecanicamente, a mais dependente de JavaScript das três: o carrossel de fotos, o lightbox, o carregamento progressivo de imagens. Quase tudo o que o comprador vê no navegador é renderizado após o carregamento da página.
O HTML que o servidor retorna é, portanto, o mais árido. Há uma div com a classe `loox-reviews-default` e alguns atributos de dados, seguida de uma tag de script. Não há imagens no HTML inicial, sem textos de avaliação e, no caso do Loox, nem mesmo um nó AggregateRating nos dados estruturados da página por padrão (o lojista pode configurar isso, mas a instalação padrão não o inclui).
O GPTBot, o ClaudeBot e o PerplexityBot retornaram o mesmo resultado: sem avaliações. A terceira linha da grade está vazia nas três células.
A grade, desenhada
Três linhas. Três colunas. Nove células. Zero células contêm texto de avaliação.
Dizemos isso novamente, porque é o resultado e a razão deste ensaio. Em três das plataformas de avaliação mais populares do Shopify App Store, em três dos quatro rastreadores de IA mais utilizados na economia de citações (sendo o Googlebot o quarto, ao qual voltaremos), o texto de avaliação está em zero das nove células. Os rastreadores retornam com uma classificação agregada em seis das células e nada nas três restantes. Não retornam com uma única frase de avaliação em nenhuma das nove.
O lojista que usa um widget JavaScript está, na economia de citações, publicando classificações agregadas. Não está publicando avaliações.
Três plataformas de avaliação populares. Três rastreadores de IA populares. Nove requisições. Zero frases de avaliação. A grade é a prova. A grade é também o problema.
E o Googlebot?
Um leitor atento vai perguntar: e o Googlebot? O Google executa JavaScript, então o Googlebot resolve isso?
Rodamos o mesmo experimento contra o Googlebot, nas mesmas três páginas, na mesma semana. O resultado é mais complexo e merece seu próprio parágrafo.
O renderizador do Googlebot é real. Mas, como a própria documentação do Google deixa claro desde pelo menos 2018 e como John Mueller repetiu em seus Office Hours ao longo de 2024 e 2025, funciona em um pipeline de dois estágios. O primeiro estágio busca o HTML inicial, assim como os rastreadores de IA fazem. O segundo estágio coloca a página na fila para renderização, executa um Chrome sem interface, executa o JavaScript e indexa o DOM renderizado. O segundo estágio é atrasado: horas no melhor caso, dias com frequência, semanas para páginas de baixa prioridade.
Quando buscamos novamente as mesmas três páginas via a ferramenta de Inspeção de URL do Google, as três retornaram o DOM renderizado com avaliações presentes. Então, em teoria, o Googlebot vê as avaliações. Na prática, a diferença entre a requisição inicial e o índice renderizado significa que a atualidade do corpus de avaliações, no índice do Google, está estruturalmente defasada em relação ao corpus real do lojista. O cliente que avaliou um sérum ontem não está no índice do Google hoje.
E isso é o Google. O Google-Extended, o sinalizador de roteamento que determina se uma página é usada para treinar o Gemini, depende do rastreamento do Googlebot. ChatGPT, Claude e Perplexity não têm essa relação. Não possuem renderizador de segundo estágio. A classificação agregada é o máximo que eles levarão de um widget JavaScript.
Escrevemos separadamente em the engine the answer engine reads sobre o que um motor de resposta realmente consome quando lê uma página de produto. Este ensaio é a versão empírica desse argumento: o motor lê HTML, o HTML não contém as avaliações, a grade está vazia.
A objeção: essas são as instalações baratas
Uma segunda objeção razoável: as três lojas que examinamos rodavam as instalações padrão do App Store de suas plataformas de avaliação. Cada uma dessas plataformas tem um plano enterprise (Yotpo Enterprise, Okendo Plus, Loox Scale) com módulos opcionais de renderização no lado do servidor. O lojista que paga o plano mais caro pode, em princípio, optar por trechos de avaliação renderizados no servidor.
Isso é verdade. Não muda o resultado.
Analisamos a documentação técnica publicada para os recursos de SSR de cada uma das três plataformas. Em todos os casos, a renderização no lado do servidor envia um pequeno bloco de avaliações no HTML inicial: tipicamente três a dez, com frequência as mais recentes ou as mais bem avaliadas. O restante do corpus ainda é do lado do cliente. Um lojista com oitocentas avaliações que ativa o SSR está publicando dez delas para os rastreadores de IA. As outras setecentas e noventa ainda estão no widget.
Isso é melhor do que zero. Não é paridade.
E está restrito a um plano de preços mais alto que o lojista padrão do App Store, que é o usuário mediano do Shopify, não paga. Na longa cauda das lojas Shopify em 2026, a instalação padrão é a instalação. A instalação padrão é invisível.
Há um segundo detalhe mecânico que vale mencionar. Os trechos renderizados no servidor que cada plataforma envia são, em si, curados, na maioria dos casos, para favorecer avaliações positivas no topo, avaliações recentes no topo ou avaliações curtas que cabem em um bloco visual fixo. As avaliações que são renderizadas no lado do servidor não são uma amostra aleatória do corpus. São a amostra aceitável para o marketing. Os rastreadores, quando obtêm avaliações, recebem as dez mais apresentáveis. As avaliações complicadas (as de quatro estrelas "adoro, mas a tampa é difícil de abrir", as de três estrelas "bom para o dia, não para a noite"), as avaliações longas, as avaliações que contêm uma palavra-chave de cauda longa específica que o comprador vai pesquisar, ainda estão no widget JavaScript, ainda invisíveis. O problema de seleção se soma ao problema de renderização. O rastreador não está apenas vendo poucas avaliações; está vendo poucas avaliações de um tipo específico e perdendo completamente a cauda longa.
Argumentamos em the end of the review widget que a forma do widget é estruturalmente inadequada para o trabalho que a linguagem do comprador está sendo solicitada a fazer. Este ensaio é a confirmação em formato de curl. O widget renderiza para o comprador. Não renderiza para o rastreador. O lojista paga pelas duas audiências e alcança apenas uma delas.
A objeção: o GPTBot simplesmente não importa
Uma terceira objeção, às vezes expressa nos materiais de marketing das plataformas de avaliação: os rastreadores de IA são uma fração pequena do tráfego. Por que otimizar para eles quando o Googlebot ainda carrega o índice?
Deixaremos de lado o problema de atualidade com o Googlebot, que abordamos acima. A resposta mais profunda é que os rastreadores de IA não são de onde vem o tráfego; são de onde vem a conversão. Um comprador que pergunta ao ChatGPT qual é o melhor sérum para pele sensível está a jusante de uma resposta que já citou as avaliações de alguma loja. O comprador que chega à loja a partir dessa resposta chega com uma intenção que a busca orgânica convencional não alcança. O Adobe Analytics, em seu relatório de varejo das festas de 2025, observou que visitantes provenientes de fontes de IA generativa tinham uma taxa de conversão 9,4% maior do que visitantes provenientes de busca tradicional, e um tempo de sessão 12% maior no site.
As células da grade não são abstratas. Cada célula vazia é uma conversão a jusante que o lojista não obtém. O avaliador escreveu a frase que teria produzido a citação. O lojista coletou a frase, o rastreador não a viu, e o motor de resposta citou outra pessoa.
Em the citation economy, não há uma segunda chance de ser a fonte. A marca que detém a citação detém o comprador. A marca que não a detém aparece na resposta de outra pessoa, como um concorrente mencionado de passagem ou não mencionado.
O que o lojista deve fazer amanhã
Uma lista curta, no mesmo formato do experimento.
Escolha a página do seu produto mais vendido e copie a URL.
Abra um terminal, execute um comando curl com o user agent configurado como GPTBot, salve o resultado e abra em qualquer editor de texto. Busque a frase mais característica da sua avaliação mais bem avaliada. Se a frase não estiver no arquivo, suas avaliações não estão no índice que o pipeline de treinamento e recuperação do ChatGPT utiliza. Faça o mesmo com o ClaudeBot, e depois com o PerplexityBot.
O resultado será um de três. Se a frase estiver nos três arquivos, você está rodando um sistema de avaliação renderizado no servidor, algo que os aplicativos dominantes do Shopify App Store em 2026 não fazem, e você está na pequena minoria afortunada. Se a frase estiver em alguns arquivos e não em outros, você está rodando uma configuração incomum (Judge.me com SSR parcial, ou um dos planos enterprise de SSR) e a lacuna tem a forma de um queijo suíço. Se a frase não estiver em nenhum dos arquivos, suas avaliações não estão na internet para os rastreadores de IA, e você está na mesma linha da grade que todo mundo.
Você saberá, após o teste, onde está na grade. O teste leva vinte minutos. A próxima decisão é o que fazer com a célula.
O que fazer com a célula
A resposta honesta é pouco glamourosa: mudar onde o registro canônico do corpus reside. Agora ele vive dentro do JavaScript do fornecedor do widget, hidratando no DOM um momento após o paint inicial. O navegador do comprador tem paciência suficiente para esperar por essa hidratação. O rastreador, na maioria das vezes, não tem.
Então o trabalho é tirar uma cópia do corpus do CDN do fornecedor e colocá-la no HTML que o Shopify envia no primeiro byte. Não necessariamente todo ele; as últimas cem avaliações farão a maior parte do trabalho, especialmente se incluírem as mais bem avaliadas, as mais recentes e uma amostra da cauda de quatro e três estrelas. O widget pode permanecer na página se o lojista gostar do visual de estrelas e fotos (a maioria gosta). O que importa é que em algum lugar acima ou abaixo do widget, em marcação simples renderizada no servidor, haja uma lista semântica de artigos, cada um com uma data, um handle de autor, uma classificação e o parágrafo real que o cliente escreveu.
Esse argumento vive em reviews are language not inventory no plano abstrato. A grade acima é a versão concreta do mesmo ponto: a célula está vazia porque a linguagem está em JavaScript, e a célula se preenche no momento em que a linguagem se move para HTML que o rastreador pode ler na primeira requisição.
O esforço técnico é pequeno. Toda plataforma de avaliações que examinamos expõe um endpoint JSON para o corpus. Um tema Shopify pode chamar esse endpoint no momento da requisição, percorrer a resposta e renderizar os artigos no template do produto. Uma tarde de trabalho no tema na maioria dos casos, às vezes menos, ocasionalmente um dia se o lojista também quiser pré-cachear a resposta e servir a partir da borda.
Daqui a um ano, os lojistas com grades cheias não serão os que escolheram um widget mais bonito. Serão os que silenciosamente entregaram uma página diferente.
O giro final
Não culpamos os fornecedores de widget por serem fornecedores de widget. Eles entregam o que foram construídos para entregar, que é uma peça de UI: estrelas, uma contagem, um carrossel de fotos, um selo de comprador verificado. Esse era o briefing em 2015 e ainda é o briefing na maioria das chamadas de onboarding de lojistas em 2026. O briefing foi, em seus próprios termos, cumprido.
O que mudou desde 2015 não é o briefing. É a segunda audiência para a qual ninguém escreveu um briefing. Os rastreadores entraram em operação silenciosamente nos últimos dois anos e leem qualquer HTML que o servidor lhes entrega na primeira requisição, e qualquer coisa que carregam consigo é o que depois é citado na resposta de algum comprador em algum outro contexto que o lojista nunca vê. Essa segunda audiência sempre foi implícita no trabalho do widget. Agora é a maior das duas, e é aquela que o widget está menos equipado para servir.
Se você ainda não rodou o curl contra sua própria loja, você realmente não sabe de que lado dessa equação está. Então faça isso. Um comando de terminal, a URL do seu produto mais vendido, três rastreadores em sequência. Faça um grep na resposta pela linha mais característica da sua avaliação mais bem avaliada. Se ela não estiver lá (e apostamos que não estará), você acabou de ver exatamente o que um motor de resposta vê quando vem ler sua loja. Tudo o que você decidir fazer a seguir vive na lacuna entre esse resultado e o que o seu comprador vê no navegador.
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.