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)

Dentro desse menu, você encontra as seguintes seções:

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

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 mesmo item_group_id (geralmente o SKU do produto pai), e cada um tem seu próprio g:id diferente. 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.

  1. Dê um nome descritivo ao filtro (ex: "Apenas produtos ativos com estoque")
  2. Selecione os feeds aos quais o filtro será aplicado (ou aplique depois na edição do feed)
  3. 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:

  1. Ativo: marque "Sim" para ativar a geração automática
  2. Horário: selecione um ou mais horários do dia para gerar o feed (evite horários de pico de tráfego)
  3. 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

  1. Acesse Catálogo → Feed Avançado → Mapeamento de Categorias
  2. Clique em Adicionar Mapeamento
  3. Para cada categoria da sua loja, digite a categoria equivalente da plataforma. O sistema sugere automaticamente categorias da taxonomia Google enquanto você digita
  4. 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 para item_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

  1. Gere o feed normalmente
  2. Clique em Validar na tela de edição do feed
  3. 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:

  1. Selecionar o template correto (Google Shopping XML, Facebook CSV, etc.)
  2. Definir nome e nome do arquivo
  3. Selecionar a visão de loja correta
  4. Ativar o feed
  5. Revisar/ajustar o conteúdo do feed (atributos, padrões, condições)
  6. Criar e aplicar filtros necessários (status, estoque, categorias)
  7. Configurar mapeamento de categorias (se exigido pela plataforma)
  8. Salvar e gerar o feed pela primeira vez
  9. Validar o feed
  10. Testar a URL do feed no navegador
  11. Configurar agendamento automático (dias e horários)
  12. Configurar envio FTP se necessário
  13. Configurar parâmetros UTM se desejado
  14. Configurar notificações por e-mail
  15. 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
Pinterest CSV Pinterest
TikTok CSV TikTok
Bing (Microsoft Ads) XML Bing Feed (Microsoft Advertising)
Criteo CSV Criteo