Schema para comércio

Schema para comércio é meu termo abrangente para os tipos de listagem do schema.org — Product, ProductGroup e JobPosting — que o Google transforma em resultados avançados de Shopping e Empregos. Veja como se relacionam e quando usar cada um.

1 sinal de evidência nesta página

“Schema para comércio” é meu rótulo prático — não uma categoria do Google ou schema.org — para tipos de listagem que alimentam resultados transacionais: Product (um item vendável), ProductGroup (pai que agrupa variantes) e JobPosting (uma vaga aberta). O Google os divide em duas famílias de documentação, e o schema.org também não os unifica. O vínculo é apenas o uso em SEO: listagens estruturadas que podem receber tratamento especializado na SERP. Nada disso é fator de ranqueamento: gera elegibilidade, não posição, nem garante CTR, exibição ou citação por IA. Estrelas de avaliações têm perfil próprio; política de devolução no nível de Organization e exceções de frete no nível de Offer são registros separados. Os riscos de ciclo de vida também variam: produto desatualizado costuma perder elegibilidade, mas vaga encerrada não removida pode causar ação manual. Este hub encaminha; as tabelas de propriedades ficam nas análises de cada tipo.

TL;DR — “Schema para comércio” é um agrupamento meu, de profissional, não uma categoria do Google ou schema.org, para tipos de listagem que geram resultados transacionais: Product, ProductGroup e JobPosting. O Google os separa — Product/Variantes ficam em “Shopping”, enquanto anúncios de vagas aparecem na lista geral de guias de recursos. O schema.org tampouco os unifica: Product → ProductGroup é uma relação real de pai/filho (Thing > Product > ProductGroup), enquanto JobPosting fica no ramo Intangible (Thing > Intangible > JobPosting), sem relação com Product. O único elo é o uso em SEO — listagens estruturadas que o Google transforma em tratamento especializado na SERP (listagens de comerciantes, Google for Jobs). Nada é fator de ranqueamento; compra elegibilidade — não exibição, aumento de CTR ou citação de IA garantidos, que são três resultados separados e incertos. A elegibilidade de Review/AggregateRating segue perfil próprio, e dados de devolução/frete dividem-se entre política no nível de Organization e exceções no nível de Offer — mais dois contratos aos quais este hub apenas direciona. O risco do ciclo de vida também varia: Product desatualizado costuma perder elegibilidade, mas JobPosting vencido e não removido pode gerar ação manual.

Primeiro, um enquadramento honesto: este agrupamento é meu, não do Google

Este artigo combina vários vocabulários e recursos de busca relacionados por conveniência. Evidência desta afirmação Commerce schema is an editorial grouping rather than a single Schema.org type or Google feature. Escopo: This article's taxonomy; Schema.org and Google document individual types and search experiences. Confiança: alta · Verificado: Schema.org: Product Cada experiência do Google tem suas propriedades obrigatórias e recomendadas, e marcação válida não garante exibição. Evidência desta afirmação Google documents distinct structured-data requirements for product snippets and merchant listings, and valid markup does not guarantee display. Escopo: Google Product structured data and merchant-listing experiences. Confiança: alta · Verificado: Google: Product structured data

Quero ser transparente desde o início, porque a maioria dos conteúdos sobre schema de “comércio” ou “e-commerce” sugere silenciosamente que esses tipos formam uma família oficial. Não formam.

  • A própria documentação do Google os separa. Na galeria de dados estruturados, “Job posting” fica na lista geral e plana de guias de recursos — ao lado de tipos sem relação, como Article, Local business e Organization. Já “Product snippet”, “Merchant listing” e “Variants” ficam sob o subtítulo Shopping. Duas famílias de documentação diferentes.
  • O schema.org não os unifica. Sua hierarquia de tipos tem um grupo específico “Product, Offer, and AggregateOffer” — e JobPosting não aparece ao lado dele em nenhum agrupamento de nível superior.

Então por que colocá-los no mesmo artigo? Porque, na prática — na forma de trabalhar de um profissional de SEO —, representam o mesmo tipo de problema: conteúdo estruturado em formato de listagem, marcado para liberar uma experiência especializada na busca. Esse uso compartilhado é real e útil. A taxonomia compartilhada não é. Prefiro dizer isso claramente a fingir que o Google desenhou essa caixa.

