Geral

Estrutura de dados unificada para marketplaces próprios aparecerem no Google Shopping: guia prático

Descubra como padronizar feeds de produtos e usar schema.org para colocar seu marketplace próprio no Google Shopping com visibilidade máxima.

Mais de 60% dos cliques em resultados de compras no Brasil concentram-se nos primeiros três anúncios da aba Google Shopping, segundo dados internos de grandes varejistas multimarcas. Para um marketplace próprio, ficar fora dessa vitrine significa abrir mão de tráfego qualificado com intenção de compra declarada. A barreira, porém, não é técnica — é a falta de padronização entre dezenas ou centenas de sellers que alimentam o catálogo.

A estrutura de dados unificada resolve esse gargalo ao impor um contrato único de atributos, formatos e validações que todos os parceiros devem cumprir antes de qualquer produto ir ao ar. Não se trata apenas de preencher planilhas: é arquitetura de informação que garante que o Google entenda, confie e exiba seu sortimento na íntegra.

O ponto de partida é mapear a especificação oficial do Google Merchant Center para cada categoria do seu mix. Roupas exigem idade, gênero, cor, tamanho e padrão; eletrônicos pedem voltagem, potência e certificação; cosméticos requerem volume, ingredientes e ANVISA. Cada atributo obrigatório vira campo obrigatório no seu onboarding — sem exceção.

Mapeamento de atributos por categoria e regra de validação

Crie uma matriz onde linhas são categorias (nível folha da sua taxonomia) e colunas são atributos do Merchant Center: id, title, description, link, image_link, availability, price, sale_price, brand, gtin, mpn, identifier_exists, condition, google_product_category, product_type, shipping, tax, color, size, gender, age_group, pattern, material, multipack, is_bundle, energy_efficiency_class e por aí vai. Marque cada célula como obrigatório, recomendado ou não aplicável.

Sobre essa matriz, construa validações automáticas no momento do cadastro ou atualização do seller:

  • GTIN: formato válido (EAN-13, UPC-A, ISBN-13) + check digit correto + não duplicado no catálogo.
  • Marca: lista controlada (não “Genérico”, “Marca Própria” sem CNPJ).
  • MPN: alfanumérico, único por SKU da marca.
  • identifier_exists: “false” apenas se GTIN e MPN forem genuinamente inexistentes (artesanais, vintage, private label sem código de barras).
  • Título: regex que impede ALL CAPS, caracteres promocionais (!!!, ***), e exige estrutura Marca + Modelo + Atributos-chave.
  • Imagem: URL acessível (HTTP 200), fundo branco (RGB 255,255,255), mínimo 800x800px, sem watermark, texto ou bordas.
  • Preço: numérico, duas casas decimais, moeda BRL, condizente com página de destino.
  • Disponibilidade: apenas valores permitidos (in_stock, out_of_stock, preorder, backorder).

Essas regras impedem que lixo entre no feed. O custo de corrigir um erro no Merchant Center após a subida é 10x maior do que barrar na origem.

Geração e hospedagem do feed principal

Com validações ativas, o feed torna-se um subproduto confiável. Gere um arquivo XML (padrão RSS 2.0 com namespace g:) ou CSV codificado em UTF-8, com uma linha por variante de produto (SKU único = id único). Hospede em URL estável, sem redirecionamentos, acessível via HTTP/HTTPS com cabeçalho Content-Type: application/xml ou text/csv.

Exemplo mínimo de item no feed XML:

<item>
  <g:id>SKU-12345-RED-M</g:id>
  <g:title>Nike Air Max 270 Vermelho Masculino 42</g:title>
  <g:description>Tênis de corrida com amortecimento Air Max, cabedal em mesh respirável. Tamanho 42 BR (US 9). Cor vermelho/preto.</g:description>
  <g:link>https://seumarketplace.com.br/produto/nike-air-max-270-vermelho-42</g:link>
  <g:image_link>https://cdn.seumarketplace.com.br/imagens/SKU-12345-RED-M_1.jpg</g:image_link>
  <g:availability>in_stock</g:availability>
  <g:price>599.90 BRL</g:price>
  <g:brand>Nike</g:brand>
  <g:gtin>7891234567890</g:gtin>
  <g:mpn>AH8050-600</g:mpn>
  <g:condition>new</g:condition>
  <g:google_product_category>Apparel &amp; Accessories &gt; Shoes &gt; Athletic Shoes</g:google_product_category>
  <g:product_type>Calçados &gt; Tênis &gt; Corrida</g:product_type>
  <g:color>Vermelho/Preto</g:color>
  <g:size>42</g:size>
  <g:gender>Male</g:gender>
  <g:age_group>Adult</g:age_group>
  <g:shipping><g:country>BR</g:country><g:service>Standard</g:service><g:price>0.00 BRL</g:price></g:shipping>
