---
title: "Product e Offer: dados estruturados pra loja virtual | Grupo Marfre"
description: "Product e Offer no schema.org: quais campos declarar (nome, imagem, marca, sku, preço, moeda, disponibilidade) e por que o preço deve ser igual ao da página."
canonical: https://grupomarfre.com.br/sites-agenticos/schema-product-e-offer/
alternate_html: https://grupomarfre.com.br/sites-agenticos/schema-product-e-offer/
language: pt-BR
last_updated: 2026-10-27
type: guia
---
# Product e Offer: dados estruturados pra loja virtual

**Resposta rápida:** Em uma loja virtual, o Product descreve o item (nome, imagem, marca, sku) e o Offer descreve a condição de compra (preço, moeda, disponibilidade). O preço no schema precisa ser igual ao que aparece na página. Avaliação só entra no schema se for real, coletada no próprio site e visível ao visitante.

Product e Offer são os dois tipos do schema.org que dizem a uma máquina o que a página de produto vende e em que condição. O Product traz a identidade do item: nome, imagem, marca e sku. O Offer traz a oferta: preço, moeda e disponibilidade. Os dois vão juntos, com o Offer dentro do Product.

A regra que mais evita problema é uma só: o schema repete o que a página já mostra. Preço, estoque e nota que existem só no código são dado inventado.

## Quais campos de Product uma loja virtual precisa declarar?

Declare quatro campos em todo produto: `name` (o mesmo título do H1 da página), `image` (URL absoluta de uma foto real do item), `brand` e `sku`. Acrescente `description` e `url`. Cada campo precisa bater com o texto visível, sem versão "otimizada" só pro código.

Na prática:

| Campo | O que colocar | Erro comum |
| --- | --- | --- |
| `name` | Nome do produto como aparece na página | Encher o nome de palavra-chave |
| `image` | URL absoluta da foto do produto | Apontar pro logotipo da loja |
| `brand` | Marca do item, como `Brand` com `name` | Pôr o nome da loja quando a marca é outra |
| `sku` | Código interno único do item | Reusar o mesmo sku em variações diferentes |
| `url` | Endereço canônico da página | Deixar com parâmetros de rastreamento |