Os três tipos em resumo

  • Product (schema.org/Product) — um item vendável. O Google transforma marcação Product válida em duas experiências: snippets de produto (estrelas e preço em páginas sem compra) e listagens de comerciantes (resultados mais completos no estilo Shopping em páginas de compra). Mínimo para resultado avançado: name mais pelo menos um entre offers, review ou aggregateRating — mas a rota review/aggregateRating segue as regras separadas de snippet de avaliação do Google (perfil próprio, incluindo restrição a avaliações autocontroladas), não a regra genérica “qualquer página de produto mostra estrelas”. Nem toda página Product ou de comerciante se qualifica automaticamente; consulte a análise de Review.
  • ProductGroup (schema.org/ProductGroup) — pai que agrupa as variantes de um item conceitual (camiseta em tamanhos e cores) para o Google entender que são opções do mesmo produto. Conecta variantes com hasVariant, variesBy e productGroupID. Não substitui Product: cada variante continua sendo Product completo; ProductGroup fica acima.
  • JobPosting (schema.org/JobPosting) — uma vaga aberta, marcada para elegibilidade à experiência Empregos do Google. As propriedades básicas obrigatórias são title, description, datePosted, hiringOrganization e jobLocation (ou applicantLocationRequirements para vagas totalmente remotas).

Mantenho este hub deliberadamente superficial nas tabelas de propriedades de cada tipo — as análises completas estão nos três artigos filhos indicados no final.

Onde ficam na hierarquia do schema.org

Esta é a parte que quase ninguém cita corretamente, e a diferença entre palpite e fato:

  • Product — Thing > Product.
  • ProductGroup — Thing > Product > ProductGroup. É um subtipo verdadeiro de Product, herda todas as propriedades de Product e adiciona hasVariant, productGroupID e variesBy. Portanto, “Product vs. ProductGroup” não é uma escolha excludente — ProductGroup é um Product especializado, criado para variantes.
  • JobPosting — Thing > Intangible > JobPosting. Um ramo totalmente separado. Sua definição não referencia Product, Offer nem qualquer tipo de comércio.

Conclusão: Product e ProductGroup têm relação taxonômica (pai/filho, verificável e citável); JobPosting não. O elo entre os três é o uso em SEO, não a herança de tipos. Diga isso e estará em terreno sólido.

Product vs. ProductGroup: quando usar cada um

Regra simples:

  • Uma configuração comprável → Product simples. Um SKU, um preço, uma página na qual se compra.
  • Um item conceitual, várias variantes compráveis → ProductGroup envolvendo seus membros Product. É a camisa em cinco cores. ProductGroup não é vendido diretamente — seus membros hasVariant são, cada qual com sku/gtin, preço e disponibilidade próprios.

O Google também documenta ProductGroup de outra forma: ele fica na página Variants, não como guia de recurso independente — reforçando que o Google o trata como extensão de Product, não como tipo de resultado avançado totalmente separado. As tabelas completas, a armadilha da URL completa em variesBy e a conciliação com item_group_id do Merchant Center pertencem à análise de ProductGroup, não aqui.

JobPosting: o elemento diferente

JobPosting não compartilha taxonomia com Product — mas tem o mesmo formato de problema, por isso merece lugar neste hub. Duas coisas o diferenciam operacionalmente:

  1. Uma vaga por página, sempre. Regra do Google: “The JobPosting markup must only be used on pages that contain a single job posting.” (Tradução) “A marcação JobPosting só deve ser usada em páginas que contenham uma única vaga.” Nunca em página de listagem ou resultados de busca. Product/ProductGroup não tem restrição equivalente — ProductGroup existe justamente para várias variantes em uma página.
  2. Vagas encerradas exigem conformidade, não abandono. Veja o risco abaixo — é onde as consequências mais se distanciam de Product.

Regras básicas compartilhadas pelos três

Embora não compartilhem taxonomia, os tipos seguem as diretrizes gerais de dados estruturados do Google, e vale declarar as regras uma vez:

  • Propriedades obrigatórias são o portão da elegibilidade. Se faltar uma, a página não se qualifica ao resultado. Propriedades recomendadas elevam a qualidade — o próprio Google usa salário de vaga como exemplo: usuários preferem anúncios com salário informado. A lógica “quanto mais completo, melhor” também se aplica a Product.
  • Elegibilidade ≠ exibição garantida. Marcação válida coloca você no conjunto; os sistemas do Google ainda decidem separadamente se exibem o aprimoramento.
  • Marque apenas conteúdo visível e correto. Nada invisível, avaliações falsas ou dados enganosos — políticas de spam e qualidade valem para os três, além das específicas de cada recurso.
  • JSON-LD é o formato recomendado para todos — mais fácil de manter em escala que Microdata/RDFa inline.

Onde cada tipo se conecta além da marcação na página

O verdadeiro valor unificador não é a taxonomia — é que o Google trata conteúdo em formato de listagem como uma linha de produto própria:

  • Product / ProductGroup ↔ Google Merchant Center. Você pode fornecer dados como marcação na página, feed do Merchant Center ou ambos. O Google recomenda ambos para maximizar elegibilidade e os concilia — sistemas separados, validados separadamente. Passar no teste de resultados avançados não valida o feed, e vice-versa. Preço e disponibilidade precisam coincidir na marcação, feed e checkout.
  • JobPosting ↔ Empregos do Google. Marcação válida torna uma página de vaga única elegível à experiência de Empregos — vertical distinta de Shopping.
  • Devoluções e frete se dividem do mesmo modo, em granularidade menor. MerchantReturnPolicy costuma ficar no nível de Organization — janela e condições padrão. OfferShippingDetails atua no nível de Offer para substituir o padrão em um item. São dois registros que podem ficar desatualizados separadamente; ambos precisam de manutenção.
  • Dados estruturados na página, feed do Merchant Center e o que recursos da Busca ou respostas de IA exibem são três contratos separados, não um pipeline — marcação válida gera elegibilidade no primeiro, não preenche automaticamente o segundo nem garante o terceiro.

