Quando o Google Merchant Center reprova um produto por dados estruturados inválidos, a notificação pode parecer abstrata - mas o diagnóstico é, na maioria dos casos, direto. O JSON-LD ou microdata na página do produto está em conflito com o que consta no feed, ou omite campos que o Google exige para validar o item. Para lojistas Shopify, o problema quase sempre está no tema, não no feed em si.
O que o Google entende por “dados estruturados incompatíveis”
O Google define dados estruturados de produto como marcação Schema.org inserida no HTML da página que descreve atributos-chave do item à venda - preço, disponibilidade, GTIN, condição e moeda. A documentação oficial estabelece que essa marcação deve ser “precisa, completa e não enganosa” em relação ao conteúdo visível da página e ao que foi declarado no feed.
A violação ocorre em três cenários principais:
- Campo obrigatório ausente - a marcação existe, mas não declara
offers.price,offers.priceCurrencyouoffers.availability. - Conflito entre marcação e página visível - o JSON-LD declara
availability: InStock, mas o botão “Comprar” está desabilitado ou a página exibe “Produto esgotado”. - Sinal falso de benefício - a marcação indica frete grátis ou um preço promocional que não está disponível para o usuário médio na página real.
O AdsBot do Google rastreia as páginas de produto de forma independente do feed e compara os dois conjuntos de dados. Quando detecta inconsistência, reprova o produto - e a reprovação persiste até que a página seja corrigida e recrawleada.
Por que isso causa desaprovação em lojas Shopify
Temas Shopify geralmente incluem um bloco JSON-LD gerado dinamicamente pelo Liquid. O problema é que a implementação padrão nem sempre cobre todos os campos exigidos pelo GMC, e personalizações podem introduzir inconsistências difíceis de rastrear.
Os gatilhos mais comuns em lojas brasileiras:
- Preço com e sem imposto - o tema exibe o preço com ICMS embutido para o consumidor final, mas o feed usa o preço sem imposto. O AdsBot lê o JSON-LD e detecta valores divergentes entre a página e o feed.
- Disponibilidade por variante não tratada - produtos com variantes (tamanho, cor) onde a variante padrão está esgotada, mas o JSON-LD declara
InStockpara o produto como um todo. - Apps de terceiros sobrescrevendo o JSON-LD - aplicativos de avaliações, comparadores de preço ou bundles podem injetar um segundo bloco
application/ld+jsoncom valores diferentes. O Google usa o sinal mais restritivo quando encontra blocos conflitantes. - Temas customizados sem snippet de dados estruturados - temas desenvolvidos por agências frequentemente omitem o bloco JSON-LD inteiramente ou herdam um template incompleto do tema pai.
O Shopify não valida automaticamente se os dados estruturados gerados pelo tema estão em conformidade com o que o GMC espera. Essa responsabilidade recai sobre o lojista ou sobre a agência que mantém o tema.
Como identificar o problema na sua loja
Antes de editar qualquer código, mapeie o escopo do problema com precisão.
Painel de diagnóstico do GMC - Acesse Produtos → Diagnóstico e filtre por “Dados estruturados inválidos”. Anote quantos produtos foram reprovados, quais campos estão com erro e se a reprovação é em nível de item ou de conta.
Rich Results Test - Abra search.google.com/test/rich-results e insira a URL de um produto reprovado. A ferramenta mostra se o JSON-LD foi detectado, quais campos obrigatórios estão ausentes e erros de valor - por exemplo, availability com um valor não reconhecido pelo Schema.org.
Inspeção direta do código-fonte - No browser, abra o produto reprovado, clique com o botão direito → “Exibir código-fonte da página” e busque por application/ld+json. Verifique manualmente se o bloco contém todos os campos obrigatórios e se os valores são consistentes com o que está visível na página.
Passo a passo para corrigir
-
Localize o template no Shopify - Em Loja virtual → Temas → Editar código, procure por
product.liquid(temas clássicos) ousections/main-product.liquid(temas OS 2.0). Também verifique arquivos emsnippets/com nomes comostructured-data.liquidouproduct-schema.liquid. -
Corrija ou adicione o bloco JSON-LD - O bloco mínimo aceitável pelo GMC é:
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "{{ product.title | escape }}",
"image": "{{ product.featured_image | img_url: 'grande' }}",
"description": "{{ product.description | strip_html | escape }}",
"sku": "{{ product.selected_or_first_available_variant.sku }}",
"brand": {
"@type": "Brand",
"name": "{{ product.vendor | escape }}"
},
"offers": {
"@type": "Offer",
"url": "{{ shop.url }}{{ product.url }}",
"priceCurrency": "BRL",
"price": "{{ product.selected_or_first_available_variant.price | divided_by: 100.0 }}",
"availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}",
"itemCondition": "https://schema.org/NewCondition"
}
}
Perguntas frequentes
Perguntas frequentes
- Todos os produtos precisam de dados estruturados para aparecer no Google Shopping?
- Não é tecnicamente obrigatório, mas o GMC usa a marcação Schema.org para validar a consistência entre o feed e a página do produto. Quando a marcação existe e contradiz o feed - preço, disponibilidade, GTIN - o produto é reprovado. Sem marcação alguma, o Google pode usar outros sinais da página, mas a ausência aumenta o risco de discrepâncias não detectadas e dificulta a reaprovação caso outros problemas existam.
- O Shopify não gera automaticamente os dados estruturados corretos?
- O tema Dawn e a maioria dos temas da Shopify Theme Store incluem marcação Schema.org, mas a implementação varia. Temas customizados ou de terceiros podem omitir campos obrigatórios ou gerar valores inconsistentes - especialmente preço com imposto embutido, disponibilidade por variante e GTIN. Sempre valide com o Rich Results Test após qualquer atualização de tema ou instalação de novo app que modifique o frontend.
- Qual é a diferença entre reprovação de produto e suspensão de conta por dados estruturados?
- A política de dados estruturados normalmente gera reprovação em nível de produto - um item específico - e não suspensão da conta inteira. Se um grande volume de produtos for reprovado simultaneamente por esse motivo, o GMC pode emitir um aviso de conta. Verifique o painel Diagnóstico do Merchant Center para entender o escopo do problema antes de tomar qualquer ação.
- Posso usar microdata em vez de JSON-LD no Shopify?
- Sim, ambos os formatos são aceitos pelo Google. No Shopify, JSON-LD inserido como um bloco de script application/ld+json dentro do template product.liquid é mais fácil de manter e menos propenso a conflitos de renderização com outros elementos do tema. O Google não tem preferência oficial entre os dois, mas JSON-LD separa a marcação da estrutura HTML, reduzindo o risco de incompatibilidade.
- O erro persiste mesmo com preço correto no feed. Por quê?
- O GMC compara o feed com o que o AdsBot rastreia diretamente na página. Se o JSON-LD exibe o preço com ICMS embutido e o feed usa o preço sem imposto, isso é interpretado como inconsistência - mesmo que o preço final ao consumidor seja idêntico. Verifique se o formato de preço, a política de imposto e a moeda estão padronizados entre o feed e a marcação da página do produto.
- Preciso reenviar o feed manualmente após corrigir os dados estruturados?
- Não é estritamente necessário. O AdsBot recrawleará as páginas no ciclo normal. Mas para acelerar a reaprovação, use a opção Solicitar rastreamento no painel do GMC (Produtos → Diagnóstico → Solicitar rastreamento) ou force uma atualização incremental do feed via Merchant API. Em lojas com catálogos grandes, o rastreamento manual pode reduzir o tempo de espera de vários dias para poucas horas.
Fontes e referências
Fontes oficiais citadas
- Google Search Central: Dados estruturados de produto (Schema.org) https://developers.google.com/search/docs/appearance/structured-data/product
- Google Search Central: Rich Results Test https://search.google.com/test/rich-results
- Schema.org: Product https://schema.org/Product
Checklist de recurso
Os passos desta página, no seu email.