Jefacil Jefacil

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

  1. Entre em Merchant Center.
  2. Produtos → Feeds → Adicionar feed principal.
  3. País: Brasil · Idioma: Português · Destinos: Shopping Ads (+ Free listings se estiver habilitado).
  4. Método: Busca programada. Cole a URL do Jefacil.
  5. Frequência: diária (recomendado).
  6. 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:

CampoOrigem
g:idSKU do produto (ou ID do Jefacil se não tiver SKU)
g:titleNome
g:descriptionDescrição (ou nome se vazia)
g:linkURL do app (fallback — idealmente aponta pra landing page própria)
g:image_linkURL da foto (só se o produto tem foto no Jefacil)
g:availabilityin stock / out of stock (baseado em stock > 0)
g:pricePreço do StoreProduct + “BRL”
g:conditionnew (fixo — ajuste no roadmap)
g:brand, g:gtin, g:mpn, g:product_type, g:google_product_categorySó 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

  1. Super admin registra o app no Google Cloud Console com escopo /auth/content (veja channels_setup.md).
  2. 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”.
  3. 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ódigoO que corrigir
image_link_brokenFoto do produto está 404 ou inacessível pro Google
missing_gtinFalta GTIN/EAN (obrigatório pra produtos marcados como “tem GTIN”)
price_mismatchPreço no feed diferente do preço na landing page
description_too_shortDescrição < 10 caracteres
invalid_gtinGTIN 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.