Pular para o conteúdo principal
🇧🇷

Exemplo de schema Product para Shopify de moda

Exemplos JSON-LD Product e ProductGroup prontos para copiar para Shopify de moda — cobre variantes de tamanho e cor, offers, breadcrumbs, e as regras de AggregateRating que decidem se os motores de busca por IA realmente citam sua página de produto.

5 min read

Páginas de produto de moda no Shopify são citadas por motores IA shopping com base em quão precisamente o JSON-LD descreve a paisagem de variantes. Um comprador perguntando «camisa de linho que veste fiel ao tamanho em médio» no ChatGPT, Perplexity ou Gemini precisa que a IA reconheça que a variante específica existe, está em estoque, tem preço, e é descrita distintamente das irmãs L e XL. Schema Product genérico sem detalhe de variante força a IA a adivinhar; ProductGroup com hasVariant lhe dá os dados para citar com confiança.

Este exemplo entrega dois blocos JSON-LD prontos para copiar: um ProductGroup para a matriz de variantes, e um BreadcrumbList para contexto de categoria. Ambos calibrados para passar Google Rich Results Test limpamente e refletir o conteúdo visível da página (a regra que motores IA realmente aplicam na prática).

Quando usar Product vs ProductGroup

Caso de usoSchemaPor quê
Item de SKU único (um tamanho, uma cor)ProductSem matriz de variantes — adicionar ProductGroup é exagero.
Moda com variantes só de tamanhoProductGroup + variesBy: sizeQueries IA shopping são condicionadas por tamanho.
Moda com variantes só de corProductGroup + variesBy: colorQueries IA são condicionadas por cor.
Moda com matriz tamanho × corProductGroup + ambos variesByProduto cartesiano de variantes; cada hasVariant é o SKU único.
Bundle / kit (múltiplos pais)Product por item + isRelatedTo customizadoProductGroup descreve variantes de um produto, não bundles multi-produto.

Templates Liquid padrão do Shopify emitem Product independente da contagem de variantes. O upgrade para ProductGroup para qualquer loja de moda com múltiplos tamanhos é uma edição de tema única (ou um app Shopify que faz automaticamente); o ganho de citação IA shopping vale o esforço.

ProductGroup JSON-LD (moda com variantes)

Cole em um template de página de produto, substituindo os valores placeholder. O exemplo mostra um subconjunto de 2 variantes; em produção você terá uma entrada hasVariant por SKU real.

ProductGroup JSON-LD (variantes de moda) json
{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "name": "Linen Relaxed Shirt",
  "description": "A breathable linen shirt in three colors, sizes XS–XL. 100% European linen, pre-washed for softness.",
  "brand": {
    "@type": "Brand",
    "name": "Example Apparel"
  },
  "productGroupID": "linen-shirt-001",
  "variesBy": ["https://schema.org/size", "https://schema.org/color"],
  "hasVariant": [
    {
      "@type": "Product",
      "sku": "LINEN-SHIRT-WHITE-M",
      "name": "Linen Relaxed Shirt — White / M",
      "color": "White",
      "size": "M",
      "material": "Linen",
      "image": "https://example.com/products/linen-shirt-white.jpg",
      "offers": {
        "@type": "Offer",
        "url": "https://example.com/products/linen-shirt?variant=white-m",
        "priceCurrency": "USD",
        "price": "79.00",
        "availability": "https://schema.org/InStock",
        "itemCondition": "https://schema.org/NewCondition"
      }
    },
    {
      "@type": "Product",
      "sku": "LINEN-SHIRT-BLACK-S",
      "name": "Linen Relaxed Shirt — Black / S",
      "color": "Black",
      "size": "S",
      "material": "Linen",
      "image": "https://example.com/products/linen-shirt-black.jpg",
      "offers": {
        "@type": "Offer",
        "url": "https://example.com/products/linen-shirt?variant=black-s",
        "priceCurrency": "USD",
        "price": "79.00",
        "availability": "https://schema.org/InStock",
        "itemCondition": "https://schema.org/NewCondition"
      }
    }
  ]
}

Combine o ProductGroup com um BreadcrumbList para que motores IA entendam a hierarquia de categoria onde seu produto vive. As URLs do breadcrumb devem coincidir exatamente com o breadcrumb visível.

BreadcrumbList JSON-LD json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com/"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Shirts",
      "item": "https://example.com/collections/shirts"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Linen Relaxed Shirt",
      "item": "https://example.com/products/linen-shirt"
    }
  ]
}

Erros comuns (por frequência)

  1. Marcar variantes que não são visíveis nem selecionáveis na página. Schema deve refletir realidade visível. Se sua página mostra só S / M / L mas o JSON-LD declara XS a XXL, motores IA acabarão tentando citar uma variante 404 e penalizando a loja.

  2. Usar AggregateRating sem widget de reviews. Ou exiba as reviews visivelmente (app Shopify Reviews), ou remova o campo schema. Não fabrique.

  3. Inconsistência de currency, preço ou disponibilidade entre schema e página visível. Comprador vê $79 mas schema declara 89.00 — motores IA pegam o número do schema, citam, e o comprador se sente enganado. Pior: Google flaca o schema como pouco confiável.

  4. Reutilizar o mesmo sku entre variantes. Shopify gera SKUs únicos mas merchants frequentemente sobrescrevem. SKUs duplicados em hasVariant fazem motores IA mesclarem variantes incorretamente.

  5. Misturar ProductGroup e Product de modo que nomes específicos de variante se percam. Se emitir ambos para o mesmo item, garanta que a instância Product é o pai (sem detalhe de variante) e ProductGroup.hasVariant contém as variantes. Não emita Product para cada variante fora do grupo.

  6. Adicionar claims médicas ou não suportadas às descrições de moda. «Corretora de postura» / «melhora a circulação» / «tecido antibacteriano previne doenças de pele» — são claims regulamentados na maioria dos mercados e disparam penalização IA mesmo quando legalmente OK. Fique com descrições de caimento e material.

  7. Apontar URLs do schema para URLs de variante não canônicas. Se a página usa uma URL canônica do produto (ex.: /products/linen-shirt) e variantes são selecionadas por query-param (?variant=white-m), hasVariant[].offers.url deve ainda apontar para a URL específica da variante — é onde compradores (e agentes IA) aterrissam.