Vale explicitar a assimetria do Bing: ele valida genericamente os três tipos conforme o schema.org, mas não publica tabelas próprias de propriedades ou políticas para nenhum deles, nem oferece equivalente a listagens de comerciantes ou Google for Jobs. Sobre ProductGroup, Fabrice Canel, do Bing, disse em setembro de 2024 que ele ainda não era consumido em legendas de Shopping, embora estivesse “no radar”. Mesmo vocabulário-base, mas apenas o Google construiu experiências documentadas específicas sobre ele.

Diferenças de risco e ciclo de vida

Este é o contraste que mais quero que as pessoas internalizem, porque quase ninguém o enquadra assim: listagens desatualizadas exigem higiene de ciclo de vida nos três tipos — mas os riscos são muito diferentes.

  • Um Product desatualizado ou sem estoque geralmente só perde elegibilidade ou mostra “esgotado”/“sem estoque”. Incômodo, não catastrófico.
  • Um JobPosting desatualizado e não removido é outra categoria de risco. Google: “We don’t allow expired job postings,” (Tradução) “Não permitimos vagas vencidas”, e deixar de expirar/remover vagas encerradas “may result in a manual action.” (Tradução) “pode resultar em ação manual”. As três formas aceitas: definir validThrough no passado, retornar 404/410 ou remover a marcação.

A lição é a mesma — listagens estruturadas precisam de processo de ciclo de vida —, mas, se você só puder criar um pipeline de limpeza, faça-o para vagas.

Schema para comércio ajuda no SEO?

Não no ranqueamento. John Mueller foi direto: “Structured data won’t make your site rank better.” (Tradução) “Dados estruturados não farão seu site ranquear melhor.” Eles geram elegibilidade a resultados avançados e experiências especializadas e, separadamente, ajudam o Google a entender as páginas. Confundir “adicionei schema” com “vou ranquear melhor” é o mito mais comum nos três tipos.

E não se trata apenas de ranqueamento. Elegibilidade, resultado avançado efetivamente exibido, aumento de CTR e receita são quatro alegações separadas — não as reduza a uma. Marcação válida não garante exibição em Shopping ou Empregos, mais cliques nem — como nenhum tipo deste hub é sinal documentado de visibilidade por IA — aparição/citação em AI Overviews ou AI Mode. Meça cada resultado isoladamente; implemente schema pelo recurso de busca que pode conquistar, não como substituto dos demais.

Minha visão acompanha a de Mueller: saiba para que o schema realmente serve antes de gastar tempo de desenvolvimento. Ele veio para ficar — Mueller também disse que o Google não está eliminando schema —, mas você o implementa para conquistar um recurso de busca, não para subir nos resultados, garantir cliques ou mover uma resposta de IA.

Para onde seguir

Este hub é o mapa; cada item abaixo é uma análise própria aninhada nele:

  • Schema Product — as duas experiências do Google, propriedades obrigatórias/recomendadas, enum de availability e confusão entre feed e marcação. Comece aqui se a página vende um item.
  • Schema ProductGroup — agrupamento com hasVariant/variesBy/productGroupID, padrões de uma ou várias páginas, armadilha da URL completa do schema.org e conciliação com item_group_id. Comece se há tamanhos/cores/materiais.
  • Schema JobPosting — propriedades, trabalho remoto/híbrido, regra de uma vaga por página, expiração e mudanças de acesso à Indexing API em 2024–2025. Comece para carreiras ou portal de vagas.
  • Schema MerchantReturnPolicy — tipo aninhado para política de devolução, precedência entre marcação e Merchant Center e confusão applicableCountry vs. returnPolicyCountry.
  • Schema OfferShippingDetails — propriedade complementar para tarifa/destino/prazo de frete e quando o Google a exige para listagens gratuitas.
  • Schema Review — perfil separado de elegibilidade por trás de review/aggregateRating: avaliação única vs. agregada, restrição a avaliações autocontroladas e por que nem todo produto mostra estrelas.

Na visão mais ampla, este hub fica no subcluster de dados estruturados — veja também o artigo irmão sobre marcação schema para vocabulário, formatos e ciclo de descontinuação. Tudo fica no cluster on-page, onde dados estruturados convivem com o restante do SEO técnico on-page.

Adicionar uma nota de especialista

Fixar uma citação de especialista

É uma pessoa nova? Crie o perfil não reivindicado dela em /admin/experts/ → Fixar uma citação de especialista primeiro.