O Jefacil expõe um feed XML no formato Google Shopping (RSS 2.0 + namespace g:) que o Google Merchant Center e o Meta Advantage+ importam automaticamente. Uma URL por loja, autenticada por token rotacionável, sem OAuth.
Opcionalmente, você pode conectar a Content API pra saber quando o Google reprovou um item (imagem quebrada, GTIN inválido, preço divergente, etc).
Ativar o feed
Configurações → Lojas → editar loja → seção “Feed Google Shopping”.
Clique em “Gerar link”. O Jefacil cria um token opaco de 64 caracteres e devolve a URL completa — algo como:
https://seu-app.com.br/api/feed/<storeId>/google-shopping.xml?token=<token>
⚠️ Copie agora. O token completo só aparece uma vez por segurança. Se perder, clique em “Rotacionar token” e reconfigure no Merchant Center.
Configurar no Google Merchant Center
- Entre em Merchant Center.
- Produtos → Feeds → Adicionar feed principal.
- País: Brasil · Idioma: Português · Destinos: Shopping Ads (+ Free listings se estiver habilitado).
- Método: Busca programada. Cole a URL do Jefacil.
- Frequência: diária (recomendado).
- Fuso: America/São_Paulo.
O Google roda a primeira validação na hora. Se der erro de formato, você vê imediato em Produtos → Diagnóstico. A partir daí, ele busca o feed 1x/hora em background.
Mesmo feed, 3 destinos
O formato do Google é aceito por:
- Google Merchant Center (Shopping Ads, Free listings)
- Meta Advantage+ (Catalog → Fonte de dados → URL agendada)
- Vários marketplaces menores que aceitam XML no padrão
g:
Você cola a mesma URL em todos e cada um busca no ritmo dele.
O que vai no feed
Produtos ativos da loja atual (não vem produtos inativos nem de outras lojas). Pra cada item:
| Campo | Origem |
|---|---|
g:id | SKU do produto (ou ID do Jefacil se não tiver SKU) |
g:title | Nome |
g:description | Descrição (ou nome se vazia) |
g:link | URL do app (fallback — idealmente aponta pra landing page própria) |
g:image_link | URL da foto (só se o produto tem foto no Jefacil) |
g:availability | in stock / out of stock (baseado em stock > 0) |
g:price | Preço do StoreProduct + “BRL” |
g:condition | new (fixo — ajuste no roadmap) |
g:brand, g:gtin, g:mpn, g:product_type, g:google_product_category | Só aparecem se preenchidos no produto |
Os campos opcionais ficam no cadastro do produto (Produtos → editar → aba Avançado → seção “Catálogo online”). Quanto mais preenchido, melhor a qualidade do anúncio no Google:
- GTIN/EAN — aumenta match orgânico.
- Brand — obrigatório pra muitas categorias no Merchant.
- google_product_category — usar a taxonomia oficial pra melhorar rank.
Status dos itens (Content API)
O feed por si só não te conta se algum item foi rejeitado. Pra isso precisa da Content API for Shopping — um OAuth separado com a sua conta do Merchant Center.
Conectar
- Super admin registra o app no Google Cloud Console com escopo
/auth/content(veja channels_setup.md). - Na tab Canais → Google Shopping → Status dos itens do feed, informe o Merchant Center ID (número no topo do painel do Merchant) e clique em “Conectar Google Merchant”.
- Popup abre, você autoriza no Google. Ao voltar, o badge vira Ativo.
Rodar sync
Dois caminhos:
- Manual — clique em “Sincronizar agora”. Puxa todos os productstatuses em segundos.
- Automático — um cron diário às 4h (horário Brasília) roda sync pra todas as contas conectadas. Você só olha os resultados.
Interpretar
Depois do sync, aparecem 3 contadores:
- Erros (vermelho) — item reprovado; não aparece nas Shopping Ads até corrigir.
- Avisos (âmbar) — item aprovado mas com algum aviso (ex: imagem pequena demais).
- Se zerado, “Todos os itens OK 🎉”.
A tabela lista cada problema com Produto, Severidade, Código + descrição do Google. Códigos comuns:
| Código | O que corrigir |
|---|---|
image_link_broken | Foto do produto está 404 ou inacessível pro Google |
missing_gtin | Falta GTIN/EAN (obrigatório pra produtos marcados como “tem GTIN”) |
price_mismatch | Preço no feed diferente do preço na landing page |
description_too_short | Descrição < 10 caracteres |
invalid_gtin | GTIN com dígito verificador errado |
Corrige no Jefacil → espera o próximo sync (ou roda manual) → confirma que o problema saiu da lista.
Por que não fazemos OAuth na ida também?
Porque o feed URL é infinitamente mais simples — o lojista cola uma URL e esquece. OAuth exige:
- Registrar o app no Google Cloud (o lojista não tem).
- Verificação do app pra sair do “unverified” (dias/semanas).
- Manutenção de refresh tokens.
Feed URL com token opaco entrega 95% do valor (Google consegue o catálogo) com 5% da complexidade. A Content API fica só pra quem quer o caminho de volta (status), que é bem menos crítico.
Rotacionar / revogar token
Se o token vazar ou você quiser refresh por política:
- “Rotacionar token” — gera um novo, invalida o antigo. Você precisa reconfigurar no Merchant Center (cola a URL nova).
- “Desabilitar feed” — zera o token. Qualquer request pra essa URL vira 404. Bom pra quando sai de uma fase de lançamento e não quer mais oferecer o feed.