Como verificar

  1. Cole a URL do produto deployada no

    Google Rich Results Test

    . Os itens Product e BreadcrumbList devem validar.
  2. Passe o checklist de validação acima campo por campo.
  3. Abra a página em janela anônima e verifique que H1 do produto visível, preço, disponibilidade e breadcrumb todos coincidem com o que o schema declara.
  4. Re-execute o gerador de Schema se mudar a estrutura do produto (nova cor, tamanho removido) e redeploye.

O JSON-LD é um sinal na pilha IA shopping. Combine com o modelo llms.txt moda para o lado de mapa de conteúdo, e verifique com o Analisador Robots que GPTBot pode alcançar a página de produto.

Lista de validação

  • Nome do produto no schema coincide com o H1 visível

    O campo `name` do ProductGroup coincide exatamente com o H1 da página de produto (maiúsculas + pontuação). Motores IA penalizam desencontros como sinal de baixa confiança.

  • Cada variante tem um SKU único

    Nenhum valor `hasVariant[].sku` colide. Shopify auto-gera SKUs mas merchants frequentemente sobrescrevem — SKUs duplicados no schema fazem motores IA mesclarem variantes incorretamente.

  • Nomes de variante identificam tamanho / cor / material

    Cada `hasVariant[].name` lê como label real de produto (ex.: «Linen Relaxed Shirt — White / M»), não placeholder. Respostas IA shopping citam este campo diretamente.

  • productGroupID estável entre deploys

    O `productGroupID` deve ser um identificador interno estável (Shopify product GID ou slug customizado), não UUID aleatório de build-time. Motores IA usam para deduplicar o mesmo produto entre recarregamentos.

  • Cada Offer tem currency + price + availability + URL

    O bloco `offers` de cada variante tem `priceCurrency`, `price`, `availability`, `url`. Currency ausente é a razão nº 1 pela qual Google Rich Results Test degrada um resultado Product.

  • AggregateRating só presente se reviews reais visíveis

    Se emitir `aggregateRating`, a mesma avaliação + contagem de reviews deve ser visível na página. Motores IA comparam schema com conteúdo visível; ratings fabricados disparam downweighting.

  • BreadcrumbList coincide com breadcrumb visível

    A cadeia de URLs `itemListElement` coincide exatamente com o breadcrumb visível da página (mesmo caminho, mesmos rótulos). Discrepâncias confundem motores IA que usam contexto de breadcrumb para entender categoria.

  • Rich Results Test não retorna erros críticos

    Após deploy, cole a URL do produto em https://search.google.com/test/rich-results — os itens Product e BreadcrumbList devem validar sem erros críticos.

Abrir no gerador de Schema

Pré-preenchido com placeholders de moda para nome de produto, descrição, marca, preço, disponibilidade e ratings. Substitua placeholders por dados reais e baixe um bloco JSON-LD pronto para Shopify.

Perguntas frequentes

Um produto Shopify de moda deve usar Product ou ProductGroup?

Use `Product` para um item simples sem variantes. Use `ProductGroup` sempre que existirem variantes de tamanho, cor ou material — permite que motores IA citem a variante certa para uma query específica («camisa de linho tamanho M») em vez de confundi-las. Templates Liquid padrão do Shopify emitem apenas `Product`; o upgrade para `ProductGroup` é manual mas vale a pena para qualquer loja de moda com múltiplos tamanhos.

Posso emitir AggregateRating sem reviews visíveis na página?

Não. Schema deve refletir conteúdo visível. Se emitir `aggregateRating: 4.7 from 32 reviews` mas a página não tem widget de reviews, motores IA e Google flagam como pouco confiável. Renderize as reviews visivelmente (apps Shopify como Judge.me ou Shopify Reviews nativo) ou remova o campo schema.

Cada variante de cor deve ser uma entrada hasVariant separada?

Sim quando a variante tem SKU, cor, tamanho, imagem, preço ou disponibilidade distintos. Motores IA shopping respondendo «a camisa de linho preta ainda está em estoque» precisam que cada variante seja um nó Product endereçável separadamente com seu próprio `offers.availability`. Só cor → um `hasVariant` por cor; só tamanho → um por tamanho; tamanho+cor → produto cartesiano.

O schema ProductGroup substitui os feeds de produto do Shopify?

Não. O JSON-LD na página complementa os feeds (o `/products.json` auto-gerado do Shopify, Google Merchant feed, Meta Catalog). Motores IA shopping crawlam páginas diretamente *e* lêem feeds — ambos sinais importam. Não largue um pelo outro.

Recursos relacionados