Módulo de Feed Avançado - XML, CSV e TXT
O módulo de Feed Avançado permite criar e gerenciar feeds de produtos para diversos canais de marketing como Google Shopping, Facebook/Meta, Instagram, Pinterest, TikTok e dezenas de outros marketplaces e plataformas de comparação de preços.
Com ele, você pode gerar arquivos XML, CSV ou TXT contendo os dados dos seus produtos no formato exigido por cada plataforma, agendar a geração automática e acompanhar a performance dos seus feeds.
Onde encontrar o módulo no painel
O módulo fica disponível no menu do Magento em:
Catálogo → Feed Avançado (Advanced Product Feeds)
| Seção | Função |
|---|---|
| Feeds | Lista e gerenciamento dos feeds criados |
| Filtros | Regras para selecionar quais produtos entram no feed |
| Mapeamento de Categorias | Vincular suas categorias às categorias da plataforma destino (ex: Google Shopping) |
| Atributos Dinâmicos | Atributos calculados com base em condições (ex: status de estoque personalizado) |
| Variáveis Dinâmicas | Variáveis avançadas via PHP para cálculos especiais (ex: parcelamento, GTIN) |
| Templates | Modelos pré-configurados para diversas plataformas |
| Relatórios | Acompanhamento de cliques, pedidos e receita gerados pelos feeds |
| Importar/Exportar | Migração de configurações entre ambientes |
Criando um novo feed — Passo a passo
1. Acesse a seção de Feeds
Vá em Catálogo → Feed Avançado → Feeds e clique em Adicionar Feed.
2. Escolha um template ou crie do zero
Ao clicar em Adicionar Feed, você verá uma lista de templates pré-instalados. Os mais utilizados são:
- Google Shopping — formato XML, usado para o Google Merchant Center
- Storefront Social Facebook — formato CSV, usado para catálogo do Facebook/Instagram
- Google Shopping Review — formato XML, para exportar avaliações de produtos
- Custom CSV / Custom XML — para criar um feed totalmente personalizado
Selecione o template desejado. Se preferir controle total, escolha "Criar feed personalizado" e defina o formato (CSV, TXT ou XML).
3. Configure as informações básicas
Após selecionar o template, preencha:
- Nome: um nome descritivo para identificar o feed (ex: "Google Shopping - Principal")
-
Nome do arquivo (Filename): o nome do arquivo que será gerado. Não inclua a extensão — ela é adicionada automaticamente com base no tipo. Se o nome tiver mais de uma palavra, use hífen ou underline (ex:
google-shopping-principal) - Visão da Loja (Store View): selecione qual loja/idioma será utilizado para gerar os dados
- Ativo (Is Active): marque como "Sim" para que o feed funcione
Importante: Sempre lembre de ativar o feed após salvar. Feeds desativados não serão gerados automaticamente.
4. Salve e gere o feed
Clique em Salvar e Continuar Editando. Após salvar, dois botões ficam disponíveis no canto superior direito:
- Gerar (Generate): processa e gera o arquivo do feed
- Validar (Validate): verifica se o feed atende às regras de validação da plataforma destino
Após a primeira geração, o sistema exibe:
- URL de acesso ao feed — este é o link que você vai enviar para a plataforma (Google Merchant, Facebook, etc.)
- Contagem de produtos — quantidade de produtos incluídos no feed
- Última geração — data/hora da última vez que o feed foi gerado
- Tempo de geração — quanto tempo levou para processar
Dica: Na primeira configuração, sempre gere o feed, copie a URL e teste abrindo no navegador para verificar se o conteúdo está correto antes de enviar para a plataforma.
Entendendo o conteúdo do feed
Feed CSV/TXT
No feed CSV, a aba Configurações de Conteúdo (Content Settings) apresenta uma tabela de mapeamento de campos. Cada linha representa uma coluna no arquivo final.
Para cada coluna, você define:
-
Nome da coluna: o cabeçalho que aparecerá no CSV (ex:
id,title,price) -
Tipo de valor:
-
Padrão (Pattern): permite inserir um valor fixo ou usar padrões dinâmicos como
{{ product.sku }} - Atributo (Attribute): seleciona diretamente um atributo da loja (SKU, nome, preço, etc.)
- Produto Pai (Parent Product): puxa a informação do produto pai (configurável). Se o produto simples não tiver a informação, busca do pai. Recomendado para URL e imagens em produtos configuráveis
- Somente Produto Pai (Only Parent Product): pega a informação exclusivamente do produto configurável
-
Padrão (Pattern): permite inserir um valor fixo ou usar padrões dinâmicos como
Para adicionar uma nova coluna, clique em Adicionar e configure os campos acima.
Configurações do arquivo CSV
Antes dos campos, configure:
- Delimitador: caractere que separa as colunas (vírgula, tab, pipe, etc.)
- Enclosure: aspas simples, duplas ou nenhuma para envolver os valores
- Incluir cabeçalho: "Sim" para incluir a linha de cabeçalho com os nomes das colunas
Pré-visualização
Após salvar as configurações, use o botão de Pré-visualização para ver uma amostra do feed sem precisar gerar o arquivo completo. Isso é útil para validar rapidamente se os dados estão corretos.
Feed XML
No feed XML, a aba Configurações de Conteúdo contém o template XML completo que define a estrutura do arquivo.
Estrutura básica de um feed XML
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
{% for product in context.products %}
<item>
<g:id><![CDATA[{{ product.sku }}]]></g:id>
<title><![CDATA[{{ product.name }}]]></title>
<link><![CDATA[{{ product.url }}]]></link>
<g:price><![CDATA[{{ product.final_price | price }} BRL]]></g:price>
<g:sale_price><![CDATA[{{ product.special_price | price }} BRL]]></g:sale_price>
<description><![CDATA[{{ product.description | stripHtml | truncatewords: 150 }}]]></description>
<g:product_type><![CDATA[{{ product.category.path }}]]></g:product_type>
<g:image_link><![CDATA[{{ product.image }}]]></g:image_link>
<g:additional_image_link><![CDATA[{{ product.images }}]]></g:additional_image_link>
<g:condition><![CDATA[new]]></g:condition>
<g:shipping_weight><![CDATA[{{ product.weight }} kg]]></g:shipping_weight>
<g:item_group_id><![CDATA[{{ product.parent.sku }}]]></g:item_group_id>
</item>
{% endfor %}
</channel>
</rss>
Elementos-chave:
-
{% for product in context.products %}...{% endfor %}— loop que percorre todos os produtos do feed -
{{ product.atributo }}— insere o valor dinâmico do atributo do produto -
<![CDATA[ ... ]]>— bloco CDATA que protege caracteres especiais como<e&(obrigatório em XML) - Filtros como
| price,| stripHtml,| truncatewords: 150— transformam o valor antes de incluí-lo no feed
Lógica condicional no XML
Você pode usar condições {% if %} para controlar o que aparece no feed:
Exibir preço promocional apenas quando existir desconto:
<g:price><![CDATA[{{ product.price | price }} BRL]]></g:price>
{% if product.price > product.final_price %}
<g:sale_price><![CDATA[{{ product.final_price | price }} BRL]]></g:sale_price>
{% endif %}
Usar a URL do produto pai quando o produto não é visível individualmente:
{% if product.visibility == 'Not Visible Individually' %}
<link><![CDATA[{{ product.parent.url }}]]></link>
{% else %}
<link><![CDATA[{{ product.url }}]]></link>
{% endif %}
Exibir informações diferentes para produtos configuráveis e simples:
{% if product.type_id == 'configurable' %}
<g:item_group_id><![CDATA[{{ product.sku }}]]></g:item_group_id>
{% else %}
<g:item_group_id><![CDATA[{{ product.parent.sku }}]]></g:item_group_id>
{% endif %}
O que é
item_group_id? Para produtos configuráveis (ex: uma camiseta com variações de cor/tamanho), o Google precisa saber que os produtos filhos pertencem ao mesmo grupo. Todos os filhos recebem o mesmoitem_group_id(geralmente o SKU do produto pai), e cada um tem seu própriog:iddiferente. Assim o Google entende que são variações do mesmo produto.
Datas do preço promocional
Quando o Google Shopping exige as datas de vigência da promoção, o formato precisa incluir o fuso horário:
{% if product.special_price %}
<g:sale_price_effective_date>
{{ product.special_from_date | dateFormat: 'Y-m-d\T00:00:00-03:00' }}/{{ product.special_to_date | dateFormat: 'Y-m-d\T00:00:00-03:00' }}
</g:sale_price_effective_date>
{% endif %}
O -03:00 no final representa o fuso horário de Brasília (GMT-3). Sem essa informação, o Google pode rejeitar o feed.
Filtros — Controlando quais produtos entram no feed
Filtros permitem selecionar exatamente quais produtos serão incluídos no feed. Isso evita exportar produtos irrelevantes, sem estoque ou de categorias específicas.
Criando um filtro
Acesse Catálogo → Feed Avançado → Filtros e clique em Adicionar Filtro.
- Dê um nome descritivo ao filtro (ex: "Apenas produtos ativos com estoque")
- Selecione os feeds aos quais o filtro será aplicado (ou aplique depois na edição do feed)
- Defina as regras na aba Regras
Exemplos práticos de filtros
Apenas produtos habilitados:
- Status → é → Habilitado
Apenas produtos em estoque:
- Disponibilidade de estoque → é → Em estoque
Apenas produtos com estoque acima de 5 unidades:
- Quantidade → maior que → 5
Apenas produtos de uma categoria específica:
- Categoria → é um de → (selecione as categorias desejadas no seletor de árvore)
Excluir uma categoria específica:
- Categoria → não é um de → (selecione as categorias a excluir)
Apenas produtos com desconto (promoções):
- Preço Especial → maior que → 0
Apenas determinado tipo de produto:
- Tipo de produto → é um de → Produto Simples, Produto Configurável
Atenção com filtro de visibilidade: Se você trabalha com produtos configuráveis, evite filtrar por "Visibilidade: Catálogo" ou "Catálogo, Pesquisa", pois isso pode excluir os produtos simples filhos que são "Não Visível Individualmente". Esses produtos filhos geralmente precisam estar no feed para que as variações apareçam corretamente na plataforma.
Dica sobre filtro de categorias: Usar "CATEGORIA É 1,2,3" exige que o produto esteja em TODAS as categorias listadas simultaneamente. Se quer produtos que estejam em QUALQUER uma das categorias, use "CATEGORIA É UM DE".
Agendamento — Geração automática do feed
Na aba Tarefa Agendada (Scheduled Task) do feed:
- Ativo: marque "Sim" para ativar a geração automática
- Horário: selecione um ou mais horários do dia para gerar o feed (evite horários de pico de tráfego)
- Dias da semana: selecione em quais dias o feed será gerado (pode ser todos os dias ou dias específicos)
O sistema exibe o horário atual do servidor e o status do cron para ajudar a alinhar a configuração.
Pré-requisito: O cron do Magento precisa estar configurado e rodando no servidor. Sem o cron ativo, a geração automática não funciona. Verifique o campo "Cron status" na aba.
Envio por FTP/SFTP
Se a plataforma destino exige que o feed seja enviado diretamente via FTP, configure na aba Configurações de FTP:
- Habilitado: Sim
- Protocolo: FTP ou SFTP (SFTP é mais seguro e recomendado)
-
Host: endereço do servidor (ex:
ftp.marketplace.com.br) - Usuário e Senha: credenciais fornecidas pela plataforma
- Caminho: diretório no servidor onde o arquivo deve ser enviado
- Modo passivo: geralmente "Sim"
- SSL: "Sim" quando disponível
Use o botão Testar Conexão antes de salvar para garantir que as credenciais estão corretas.
Google Analytics (UTM)
Na aba Google Analytics, você pode adicionar parâmetros UTM às URLs dos produtos no feed. Isso permite rastrear no Google Analytics de onde vêm os cliques.
-
utm_source: origem do tráfego (ex:
google-shopping,facebook) -
utm_medium: meio de marketing (ex:
cpc,feed) -
utm_campaign: nome da campanha (ex:
verao-2026,liquidacao) - utm_term: (opcional) termo da palavra-chave
- utm_content: (opcional) diferenciação de anúncios/variações
Exemplo de URL gerada:
https://sualoja.com.br/produto.html?utm_source=google-shopping&utm_medium=feed&utm_campaign=geral
Notificações por e-mail
Na aba Notificações por E-mail, configure alertas para:
- Exportação bem-sucedida
- Falha na exportação
- Entrega (FTP) bem-sucedida
- Falha na entrega
Insira um ou mais e-mails separados por vírgula.
Mapeamento de Categorias
Plataformas como Google Shopping exigem que seus produtos estejam categorizados de acordo com a taxonomia da própria plataforma. O mapeamento de categorias resolve isso.
Como criar
- Acesse Catálogo → Feed Avançado → Mapeamento de Categorias
- Clique em Adicionar Mapeamento
- Para cada categoria da sua loja, digite a categoria equivalente da plataforma. O sistema sugere automaticamente categorias da taxonomia Google enquanto você digita
- Categorias filhas que não forem mapeadas herdam o mapeamento da categoria pai
Como usar no feed
- Feed CSV: selecione o atributo "Category mapping: Nome" no mapeamento de campos
-
Feed XML: use o padrão
{{ product.mapping:ID }}, onde ID é o número do mapeamento criado (ex:{{ product.mapping:1 }})
Atributos Dinâmicos
Atributos dinâmicos permitem criar valores calculados com base em condições, sem precisar alterar o produto no catálogo.
Exemplo prático: Status de estoque personalizado
- Nome: Status de estoque adicional
-
Código:
stock_status - Condição: se a quantidade em estoque é maior que 0 → retorna "in stock"; senão → retorna "out of stock"
Como usar no feed
-
Feed XML:
{{ product.dynamic:stock_status }} - Feed CSV: selecione o atributo dinâmico no dropdown
Variáveis Dinâmicas
Variáveis dinâmicas são scripts PHP customizados que permitem lógicas avançadas, como cálculos de parcelamento, formatação de GTIN ou somas de estoque multiorigem.
Importante: A criação e manutenção das variáveis dinâmicas é feita pela equipe técnica. Abaixo estão as informações para entender como elas funcionam e como referenciá-las no feed.
Onde ficam
As variáveis são criadas em Catálogo → Feed Avançado → Variáveis Dinâmicas. O nome e o código são definidos no painel, e o script PHP é criado no servidor no diretório var/mst_feed/.
Como usar no feed
No feed (XML ou CSV), utilize: {{ product.variable:codigo_da_variavel }}
Exemplo: Parcelamento (installment)
A variável de parcelamento é configurada pela equipe técnica para calcular automaticamente o número de parcelas e o valor de cada parcela. No feed, ela aparece como:
{{ product.variable:installment }}
Quando processada, ela gera automaticamente as informações de parcelamento (número de meses e valor da parcela) conforme configurado.
Pré-visualização
Na tela de edição da variável dinâmica, você pode inserir IDs de produtos para pré-visualizar os resultados e verificar se os valores estão corretos.
Filtros Liquid (Modificadores)
Os filtros liquid permitem transformar valores antes de incluí-los no feed. São aplicados com o caractere | (pipe) após o atributo.
Formato: {{ product.atributo | filtro }}
Filtros de texto mais usados
| Filtro | Função | Exemplo |
|---|---|---|
lowercase |
Converte para minúsculas | {{ product.name | lowercase }} |
uppercase |
Converte para maiúsculas | {{ product.name | uppercase }} |
replace: 'de', 'para' |
Substitui texto | {{ product.name | replace: 'Antigo', 'Novo' }} |
append: ' - texto' |
Adiciona texto ao final | {{ product.name | append: ' - Loja' }} |
prepend: 'texto - ' |
Adiciona texto no início | {{ product.name | prepend: 'Compre ' }} |
stripHtml |
Remove tags HTML | {{ product.description | stripHtml }} |
truncate: 150 |
Limita a quantidade de caracteres | {{ product.name | truncate: 150 }} |
truncatewords: 50 |
Limita a quantidade de palavras | {{ product.description | truncatewords: 50 }} |
plain |
Remove HTML e formatação | {{ product.description | plain }} |
ifEmpty: 'valor' |
Valor padrão quando vazio | {{ product.color | ifEmpty: 'Não informado' }} |
trim |
Remove espaços no início e fim | {{ product.name | trim }} |
escape |
Escapa caracteres HTML | {{ product.description | escape }} |
strip_newlines |
Remove quebras de linha | {{ product.description | strip_newlines }} |
Filtros de preço e número
| Filtro | Função | Exemplo |
|---|---|---|
price |
Formata como preço (2 decimais) | {{ product.price | price }} |
convert: 'USD' |
Converte moeda | {{ product.price | convert: 'USD' }} |
inclTax |
Inclui imposto | {{ product.price | inclTax | price }} |
exclTax |
Exclui imposto | {{ product.price | exclTax | price }} |
round: 2 |
Arredonda decimais | {{ product.weight | round: 2 }} |
numberFormat: '2', '.', ',' |
Formata número | {{ product.price | numberFormat: '2', '.', ',' }} |
ceil |
Arredonda para cima | {{ product.weight | ceil }} |
floor |
Arredonda para baixo | {{ product.weight | floor }} |
plus: '10' |
Soma | {{ product.price | plus: '10' }} |
minus: '5' |
Subtrai | {{ product.price | minus: '5' }} |
times: '1.2' |
Multiplica | {{ product.price | times: '1.2' }} |
divided_by: '2' |
Divide | {{ product.price | divided_by: '2' }} |
Filtros de data
| Filtro | Função | Exemplo |
|---|---|---|
dateFormat: 'd/m/Y' |
Formata data | {{ product.created_at | dateFormat: 'd/m/Y' }} |
Filtros de URL e imagem
| Filtro | Função | Exemplo |
|---|---|---|
secure |
Força HTTPS | {{ product.url | secure }} |
resize: '300x300' |
Redimensiona imagem | {{ product.image | resize: '300x300' }} |
Encadeamento de filtros
Você pode aplicar múltiplos filtros em sequência:
{{ product.description | stripHtml | truncatewords: 100 | trim }}
Lista de atributos de produto disponíveis
Atributos principais
| Padrão | Descrição |
|---|---|
{{ product.entity_id }} |
ID do produto |
{{ product.sku }} |
SKU do produto |
{{ product.name }} |
Nome do produto |
{{ product.description }} |
Descrição completa |
{{ product.short_description }} |
Descrição curta |
{{ product.url }} |
URL do produto |
{{ product.url_key }} |
Chave de URL |
{{ product.type_id }} |
Tipo (simple, configurable, etc.) |
{{ product.status }} |
Status (Habilitado/Desabilitado) |
{{ product.visibility }} |
Visibilidade |
{{ product.attribute_set }} |
Conjunto de atributos |
Preços
| Padrão | Descrição |
|---|---|
{{ product.price }} |
Preço regular |
{{ product.final_price }} |
Preço final (com descontos aplicados) |
{{ product.special_price }} |
Preço promocional |
{{ product.cost }} |
Custo do produto |
{{ product.msrp }} |
Preço sugerido pelo fabricante |
Categorias
| Padrão | Descrição |
|---|---|
{{ product.category.path }} |
Caminho da categoria (ex: Roupas > Camisetas > Masculino) |
{{ product.category.entity_id }} |
ID da categoria |
{{ product.category_ids }} |
IDs de todas as categorias atribuídas |
Imagens
| Padrão | Descrição |
|---|---|
{{ product.image }} |
URL da imagem principal |
{{ product.images }} |
URLs de todas as imagens da galeria (separadas por vírgula) |
{{ product.thumbnail }} |
URL da miniatura |
{{ product.small_image }} |
URL da imagem pequena |
{{ product.gallery[0] }} |
Primeira imagem da galeria (use [1], [2], etc. para as seguintes) |
Estoque
| Padrão | Descrição |
|---|---|
{{ product.is_in_stock }} |
Em estoque? (0 = não, 1 = sim) |
{{ product.qty }} |
Quantidade em estoque |
{{ product.stock_status }} |
Status textual (in stock / out of stock) |
Produto pai (para variações)
Use o sufixo .parent para acessar dados do produto configurável (pai):
| Padrão | Descrição |
|---|---|
{{ product.parent.name }} |
Nome do produto pai |
{{ product.parent.url }} |
URL do produto pai |
{{ product.parent.price }} |
Preço do produto pai |
{{ product.parent.sku }} |
SKU do produto pai |
{{ product.parent.image }} |
Imagem do produto pai |
Quando usar
.parent? Sempre que estiver exportando produtos simples que são "Não Visível Individualmente" — eles não têm URL própria, então você precisa usar a URL do pai. Também é útil paraitem_group_id, onde todos os filhos devem referenciar o SKU do configurável.
Validação do feed
O módulo possui validação integrada que verifica se o feed atende aos requisitos da plataforma destino.
Como validar
- Gere o feed normalmente
- Clique em Validar na tela de edição do feed
- Revise os resultados na seção Controle de Qualidade
Níveis de severidade
| Nível | Significado |
|---|---|
| Erro (Error) | Problema crítico que pode causar rejeição do feed |
| Aviso (Warning) | Pode afetar a qualidade ou causar rejeição parcial |
| Nota (Notice) | Informação ou problema menor de formatação |
| Melhoria (Improvement) | Recomendação opcional para melhorar a qualidade |
Problemas comuns e soluções
Preço ausente ou incorreto: Adicione a moeda diretamente no feed, ex: {{ product.final_price }} BRL
Faltam GTIN, Marca ou MPN: Use lógica condicional para definir identifier_exists:
<g:identifier_exists>{% if product.gtin or product.brand or product.mpn %}yes{% else %}no{% endif %}</g:identifier_exists>
URL da imagem inválida: Verifique se as URLs das imagens começam com https://
Título excede o limite: Use o filtro truncate: 150 para limitar
Geração via linha de comando (CLI)
Para gerar feeds via terminal SSH (útil para feeds grandes ou automação avançada):
# Gerar todos os feeds ativos
php bin/magento mirasvit:feed:export
# Gerar apenas um feed específico (pelo ID)
php bin/magento mirasvit:feed:export --id=1
# Gerar com step maior (mais rápido, exige mais recursos do servidor)
php bin/magento mirasvit:feed:export --id=1 --step=100
# Entregar feeds via FTP
php bin/magento mirasvit:feed:delivery
# Entregar um feed específico
php bin/magento mirasvit:feed:delivery --id=1
Troubleshooting — Problemas comuns
Página em branco ao acessar Catálogo → Feeds
A biblioteca PHP zf1/zend-reflection está ausente. Solicite à equipe técnica a instalação:
composer require "zf1/zend-reflection"
Filtro de categoria aplicado, mas nenhum produto no feed
Provavelmente o filtro usa "CATEGORIA É" em vez de "CATEGORIA É UM DE". A primeira opção exige que o produto esteja em TODAS as categorias listadas. Mude para "é um de".
Exportação travada em determinado passo
Verifique se o servidor tem recursos suficientes (memória, CPU) e se as permissões do diretório de exportação estão corretas. Confira a aba "Histórico" para detalhes sobre o erro.
Feed gerado, mas sem produtos ou com produtos errados
Revise os filtros aplicados ao feed. Confira se não há filtros conflitantes ou muito restritivos. Use a funcionalidade de "Pré-visualização de produtos" no filtro para verificar quais produtos atendem às condições.
Checklist — Configuração completa de um novo feed
Use esta lista para garantir que nenhum passo ficou de fora:
- Selecionar o template correto (Google Shopping XML, Facebook CSV, etc.)
- Definir nome e nome do arquivo
- Selecionar a visão de loja correta
- Ativar o feed
- Revisar/ajustar o conteúdo do feed (atributos, padrões, condições)
- Criar e aplicar filtros necessários (status, estoque, categorias)
- Configurar mapeamento de categorias (se exigido pela plataforma)
- Salvar e gerar o feed pela primeira vez
- Validar o feed
- Testar a URL do feed no navegador
- Configurar agendamento automático (dias e horários)
- Configurar envio FTP se necessário
- Configurar parâmetros UTM se desejado
- Configurar notificações por e-mail
- Enviar a URL do feed para a plataforma destino
Referência rápida — Templates mais usados
| Plataforma | Formato | Template |
|---|---|---|
| Google Shopping | XML | Google Shopping |
| Google Shopping (Configuráveis) | XML | Google Shopping (configurable products) |
| Google Shopping CSV | CSV | Google Shopping CSV Feed |
| Google Shopping Reviews | XML | Google Shopping Review |
| Facebook / Instagram | CSV | Storefront Social Facebook |
| Facebook Dynamic Ads | XML | Facebook Dynamic Ads |
| CSV | ||
| TikTok | CSV | TikTok |
| Bing (Microsoft Ads) | XML | Bing Feed (Microsoft Advertising) |
| Criteo | CSV | Criteo |