</item>

Agende a regeneração diária às 03h (horário de menor tráfego) e submeta a URL no Merchant Center > Produtos > Feeds. Ative a busca automática (fetch) diária. Para catálogos acima de 50 mil SKUs, divida em feeds por categoria ou marca e use o recurso de “Feeds múltiplos” do Merchant Center.

Sincronização via Content API para tempo real

Feeds diários resolvem a base, mas promoções relâmpago, ruptura de estoque e alterações de preço exigem latência de minutos. A Content API for Shopping permite atualizar price, sale_price, availability e sale_price_effective_date por SKU em chamadas REST individuais ou em lote (batch). Integre seu OMS/ERP à API: quando o estoque zera, a API envia availability: out_of_stock em segundos; quando o preço muda no painel do seller, a API propaga antes da próxima varredura do feed.

Configure quotas e monitoramento: o Google concede 10.000 operações/dia por projeto (expansível via suporte). Use batch de até 1.000 itens por chamada para economizar quota. Logue erros 4xx/5xx e reenvie com backoff exponencial. Essa camada elimina as reprovações “preço divergente” e “produto indisponível” que derrubam impressões.

Dados estruturados schema.org nas páginas do site

O feed garante presença na aba Shopping; o schema.org garante rich snippets na busca universal (estrelas, preço, disponibilidade, imagem) e melhora a compreensão semântica do rastreador. Implemente JSON-LD nas páginas de produto (PDP) e listagem (PLP):

  • Product: name, description, image, brand, sku, gtin, mpn, offers (Offer), aggregateRating (se houver reviews), review.
  • Offer: price, priceCurrency, availability (schema.org/InStock, OutOfStock, PreOrder), seller (Organization), priceValidUntil, shippingDetails.
  • BreadcrumbList: trilha completa da home até o produto.
  • ItemList (na PLP): lista de produtos com position, url, name.

Exemplo de JSON-LD na PDP:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "sku": "SKU-12345-RED-M",
  "name": "Nike Air Max 270 Vermelho Masculino 42",
  "description": "Tênis de corrida com amortecimento Air Max, cabedal em mesh respirável. Tamanho 42 BR (US 9). Cor vermelho/preto.",
  "brand": {
    "@type": "Brand",
    "name": "Nike"
  },
  "gtin13": "7891234567890",
  "mpn": "AH8050-600",
  "image": ["https://cdn.seumarketplace.com.br/imagens/SKU-12345-RED-M_1.jpg"],
  "offers": {
    "@type": "Offer",
    "url": "https://seumarketplace.com.br/produto/nike-air-max-270-vermelho-42",
    "priceCurrency": "BRL",
    "price": 599.90,
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "Seu Marketplace"
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": 0,
        "currency": "BRL"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "businessDays": {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
          "opens": "08:00",
          "closes": "18:00"
        },
        "cutOffTime": "14:00",
        "handlingTime": {
          "@type": "QuantitativeValue",
          "minValue": 0,
          "maxValue": 1,
          "unitCode": "DAY"
        },
        "transitTime": {
          "@type": "QuantitativeValue",
          "minValue": 1,
          "maxValue": 3,
          "unitCode": "DAY"
        }
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.6,
    "reviewCount": 127
  }
}

Valide com o Rich Results Test e a Ferramenta de Inspeção de URL no Search Console. Corrija avisos de “campo recomendado ausente” (ex.: sku, gtin, aggregateRating).

Governança de sellers e qualidade contínua

A estrutura unificada só se sustenta se houver governança. Defina SLA de qualidade por seller: taxa de erro no feed < 0,5%, taxa de reprovação no Merchant Center < 1%, tempo de correção de erro crítico < 4h. Publique um seller handbook com exemplos de títulos, imagens, descrições e atributos por categoria. Realize auditorias quinzenais: amostragem aleatória de 50 SKUs por seller + verificação de conformidade visual (imagem real vs. cadastrada).