Se o tipo [schema.org](https://grupomarfre.com.br/sites-agenticos/schema-org/) do seu negócio for `OnlineStore` ou `Store`, ele descreve a loja. O produto continua sendo um `Product` próprio, ligado à loja por [@id](https://grupomarfre.com.br/sites-agenticos/id-e-ligacao-de-entidades/).

## Como declarar a oferta: preço, moeda e disponibilidade?

O `offers` recebe um objeto `Offer` com `price`, `priceCurrency` e `availability`. O preço vai só com número, usando ponto como separador decimal e sem símbolo. A moeda vai separada, em código de três letras (`BRL`). A disponibilidade usa uma URL do vocabulário, como `https://schema.org/InStock`.

Exemplo fictício, com empresa e valores inventados:

```json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": "https://www.lojaexemplo.com.br/tenis-trilha-x/#produto",
  "name": "Tênis Trilha X",
  "image": ["https://www.lojaexemplo.com.br/img/tenis-trilha-x.jpg"],
  "description": "Tênis de corrida para trilha, solado de borracha.",
  "brand": { "@type": "Brand", "name": "Marca Exemplo" },
  "sku": "TRX-042-PRETO-40",
  "url": "https://www.lojaexemplo.com.br/tenis-trilha-x/",
  "offers": {
    "@type": "Offer",
    "url": "https://www.lojaexemplo.com.br/tenis-trilha-x/",
    "price": "389.90",
    "priceCurrency": "BRL",
    "availability": "https://schema.org/InStock"
  }
}
```

Esse bloco fica em `<script type="application/ld+json">`. Ele não leva `aggregateRating`, porque a loja do exemplo ainda não tem avaliação própria. Veja o formato em [JSON-LD](https://grupomarfre.com.br/sites-agenticos/json-ld/).

## O preço do schema pode ser diferente do preço da página?

Não. O valor de `price` precisa ser o mesmo que o visitante vê na página, na mesma moeda e na mesma condição. Se o produto está em promoção, o schema declara o preço promocional. Se acabou o estoque, o `availability` vira `https://schema.org/OutOfStock`, e a página diz o mesmo.

O motivo é prático. Quem lê o schema e o texto da página encontra duas versões do mesmo fato e não tem como saber qual vale, e a resposta sobre a sua loja pode sair com o valor errado. O mesmo cuidado vale quando [agentes navegam e agem no site a pedido do usuário](https://grupomarfre.com.br/sites-agenticos/agentes-que-compram/): o preço que eles leem precisa ser o do checkout.

Teste que você roda em um minuto, direto no HTML cru:

```bash
curl -s https://www.lojaexemplo.com.br/tenis-trilha-x/ | grep -oE '"price": *"?[0-9.]+'
```

O padrão pega o preço escrito como texto (`"389.90"`) ou como número (`389.90`). Compare o resultado com o preço que aparece na tela. Se o comando não devolve nada, o preço não está no HTML cru nesse formato: o bloco pode não existir, ser injetado por JavaScript depois do carregamento ou escrever o preço de outro jeito. Nesse caso, leia [conteúdo sem JavaScript](https://grupomarfre.com.br/sites-agenticos/conteudo-sem-javascript/).

Em loja com muitos itens, um ponto de falha é o preço que muda no sistema de gestão e não atualiza no bloco. A solução é gerar o JSON-LD a partir do mesmo campo de dados que alimenta o preço visível, nunca digitá-lo à parte.

## Quando posso marcar a avaliação do produto?

Só quando a avaliação for real, coletada no próprio site e visível na página. Segundo a diretriz de review snippet do Google, a regra é "Não agregue avaliações de outros sites". Nota do Google, do Reclame Aqui ou de marketplace não entra no `aggregateRating` da sua loja, mesmo que seja verdadeira.

Checklist antes de publicar `aggregateRating`:

1.  As avaliações foram deixadas por clientes na sua própria página de produto?
2.  O visitante consegue ver a nota e os comentários na página?
3.  A média e a contagem no schema batem com o que está visível?
4.  A nota é do produto daquela página, e não da loja inteira?

Se qualquer resposta for não, deixe `aggregateRating` de fora. Um produto sem estrela no schema é correto. Um com estrela copiada é violação. O caso completo está em [Avaliações no schema](https://grupomarfre.com.br/sites-agenticos/avaliacoes-no-schema/).

## Como conferir se o bloco está certo?

Rode quatro verificações depois de publicar: validar a sintaxe, comparar preço e disponibilidade com a página, buscar o bloco no HTML cru e checar se cada sku é único. Faça isso por amostra de categoria e repita quando mudar o tema, o plugin ou o sistema de preços.

1.  Valide o bloco numa ferramenta de teste (veja [como validar seus dados estruturados](https://grupomarfre.com.br/sites-agenticos/validar-dados-estruturados/)).
2.  Rode o `curl` acima e compare `price` com a tela.
3.  Confirme que `availability` muda quando o item fica sem estoque.
4.  Verifique que cada variação (tamanho, cor) tem sku próprio, ou que cada variação tem URL própria com seu Offer.

Lojas em plataforma pronta têm limites próprios. Em [Shopify](https://grupomarfre.com.br/sites-agenticos/site-agentico-na-shopify/), por exemplo, confira se o tema já emite dados de produto antes de acrescentar um bloco à mão, para não ficar com dois Products na mesma página.

## Perguntas frequentes

### Posso usar a nota do Google ou do Reclame Aqui no meu schema?

Não. A diretriz de review snippet do Google diz para não agregar avaliações de outros sites. O `aggregateRating` só aceita avaliação real, coletada no próprio site e visível na página.

### O que faço com produto sem estoque?

Mantenha a página e troque a disponibilidade para `OutOfStock`, em sincronia com o aviso visível ao visitante. Se o produto saiu de linha de vez, trate a URL com [redirecionamento 301](https://grupomarfre.com.br/sites-agenticos/redirecionamentos-301/) ou com um 404 de verdade.

### Produto com variações de tamanho e cor leva um Product ou vários?

A regra prática é que o schema descreva o que está na URL. Se cada variação tem URL própria, cada uma leva seu Product com sku e Offer. Se todas ficam numa página só, declare sem inventar variações que o visitante não vê.

### Declarar Product e Offer garante que a IA cite minha loja?

Não. Os dados estruturados deixam o produto claro para máquinas, mas a escolha de citar ou recomendar é do modelo. O que o bloco reduz é o risco de a IA ler preço, marca ou disponibilidade errados.

## Leia também

### [JSON-LD: o que é e o que se sabe sobre o uso pela IA](https://grupomarfre.com.br/sites-agenticos/json-ld/)

JSON-LD é um bloco de dados no HTML, no vocabulário schema.org. Veja o que é, um exemplo mínimo e o que o Google diz sobre dados estruturados e IA.

### [Avaliações no schema: quando pode e quando é violação](https://grupomarfre.com.br/sites-agenticos/avaliacoes-no-schema/)

aggregateRating no schema só vale com avaliação real, coletada e visível no próprio site. Veja quando pode, quando é violação e como testar a sua página.

### [Como validar seus dados estruturados](https://grupomarfre.com.br/sites-agenticos/validar-dados-estruturados/)

Como validar dados estruturados: Teste de pesquisa aprimorada do Google, validador do schema.org e parse em linha de comando para conferir o JSON-LD.

### [Loja virtual agêntica: o que muda no e-commerce](https://grupomarfre.com.br/sites-agenticos/site-agentico-para-ecommerce/)

Loja virtual agêntica: como deixar produto, preço, estoque e políticas legíveis para agentes de IA que pesquisam e compram, sem prometer resultado.

### [Loja Shopify agêntica: robots, dados de produto e limites](https://grupomarfre.com.br/sites-agenticos/site-agentico-na-shopify/)

Loja Shopify agêntica: como editar o robots.txt.liquid, entregar Product e Offer no tema e quais limites existem na raiz e na borda. Guia de referência.

### [@id: como ligar os blocos de dados estruturados entre si](https://grupomarfre.com.br/sites-agenticos/id-e-ligacao-de-entidades/)

@id no JSON-LD: como usar um identificador fixo e o @graph para ligar Organization, WebSite e Article e referenciar a mesma empresa em todas as páginas.

---

## Sobre o Grupo Marfre

Grupo Marfre Automação e Tecnologia LTDA (CNPJ 49.685.676/0001-55): agência de marketing digital e inteligência artificial com base em Contagem/MG, que atende o Brasil inteiro de forma remota.

- Endereço: Alameda das Cotovias, 75, Cabral, Contagem - MG, Brasil
- WhatsApp: (31) 93618-7272, https://wa.me/5531936187272
- E-mail: contato@grupomarfre.com.br
- Instagram: https://instagram.com/marfregrupo
- Serviços: gestão de tráfego pago (Meta Ads e Google Ads), site agêntico (site pronto pra assistentes de IA lerem), site que vira contato, SEO e Google, IA no WhatsApp, CRM e automação
- Serviço de site agêntico: https://grupomarfre.com.br/servicos/site-agentico/ · serviço de gestão de tráfego: https://grupomarfre.com.br/servicos/gestao-de-trafego/
- Guias: https://grupomarfre.com.br/sites-agenticos/ e https://grupomarfre.com.br/gestao-de-trafego/
- Método em 4 etapas: Diagnóstico, Estratégia, Execução, Otimização
- Segmentos já atendidos: clínica, consultório, advocacia, loja, igreja
- Preço e escopo não são publicados: são definidos por diagnóstico, caso a caso
- Todas as páginas em Markdown: https://grupomarfre.com.br/llms.txt · conteúdo completo: https://grupomarfre.com.br/llms-full.txt

Página HTML equivalente: https://grupomarfre.com.br/sites-agenticos/schema-product-e-offer/
