Feeds de dados
Como gerar arquivos de produtos para Google Shopping, Meta, Mercado Livre e outros destinos, com link público e geração agendada, e o mapa das rotas.
Um feed de dados é um arquivo (XML, CSV ou JSON) com os produtos da loja, no formato que um canal externo espera: o Google Merchant Center para o Google Shopping, o catálogo do Meta (Facebook e Instagram), o Mercado Livre, ou um formato livre para um ERP e para análises. Você cadastra o feed uma vez (tipo, formato, filtros), a plataforma gera o arquivo e entrega um link público que o canal consulta de tempos em tempos.
Como funciona
Ciclo de uso
- Escolher o tipo e os campos
GET /data-feeds/fields/{feed_type}lista os campos que o tipo suporta. Paragoogle_shopping,facebookemercado_livre, a lista é a exigida pelo canal. - Criar o feed
POST /data-feedscom nome, tipo, formato, filtros e, se quiser, o agendamento. A resposta já traz opublic_url. - Gerar
POST /data-feeds/{id}/generatemonta o arquivo, grava no servidor e devolve o conteúdo. - Entregar o link ao canal
Cadastre o
public_urlno Google Merchant Center, no Meta ou onde for. Daí em diante a plataforma atualiza o arquivo no ritmo do agendamento.
Tipos de feed
feed_type | Para quê | Formato do arquivo gerado |
|---|---|---|
google_shopping | Google Merchant Center (Atom com o namespace g:) | Sempre XML |
facebook | Catálogo do Meta | Sempre CSV |
mercado_livre | Mercado Livre | CSV; JSON se file_format for json |
custom | Qualquer destino | O file_format escolhido: xml, csv ou json |
Os três primeiros tipos têm o formato imposto pelo canal: o file_format é gravado, mas o conteúdo gerado segue a tabela. Só o custom obedece ao file_format.
Status
O feed é A (ativo) ou D (desativado). Ao gravar você pode mandar a letra ou active e disabled; a resposta devolve sempre a letra. Apenas feeds ativos com schedule_interval maior que zero são regerados pelo agendador.
Conceitos-chave
Filtros
O objeto filters escolhe quais produtos entram. Todos os campos são opcionais:
| Campo | Tipo | Efeito |
|---|---|---|
status | texto | Status do produto. active (padrão), disabled, hidden ou a letra. |
category_ids | lista de UUID | Só produtos destas categorias principais. |
vendor_ids | lista de UUID | Só produtos destes sellers. |
min_price, max_price | inteiro | Faixa de preço de venda, em centavos. |
in_stock | booleano | Se true, só produtos com estoque. |
Produtos excluídos nunca entram.
Mapeamento de campos
field_mapping guarda os campos escolhidos. Nos feeds do Google, do Meta e do Mercado Livre, desmarcar um campo opcional o tira do arquivo. Um feed sem mapeamento ({}) gera todos os campos opcionais. No feed do Google, a entrada g:google_product_category com default_value define a categoria do Google para o feed inteiro.
O link público
https://<domínio da loja>/api/v1/feeds/<token>.<xml|csv|json>. O link serve o último arquivo gerado, não regera na hora, e fica em cache por uma hora. Gerar um novo token invalida o link antigo.
Feeds de seller
Cada feed pode pertencer à loja (marketplace) ou a um seller (vendor_id). A lista aceita vendor_id e marketplace_only=true para separar.
Endpoints
| Método | Caminho | Para que serve | Auth |
|---|---|---|---|
| GET | /api/v1/admin/data-feeds | Lista os feeds | admin |
| GET | /api/v1/admin/data-feeds/{id} | Consulta um feed | admin |
| GET | /api/v1/admin/data-feeds/fields/{feed_type} | Lista os campos de um tipo de feed | admin |
| POST | /api/v1/admin/data-feeds | Cria um feed | admin |
| PUT | /api/v1/admin/data-feeds/{id} | Altera um feed | admin |
| DELETE | /api/v1/admin/data-feeds/{id} | Apaga um feed | admin |
| POST | /api/v1/admin/data-feeds/{id}/generate | Gera o arquivo agora | admin |
| POST | /api/v1/admin/data-feeds/{id}/regenerate-token | Troca o token do link público | admin |
Erros comuns
- Entregar o link ao Google antes de gerar: o link responde 404 ("Feed has not been generated yet") até a primeira geração.
- Esperar que
file_format: "json"mude um feedgoogle_shopping: o formato do Google é sempre XML. - Filtrar preço em reais:
min_priceemax_pricesão em centavos. - Colar o link público em um lugar visível: ele não tem senha. Se vazou, gere um novo token.
- Esperar que o link atualize sozinho com a loja: ele serve o último arquivo gerado. Use
schedule_intervalou chamegenerate. - Confundir 403
module_disabledcom falta de privilégio: é o módulodata-feedsque está desligado na loja. - Enviar
schedule_intervalpequeno demais: o agendador acorda a cada 15 minutos, então valores menores que isso não adiantam.