Bloqueie automaticamente sellers que acumularem 3 reprovações consecutivas no mesmo SKU. Ofereça ferramenta de auto-validação no painel do seller: ele cola o GTIN e o sistema devolve se é válido, se já existe no catálogo, se a marca confere. Quanto mais cedo o erro é pego, menor o custo.

O método Pagi reforça que a padronização de dados em escala exige automação de ponta a ponta — da validação no onboarding à exposição no Merchant Center e no schema.org — sem depender de planilhas manuais.

Monitoramento, relatórios e otimização contínua

Instale dashboards que cruzem três fontes: (1) Diagnóstico do Merchant Center (erros, avisos, itens ativos, impressões, cliques), (2) Search Console (rich snippets, impressões orgânicas, CTR por página), (3) Analytics (tráfego /shopping, receita, ROAS). Crie alertas: queda > 20% em itens ativos dia a dia, erro novo em > 5% do catálogo, CTR orgânico caindo > 15% em 7 dias.

Relatório semanal obrigatório por categoria: % de SKUs com GTIN válido, % com schema.org válido, impressões Shopping vs. orgânico, top 10 erros do Merchant Center, sellers com mais reprovações. Use para priorizar correções e treinar sellers recorrentes.

Teste A/B em títulos: variação A (padrão atual) vs. B (inclui benefício ou uso: “Tênis Corrida Amortecimento Leve”). Meça CTR no Merchant Center e posição média. Itere mensalmente.

Conclusão prática

Uma estrutura de dados unificada transforma o caos de centenas de sellers em um catálogo que o Google confia e exibe. Comece pelo mapeamento de atributos obrigatórios por categoria, imponha validações automáticas no onboarding, gere feed diário + API para tempo real, implemente schema.org completo nas páginas e governe com SLAs claros e relatórios semanais. O resultado é visibilidade proporcional ao seu sortimento — não ao seu esforço manual.

Para aprofundar a gestão de catálogo em escala, veja como a Loja Magazines otimiza estoques no varejo multimarcas online e como destacar sua loja de varejo online em um mercado competitivo.

Checklist prático

0 de 9 concluídos

Perguntas frequentes

Por que meu marketplace próprio não aparece no Google Shopping?

A causa mais comum é a ausência ou inconsistência de dados estruturados no feed de produtos. O Google exige atributos obrigatórios como GTIN, marca, preço, disponibilidade e identificadores únicos. Sem padronização, o Merchant Center reprova ou limita a exibição dos itens.

Qual a diferença entre feed XML e dados estruturados no site?

O feed XML (ou TXT/CSV) alimenta o Google Merchant Center com informações comerciais para anúncios e abas gratuitas. Já os dados estruturados (JSON-LD/schema.org) nas páginas do site ajudam o rastreador a entender o conteúdo e gerar rich snippets na busca orgânica. Ambos devem ser consistentes entre si.

Preciso de GTIN para todos os produtos do meu marketplace?

Sim, o GTIN (EAN, UPC, ISBN) é obrigatório para a maioria das categorias no Google Shopping. Produtos sem GTIN — como artesanais, privados ou vintage — devem usar o atributo "identifier_exists: false" e ter marca + MPN preenchidos corretamente para não serem reprovados.

Como manter a qualidade do feed com centenas de sellers?

Crie regras de validação automática no onboarding de sellers: exija GTIN, imagens em fundo branco, títulos padronizados (marca + modelo + atributos-chave) e descrições mínimas de 150 caracteres. Use ferramentas de feed management para monitorar erros diários e bloquear itens inválidos antes de enviar ao Google.

O schema.org Product substitui o feed do Merchant Center?

Não. O schema.org nas páginas melhora a indexação orgânica e rich snippets, mas o Google Shopping (aba gratuita e paga) depende prioritariamente do feed enviado ao Merchant Center. O ideal é sincronizar ambos: o feed garante presença comercial; o schema reforça relevância semântica.

Com que frequência devo atualizar o feed de produtos?

Atualize pelo menos uma vez ao dia para preço, estoque e disponibilidade. Em promoções relâmpago ou datas sazonais, aumente para atualizações a cada 30-60 minutos via API Content do Merchant Center. Feeds desatualizados geram reprovações por "preço divergente" ou "produto indisponível".