A maioria dos problemas de feed não parece problema de feed. Parece uma reprovação no Google Merchant Center que você não consegue explicar, uma campanha Advantage+ que gasta todo o orçamento em uma única camiseta preta ou um anúncio do Shopping que leva um cliente que procura um sapato tamanho 42 a uma página em que só sobrou o tamanho 38.
Por trás de quase todos esses casos está a mesma coisa: variantes.
Uma variante é qualquer versão de um produto que se diferencia de uma forma visível e comprável — tamanho, cor, material, capacidade, acabamento. Elas são comuns no varejo e excepcionalmente difíceis nos feeds, porque cada canal as modela de um jeito e porque errar nelas falha em silêncio. Nada quebra. Seus anúncios simplesmente performam abaixo do esperado, sem alarde, e o diagnóstico está quatro camadas abaixo, em um arquivo de dados que ninguém abre.
Este guia cobre o assunto por inteiro: o que realmente conta como variante, como o item_group_id funciona e onde as pessoas o usam errado, cada atributo que define variantes com seus limites reais, exemplos de feed funcionais em XML, CSV e JSON, como Google, Meta, TikTok, Pinterest, Amazon e marketplaces regionais esperam que as variantes sejam estruturadas e uma tabela de diagnóstico para os erros que aparecem com mais frequência.
Ele é longo porque o tema é longo. Use o sumário para navegar.
1. O que uma variante realmente é
Uma variante é uma versão comprável de um produto que se diferencia das versões irmãs em pelo menos um atributo entre os quais o cliente escolheria, continuando a ser o mesmo produto.
Essa última parte faz muita diferença. Uma camiseta azul tamanho M e uma camiseta preta tamanho G são o mesmo produto. Uma camiseta azul e um moletom azul não são, mesmo que sejam da mesma marca e do mesmo tecido.
O modelo padrão na maioria dos canais é o de pai/filho:
- O pai é o produto conceitual — "Suéter de Merino Gola Careca". Normalmente ele não é comprável sozinho.
- Os filhos são as variantes — cada uma com seu próprio SKU, seu próprio nível de estoque e, às vezes, seu próprio preço e sua própria imagem.
Em um feed de produtos, isso quase sempre é expresso de forma plana: cada variante é sua própria linha ou <item>, e uma chave de agrupamento compartilhada as une. Não há aninhamento. Um suéter em 4 cores e 5 tamanhos são 20 linhas, todas com o mesmo ID de grupo.
O que não é uma variante
É aqui que os feeds dão errado antes mesmo de uma única linha de XML ser escrita.
| Não é variante | Por quê | O que usar no lugar |
|---|---|---|
| Multipacks — um pacote com 6 vs. uma unidade | Quantidade diferente da mesma unidade, não um atributo escolhido | atributo multipack (Google) |
| Kits — câmera + lente + bolsa | Um conjunto vendável distinto | atributo is_bundle; produto separado |
| Produtos relacionados — blusa e saia que combinam | Produtos diferentes que combinam bem | Itens separados; use recomendações |
| Recondicionado vs. novo | Condição, não variação | atributo condition |
| Anúncios de varejistas diferentes | Mesmo produto, vendedor diferente | Contas/feeds separados |
| Personalização — nome gravado | Feito sob encomenda, não uma opção em estoque | Geralmente um único item; mencione na descrição |
Agrupar qualquer um desses itens sob um item_group_id compartilhado produz um grupo cujos membros não são intercambiáveis — o que confunde o seletor de variantes na página de destino e, em alguns canais, gera uma reprovação por divergência.
2. A decisão que determina todo o resto
Antes de escrever qualquer lógica de feed, responda a uma pergunta para cada tipo de produto que você vende:
Quando o cliente escolhe outra opção, ele vai para uma página diferente — ou para a mesma página em outro estado?
Esse é o teste prático, e ele corresponde diretamente à forma como você deve estruturar o feed.
Caso A — URLs separadas por variante. Cada cor tem sua própria página de produto (/merino-sweater-navy, /merino-sweater-charcoal). Envie cada variante como uma linha própria, com seu próprio link. Essa é a configuração mais limpa, oferece a melhor relevância de anúncio e é a que os canais preferem.
Caso B — uma URL, variante selecionada na página. Tudo fica em /merino-sweater e o cliente escolhe cor e tamanho em um seletor. Você ainda pode enviar todas as variantes, mas deve acrescentar um parâmetro de deep link para que o anúncio leve ao estado pré-selecionado correto:
https://example.com/merino-sweater?colour=navy&size=mSem esse parâmetro, um comprador que clicou em um anúncio de um suéter azul-marinho tamanho M chega a um estado padrão que mostra o cinza-chumbo tamanho P. Essa divergência é um dos maiores destruidores silenciosos de conversão na publicidade de variantes e, no Google, também pode gerar uma reprovação por "Mismatched value (page crawl)", porque o rastreador vê uma página cuja cor visível não corresponde ao color enviado.
Caso C — variantes que não vale a pena separar. Algumas variações não influenciam a decisão de compra o suficiente para justificar anúncios separados — o comprimento do cabo de um carregador, por exemplo. Nesse caso, você pode enviar deliberadamente uma única variante representativa. A seção 7 explica quando essa é a escolha certa.
Atributos que definem variantes vs. atributos descritivos
Cada atributo do seu feed se encaixa em uma de duas categorias, e confundi-las é uma causa frequente de grupos malformados.
Os atributos que definem variantes devem diferir entre os membros do grupo. São as coisas que o cliente escolhe: color, size, material, pattern, além de dimensões específicas do produto, como capacidade ou acabamento.
Os atributos constantes no grupo devem ser idênticos em todos os membros: brand, gender, age_group, item_group_title, google_product_category. Se duas linhas compartilham um item_group_id, mas têm valores de gender diferentes, você agrupou ou marcou os produtos de forma errada.
Os atributos específicos de cada linha, mas que não definem variantes variam por linha sem definir a variação: id, price, availability, gtin, image_link, link. Duas variantes podem legitimamente ter preços diferentes — um tamanho 3XL costuma custar mais — sem que o preço seja o que as distingue.
3. item_group_id: a base
O item_group_id é a chave compartilhada que diz a um canal "estas linhas são o mesmo produto". Todo o resto do tratamento de variantes depende de ele estar correto.
A especificação
| Propriedade | Meta | TikTok | |
|---|---|---|---|
| Nome do campo | item_group_id | item_group_id | item_group_id |
| Tamanho máximo | 50 caracteres | 100 caracteres | 150 caracteres |
| Caracteres permitidos | Unicode; ASCII recomendado — alfanuméricos, sublinhados, hifens | String | String |
| Diferencia maiúsculas e minúsculas | Não diferencia (ABC123 = abc123) | Diferencia | Diferencia |
| Obrigatório? | Obrigatório para listagens gratuitas e para anúncios do Shopping no Brasil, na França, na Alemanha, no Japão, no Reino Unido e nos EUA — quando há envio de variantes | Necessário para agrupar variantes | Necessário para agrupar variantes |
| Campo repetido | Não — um valor por item | Não | Não |
Como o Google trata o valor sem diferenciar maiúsculas e minúsculas, mas a Meta e o TikTok diferenciam, padronize em minúsculas (ou maiúsculas) em todos os lugares. Um catálogo em que aparecem tanto SWTR-001 quanto swtr-001 será agrupado corretamente no Google e dividido em dois produtos na Meta.
Escolhendo o valor
O melhor item_group_id é o SKU pai que você já tem no seu ERP ou PIM. Ele existe, é estável e é único.
Bons:
SWTR-MERINO-CREW
12345
parent-8891Ruins, e por quê:
| Valor | Problema |
|---|---|
| Merino Crew Neck Sweater | Espaços e maiúsculas e minúsculas misturadas; ultrapassa os limites quando os títulos são longos; muda quando o marketing renomeia o produto |
| sweater | Não é único — junta toda a sua linha de suéteres em um único grupo |
| SWTR-MERINO-CREW-NAVY-M | Inclui as dimensões da variante, então cada linha recebe um valor único e nada é agrupado |
| Um número de linha ou hash gerado novamente a cada exportação | Muda entre as exportações; os canais perdem a continuidade do grupo e reaprendem do zero |
Esse último merece destaque. O item_group_id precisa ser estável ao longo do tempo. Os canais acumulam histórico de desempenho associado ao grupo. Se a sua exportação gera os IDs novamente, você zera esse histórico a cada sincronização, e nenhuma otimização de lances vai compensar isso.
As três regras
- Todos os membros de um grupo compartilham o mesmo item_group_id.
- Cada membro tem um id único. Um id duplicado em qualquer parte do feed faz com que a linha posterior seja descartada silenciosamente.
- Cada membro se diferencia em pelo menos um atributo que define variantes. Duas linhas com o mesmo ID de grupo e a mesma cor e o mesmo tamanho são duplicatas, não variantes.
Uma convenção que atende às três:
item_group_id: SWTR-MERINO-CREW
id: SWTR-MERINO-CREW-NAV-M
id: SWTR-MERINO-CREW-NAV-L
id: SWTR-MERINO-CREW-CHR-MLegível, fácil de depurar e derivada de dados que você já tem.
item_group_title
Um atributo mais recente do Google, opcional, mas recomendado sempre que você enviar item_group_id. Ele traz o nome do produto pai — no máximo 150 caracteres — e deve ser idêntico em todas as variantes do grupo.
xml
<g:item_group_id>SWTR-MERINO-CREW</g:item_group_id>
<g:item_group_title>Merino Crew Neck Sweater</g:item_group_title>
<title>Merino Crew Neck Sweater — Navy, Medium</title>Observe o padrão: o title é específico da variante; o item_group_title, não. Enviar a mesma string nos dois desperdiça o sinal.
variant_option
Também mais recente do lado do Google: uma forma estruturada de declarar quais propriedades definem a variação, em vez de deixar que o canal as deduza. Ele aceita até 30 pares de nome/valor (cada subatributo com até 250 caracteres, 5.000 caracteres no total).
xml
<g:variant_option>
<g:name>Colour</g:name>
<g:value>Navy</g:value>
</g:variant_option>
<g:variant_option>
<g:name>Size</g:name>
<g:value>M</g:value>
</g:variant_option>Isso é especialmente útil para produtos cujos eixos de variação não são cobertos pelos atributos padrão de vestuário — capacidade de armazenamento, nível de processador, potência, número de lugares. Em vez de forçar "256GB" no campo size, você o declara corretamente.
4. Atributos que definem variantes, em detalhe
color
O atributo com mais regras na especificação e o que mais é rejeitado.
| Propriedade | Valor |
|---|---|
| Tamanho máximo (Google) | 100 caracteres no total, 40 por cor individual |
| Tamanho máximo (Meta / TikTok) | 200 caracteres |
| Várias cores | Separe com /, com a cor principal primeiro |
| Obrigatório | Para vestuário nos países listados acima; para todas as listagens gratuitas de Apparel & Accessories |
Não são aceitos:
- Números — Colour 42, RAL 5013
- Códigos hexadecimais — #001F5B
- Letras isoladas — N para navy
- Referências a uma imagem — see photo
- Palavras alfanuméricas ou unidas — Navy1, NavyBlue (escreva Navy Blue)
Como lidar com nomes de cores de marketing. As marcas de moda raramente chamam uma cor de "azul-marinho". Elas a chamam de "Midnight Regatta". O canal precisa de uma cor que um comprador pesquisaria; sua marca precisa do próprio nome na página.
O meio-termo viável:
color: Navy
description: ...available in Midnight Regatta (navy)...Mapeie no feed os nomes de marketing para nomes padrão e mantenha o nome da marca visível na página de destino e na descrição. Não coloque o nome de marketing em color torcendo para dar certo — isso prejudica a correspondência com buscas que incluem cor, que estão entre as de maior intenção de compra em moda.
Produtos com várias cores:
color: Navy/White/GreyA principal primeiro. O Google lê o primeiro valor como a cor predominante.
size
| Propriedade | Valor |
|---|---|
| Tamanho máximo (Google) | 100 caracteres |
| Tamanho máximo (Meta / TikTok) | 200 caracteres |
| Obrigatório | Para roupas e calçados nos países listados; para listagens gratuitas |
| Produtos de tamanho único | one_size, OS ou OSFA |
A regra que importa: seja específico o suficiente para não haver ambiguidade e consistente em todo o catálogo. M funciona se todos os produtos usarem M. Um feed que mistura M, Medium, med e M/L para o mesmo conceito fragmenta seus grupos de variantes e torna impossível a segmentação por tamanho.
Para produtos em que uma única dimensão não é suficiente, inclua as dimensões que os diferenciam no valor:
size: 32/34 (waist/inseam)
size: 15.5/34 (neck/sleeve)
size: 9.5 Wide (shoe width)
size: 200x140cm (rugs, bedding)size_type e size_system
Opcionais, apenas para vestuário e pouco utilizados — ambos melhoram significativamente a correspondência para compradores que pesquisam usando esses qualificadores.
size_type — até 2 valores entre: regular, petite, maternity, big, tall, plus.
size_system — um destes: US, UK, EU, DE, FR, JP, CN, IT, BR, MEX, AU. Se for omitido, o canal presume o sistema do país de destino, o que é a origem de uma falha específica e cara: um varejista turco que vende para a Alemanha com tamanhos EU, mas sem declarar size_system, pode ter seus tamanhos interpretados na escala errada.
xml
<g:size>10</g:size>
<g:size_system>UK</g:size_system>
<g:size_type>regular</g:size_type>material
No máximo 200 caracteres no Google. O material principal primeiro e, depois, até dois materiais secundários separados por /.
material: Cotton
material: Leather/Suede
material: Merino Wool/Nylon/ElastaneObrigatório apenas se diferenciar suas variantes — uma bolsa vendida em couro e em lona. Caso contrário, é opcional, mas vale a pena enviar; o material é um qualificador de busca comum.
pattern
No máximo 100 caracteres. Texto livre que descreve a estampa ou o grafismo: Striped, Polka Dot, Paisley, Floral, Herringbone. A mesma regra — obrigatório se for o que varia.
age_group e gender
Ambos são constantes no grupo. Todas as variantes de um grupo devem ter o mesmo valor.
age_group: newborn, infant, toddler, kids, adult — um valor por produto.
gender: male, female, unisex.
Se uma peça é realmente oferecida em modelagens masculina e feminina, são dois grupos de itens separados, e não um único grupo com gêneros misturados. As modelagens são diferentes, os tamanhos são diferentes, e o comprador está escolhendo entre produtos, e não entre opções.
Tabela de referência
| Atributo | Limite no Google | Deve diferir | Deve ser igual em todo o grupo |
|---|---|---|---|
| item_group_id | 50 caracteres | — | ✅ |
| item_group_title | 150 caracteres | — | ✅ |
| id | 50 caracteres | ✅ (sempre único) | — |
| title | 150 caracteres | Recomendado | — |
| color | 100 caracteres (40 por cor) | Se for eixo de variação | — |
| size | 100 caracteres | Se for eixo de variação | — |
| size_type | 2 valores | Opcional | — |
| size_system | Enum | — | Geralmente ✅ |
| material | 200 caracteres | Se for eixo de variação | — |
| pattern | 100 caracteres | Se for eixo de variação | — |
| gender | Enum | — | ✅ |
| age_group | Enum | — | ✅ |
| brand | 70 caracteres | — | ✅ |
| google_product_category | — | — | ✅ |
| price | — | Pode diferir | — |
| availability | Enum | Pode diferir | — |
5. Exemplos reais de feed
XML (Google RSS 2.0)
Duas variantes de um grupo de seis. Observe o que muda e o que não muda.
xml
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<title>Example Store — Product Feed</title>
<link>https://example.com</link>
<item>
<g:id>SWTR-MERINO-CREW-NAV-M</g:id>
<g:item_group_id>SWTR-MERINO-CREW</g:item_group_id>
<g:item_group_title>Merino Crew Neck Sweater</g:item_group_title>
<title>Merino Crew Neck Sweater — Navy, Medium</title>
<description>Fine-gauge 100% merino wool crew neck. Ribbed cuffs and hem, regular fit. Machine washable on wool cycle.</description>
<link>https://example.com/merino-crew-sweater?colour=navy&size=m</link>
<g:image_link>https://cdn.example.com/swtr-merino-navy-1.jpg</g:image_link>
<g:additional_image_link>https://cdn.example.com/swtr-merino-navy-2.jpg</g:additional_image_link>
<g:availability>in_stock</g:availability>
<g:price>89.00 EUR</g:price>
<g:brand>Example</g:brand>
<g:gtin>5012345678900</g:gtin>
<g:mpn>SW-MC-NAV-M</g:mpn>
<g:condition>new</g:condition>
<g:google_product_category>1604</g:google_product_category>
<g:color>Navy</g:color>
<g:size>M</g:size>
<g:size_system>EU</g:size_system>
<g:size_type>regular</g:size_type>
<g:material>Merino Wool</g:material>
<g:gender>male</g:gender>
<g:age_group>adult</g:age_group>
<g:custom_label_0>core</g:custom_label_0>
<g:custom_label_1>full-size-run</g:custom_label_1>
</item>
<item>
<g:id>SWTR-MERINO-CREW-CHR-L</g:id>
<g:item_group_id>SWTR-MERINO-CREW</g:item_group_id>
<g:item_group_title>Merino Crew Neck Sweater</g:item_group_title>
<title>Merino Crew Neck Sweater — Charcoal, Large</title>
<description>Fine-gauge 100% merino wool crew neck. Ribbed cuffs and hem, regular fit. Machine washable on wool cycle.</description>
<link>https://example.com/merino-crew-sweater?colour=charcoal&size=l</link>
<g:image_link>https://cdn.example.com/swtr-merino-charcoal-1.jpg</g:image_link>
<g:availability>out_of_stock</g:availability>
<g:price>89.00 EUR</g:price>
<g:brand>Example</g:brand>
<g:gtin>5012345678931</g:gtin>
<g:mpn>SW-MC-CHR-L</g:mpn>
<g:condition>new</g:condition>
<g:google_product_category>1604</g:google_product_category>
<g:color>Charcoal</g:color>
<g:size>L</g:size>
<g:size_system>EU</g:size_system>
<g:size_type>regular</g:size_type>
<g:material>Merino Wool</g:material>
<g:gender>male</g:gender>
<g:age_group>adult</g:age_group>
<g:custom_label_0>core</g:custom_label_0>
<g:custom_label_1>broken-size</g:custom_label_1>
</item>
</channel>
</rss>Quatro pontos que vale a pena destacar:
- item_group_id e item_group_title são idênticos; id e title, não.
- O link traz parâmetros de deep link para que o anúncio leve ao estado pré-selecionado correto. O & é escapado como & — obrigatório em XML e uma fonte frequente de falhas de leitura.
- O image_link é específico da variante. As duas linhas azul-marinho apontam para a fotografia azul-marinho. Enviar uma única imagem principal para todas as cores é o segundo erro de variantes mais comum, depois da ausência de IDs de grupo.
- A linha fora de estoque é marcada via custom_label_1, para que possa ser excluída ou receber lances menores sem ser removida do feed.
CSV / TSV
Os mesmos dados, em formato plano. Linha de cabeçalho mais duas variantes:
csv
id,item_group_id,item_group_title,title,description,link,image_link,availability,price,brand,gtin,condition,google_product_category,color,size,size_system,material,gender,age_group,custom_label_0
SWTR-MERINO-CREW-NAV-M,SWTR-MERINO-CREW,Merino Crew Neck Sweater,"Merino Crew Neck Sweater — Navy, Medium","Fine-gauge 100% merino wool crew neck.",https://example.com/merino-crew-sweater?colour=navy&size=m,https://cdn.example.com/swtr-merino-navy-1.jpg,in_stock,89.00 EUR,Example,5012345678900,new,1604,Navy,M,EU,Merino Wool,male,adult,core
SWTR-MERINO-CREW-CHR-L,SWTR-MERINO-CREW,Merino Crew Neck Sweater,"Merino Crew Neck Sweater — Charcoal, Large","Fine-gauge 100% merino wool crew neck.",https://example.com/merino-crew-sweater?colour=charcoal&size=l,https://cdn.example.com/swtr-merino-charcoal-1.jpg,out_of_stock,89.00 EUR,Example,5012345678931,new,1604,Charcoal,L,EU,Merino Wool,male,adult,coreO CSV é onde acontece a maior parte das quebras no mundo real, porque vírgulas dentro de títulos e descrições precisam estar entre aspas, e aspas dentro de campos entre aspas precisam ser escapadas. Se seus títulos contêm vírgulas — e títulos de produtos com cor e tamanho quase sempre contêm —, use TSV. Tabulações praticamente nunca aparecem em dados de produtos, e toda uma classe de bugs de leitura desaparece.
JSON
Para importação via API:
json
{
"products": [
{
"id": "SWTR-MERINO-CREW-NAV-M",
"item_group_id": "SWTR-MERINO-CREW",
"item_group_title": "Merino Crew Neck Sweater",
"title": "Merino Crew Neck Sweater — Navy, Medium",
"link": "https://example.com/merino-crew-sweater?colour=navy&size=m",
"image_link": "https://cdn.example.com/swtr-merino-navy-1.jpg",
"availability": "in_stock",
"price": { "value": "89.00", "currency": "EUR" },
"brand": "Example",
"gtin": "5012345678900",
"condition": "new",
"google_product_category": "1604",
"variant_attributes": {
"color": "Navy",
"size": "M",
"size_system": "EU",
"material": "Merino Wool"
},
"gender": "male",
"age_group": "adult"
}
]
}Uma grade de tamanhos completa
Seis variantes — duas cores × três tamanhos — com o padrão de IDs visível:
| id | item_group_id | color | size | availability |
|---|---|---|---|---|
| SWTR-MC-NAV-S | SWTR-MERINO-CREW | Navy | S | in_stock |
| SWTR-MC-NAV-M | SWTR-MERINO-CREW | Navy | M | in_stock |
| SWTR-MC-NAV-L | SWTR-MERINO-CREW | Navy | L | in_stock |
| SWTR-MC-CHR-S | SWTR-MERINO-CREW | Charcoal | S | out_of_stock |
| SWTR-MC-CHR-M | SWTR-MERINO-CREW | Charcoal | M | in_stock |
| SWTR-MC-CHR-L | SWTR-MERINO-CREW | Charcoal | L | out_of_stock |
A cor Charcoal tem um tamanho disponível de três. A seção 9 explica o que fazer nesse caso.
6. Canal por canal
O conceito é universal. A implementação, não. Veja como cada um dos principais destinos espera receber as variantes e onde cada um é diferente.
Google Shopping / Merchant Center
O mais prescritivo e a implementação de referência que a maioria dos outros canais toma como base.
- O item_group_id é obrigatório para listagens gratuitas e para anúncios do Shopping no Brasil, na França, na Alemanha, no Japão, no Reino Unido e nos EUA sempre que houver envio de variantes.
- Os atributos que definem variantes precisam estar preenchidos: color e size são obrigatórios para vestuário nesses mercados.
- gender e age_group são obrigatórios para vestuário e precisam ser consistentes em todo o grupo.
- A página de destino precisa corresponder visivelmente aos valores de variante enviados, ou você corre o risco de uma reprovação por Mismatched value (page crawl).
- Cada variante compete de forma independente no leilão. O Google escolhe qual membro de um grupo exibir para uma determinada busca, então um grupo incompleto significa um conjunto de candidatos mais fraco.
- O image_link precisa ter pelo menos 500×500 pixels para vestuário — um mínimo que passa a ser aplicado a partir de 31 de janeiro de 2027 e que vale a pena auditar agora, em vez de às pressas.
Observação prática: o Merchant Center gera relatórios no nível da variante (id), e não do grupo. Para avaliar um produto corretamente, você mesmo precisa agregar os dados por item_group_id — o que é muito mais fácil se o ID de grupo for limpo e estável.
Meta (Facebook e Instagram)
A Meta usa o mesmo nome de campo, com restrições diferentes e um modelo de exibição significativamente diferente.
- O item_group_id permite até 100 caracteres e diferencia maiúsculas e minúsculas.
- color e size permitem até 200 caracteres.
- Os valores de disponibilidade usam espaços, não sublinhados: in stock, e não in_stock. Essa única diferença quebra mais feeds da Meta do que qualquer outra, principalmente quando um feed do Google é reutilizado diretamente.
- No Shops e nas superfícies de detalhe do produto, um conjunto agrupado corretamente é exibido como um único produto com seletor de variantes, em vez de vários anúncios quase idênticos.
- Os anúncios de catálogo Advantage+ usam o grupo para evitar mostrar a um usuário seis versões do mesmo suéter em um único carrossel — um catálogo sem agrupamento gera anúncios visivelmente repetitivos e impressões desperdiçadas.
- Os relatórios no nível da variante no Commerce Manager dependem de um agrupamento correto.
Observação prática: não aponte a Meta para o seu feed do Google sem modificações. No mínimo, transforme a disponibilidade e verifique os limites de caracteres. A maioria das plataformas de feed — incluindo a Feedance — trata isso como uma transformação no nível do canal, para que os dados de origem permaneçam intactos.
TikTok
- O item_group_id permite até 150 caracteres.
- O sku_id é o identificador único por variante — cada linha de variante precisa de um valor distinto.
- color e size permitem até 200 caracteres.
- O title permite até 255 caracteres; a description, até 10.000; o google_product_category é esperado.
- O TikTok é o canal mais rigoroso em relação a imagens específicas por variante. Os cards de produto exibem um seletor de variantes, e variantes que compartilham uma única imagem genérica têm desempenho mensuravelmente pior. Se você for economizar em alguma etapa do seu fluxo de imagens, não economize aqui.
- Segue de perto o modelo do Google; o item_group_id agrupa as variantes.
- O Pinterest exibe as variantes dentro de um único Product Pin com opções selecionáveis.
- A qualidade das imagens e as proporções verticais importam de forma desproporcional — o Pinterest é uma superfície de descoberta visual, e imagens de variantes que não se distinguem simplesmente não são salvas.
Amazon
A Amazon não usa item_group_id, e presumir o contrário gera muito trabalho desperdiçado.
A Amazon usa um modelo explícito de relacionamento pai/filho:
- Um ASIN pai é criado como um anúncio não comprável.
- Cada ASIN filho referencia o pai por meio dos campos parent_sku / parent_child.
- É preciso declarar um tema de variação — SizeColor, Size, Color, SizeName-ColorName e assim por diante, variando conforme a categoria.
- O tema precisa ser válido para aquela categoria específica; o mesmo nome de tema não está disponível em todas.
Se você exporta para o Google e para a Amazon a partir de uma única fonte, trate isso como uma transformação de verdade, e não como uma simples renomeação de campo. Sua camada de feed precisa construir o anúncio pai, atribuir o tema e mapear os filhos para ele.
Marketplaces regionais e comparadores de preços
Os canais da Turquia e da região MENA em geral têm convenções próprias, e muitas vezes elas são a diferença entre um catálogo que funciona e um catálogo quebrado nesses mercados.
- A Trendyol usa seu próprio modelo pai/filho, com um conjunto obrigatório de atributos específicos por categoria. Cor e tamanho são campos estruturados separados, e as listas de atributos obrigatórios variam de acordo com a categoria.
- A Akakçe e a Cimri são comparadores de preços. Normalmente, esperam uma linha por SKU comprável, e linhas duplicadas quase idênticas tendem a ser filtradas — então enviar uma grade de tamanhos completa sem dados diferenciados pode reduzir a visibilidade, em vez de aumentá-la.
- A Hepsiburada e a N11 definem, cada uma, suas próprias chaves de agrupamento de variantes e atributos obrigatórios.
Esta é a área em que as ferramentas de feed globais genéricas mais costumam falhar, e em que um atributo mapeado de forma errada remove silenciosamente uma categoria inteira de um marketplace.
Comparação
| Meta | TikTok | Amazon | |||
|---|---|---|---|---|---|
| Chave de agrupamento | item_group_id | item_group_id | item_group_id | item_group_id | ASIN pai |
| Tamanho máximo | 50 | 100 | 150 | 50 | n/a |
| Diferencia maiúsculas e minúsculas | Não | Sim | Sim | Não | n/a |
| Sintaxe de disponibilidade | in_stock | in stock | in_stock | in stock | Quantidade |
| Imagens por variante | Recomendadas | Recomendadas | Essenciais | Essenciais | Obrigatórias |
| Exige tema explícito | Não | Não | Não | Não | Sim |
| Relatórios no nível da variante | Sim | Sim | Sim | Limitados | Sim |
7. Separar ou consolidar?
Enviar todas as variantes é a recomendação padrão, mas não é correta em todos os casos. A verdadeira pergunta é se a variação muda o que o comprador quer.
Envie todas as variantes quando…
- A variação é a decisão de compra. Vestuário, calçados, qualquer coisa em que o tamanho errado significa não vender.
- O estoque varia significativamente por variante. Anunciar um produto cuja única opção restante é o tamanho 3XL desperdiça investimento.
- O preço varia por variante. Mostrar €89 quando a opção selecionada custa €119 gera uma divergência de preço e um cliente irritado.
- A demanda de busca inclui a variante. As pessoas pesquisam "suéter de merino azul-marinho M". Você não consegue aparecer para essa busca sem enviar essa variante.
Consolide em uma variante representativa quando…
- O catálogo é muito grande e majoritariamente homogêneo. Uma loja de ferragens com 200.000 SKUs, em que 60% são variações triviais de comprimento, ganha pouco com a expansão completa e paga por ela em processamento do feed e em complexidade das campanhas.
- O canal penaliza quase duplicatas. Vários comparadores de preços filtram linhas repetitivas; uma grade de tamanhos completa pode reduzir a visibilidade.
- A variação não afeta preço, imagem nem disponibilidade. Se as doze variantes são idênticas em todos os aspectos comercialmente relevantes, doze linhas criam ruído, e não sinal.
Ao consolidar, escolha a variante representativa de forma deliberada: a variante em estoque mais vendida, e não a primeira linha em ordem alfabética. É exatamente aqui que os dados de desempenho mostram seu valor no feed — dados do GA4 ou da plataforma podem selecionar a representante automaticamente, em vez de deixar isso para a ordem de classificação.
Um caminho intermediário
Separe pelo eixo que define a decisão; consolide pelo que não define.
Em calçados, isso geralmente significa uma linha por cor, com os tamanhos consolidados — a cor é o eixo de descoberta, e o tamanho é a verificação de ajuste que acontece na página. Em um produto em que a capacidade define o preço, separe por capacidade e consolide por cor.
8. Os 12 erros de variantes mais comuns
| # | Sintoma | Causa | Solução |
|---|---|---|---|
| 1 | As variantes aparecem como produtos separados e sem relação | item_group_id ausente ou único por linha | Preencha com o SKU pai; verifique se ele se repete em todo o grupo |
| 2 | Algumas variantes não aparecem no canal | Valores de id duplicados — as linhas posteriores são descartadas silenciosamente | Garanta a unicidade na exportação; adicione uma verificação de duplicatas |
| 3 | Reprovação por "Mismatched value (page crawl)" | A página de destino mostra cor/tamanho/preço diferentes dos enviados | Adicione parâmetros de deep link; garanta que a página renderize o estado selecionado no servidor |
| 4 | Todas as variantes mostram a mesma foto | Uma única image_link principal reutilizada | Mapeie imagens específicas por variante; use a imagem principal apenas quando não houver imagem da variante |
| 5 | Cliques em anúncios levam a opções fora de estoque | availability não sincronizada por variante | Aumente a frequência de atualização; exclua out_of_stock das campanhas ativas |
| 6 | color rejeitado | Código hexadecimal, número, letra isolada ou palavras unidas | Mapeie para nomes de cores simples; separe várias cores com / |
| 7 | Os filtros de tamanho não funcionam; buscas por tamanho não encontram correspondência | Valores de tamanho inconsistentes no catálogo (M / Medium / med) | Normalize com uma tabela de mapeamento aplicada no nível do feed |
| 8 | O grupo se divide na Meta, mas não no Google | Inconsistência de maiúsculas e minúsculas no item_group_id | Force um único padrão de maiúsculas/minúsculas em todo o campo |
| 9 | A Meta rejeita o feed inteiro | Uso de in_stock onde a Meta espera in stock | Transforme a disponibilidade por canal |
| 10 | Grupo rejeitado por atributos inconsistentes | gender ou age_group diferente dentro do grupo | Esses atributos são constantes no grupo; separe as modelagens masculina e feminina em grupos distintos |
| 11 | O histórico de desempenho é zerado a cada sincronização | item_group_id gerado novamente a cada exportação | Derive-o de um campo de origem estável, nunca da ordem das linhas nem de um hash |
| 12 | O feed XML não pode ser lido | & não escapado em URLs de deep link | Escape como &; valide o XML antes de publicar |
Os erros 1, 2, 4 e 11 respondem pela grande maioria do que vemos em auditorias reais. Nenhum deles é difícil; todos são invisíveis até que alguém vá procurar.
9. Tamanhos quebrados e saúde do estoque
Uma grade de tamanhos quebrada é um produto cujo grupo está tecnicamente no ar, mas na prática não vende — um suéter disponível apenas em PP e 3XL, um sapato com dois tamanhos restantes de nove.
Isso importa mais do que parece. Quando um comprador clica em um anúncio de um produto e descobre que seu tamanho não está disponível, você pagou por um clique que não tinha como converter e ainda gastou a boa vontade com a marca. Em escala, produtos com tamanhos quebrados podem consumir uma parte significativa do orçamento e contribuir quase nada para a receita.
Como detectar
Calcule, por item_group_id:
size_availability_ratio = in_stock_variants / total_variantsDepois, aja com base em limites. Um ponto de partida viável:
| Proporção | Interpretação | Ação |
|---|---|---|
| > 0.7 | Saudável | Anuncie normalmente |
| 0.4 – 0.7 | Diminuindo | Reduza os lances; acompanhe |
| 0.2 – 0.4 | Quebrada | Exclua da prospecção; apenas remarketing |
| < 0.2 | Praticamente esgotado | Exclua totalmente |
Pondere isso pela demanda, e não apenas pela contagem. Perder PP e GG importa muito menos do que perder M e G, que normalmente concentram a maior parte do volume. Uma proporção que trata todos os tamanhos da mesma forma vai reagir pouco à perda dos seus tamanhos principais.
Como agir
A implementação mais limpa marca a condição no feed, em vez de remover o produto:
xml
<g:custom_label_1>broken-size</g:custom_label_1>Marcar, em vez de excluir, preserva o histórico do produto no canal e permite reativá-lo instantaneamente quando o estoque voltar. Remover e adicionar novamente zera o aprendizado.
Dois refinamentos adicionais que vale a pena implementar:
- Leve a informação de volta ao time de merchandising. Uma lista recorrente de tamanhos quebrados é um sinal de compra, e não apenas um problema de publicidade.
- Verifique novamente a cada sincronização. O estoque muda; a marcação precisa acompanhar. Uma lista estática de tamanhos quebrados é pior do que nenhuma, porque suprime produtos que já foram repostos.
10. Usando variantes para segmentar campanhas
Quando as variantes estão estruturadas corretamente, os dados se tornam uma camada de segmentação — provavelmente o uso de maior retorno de um feed de variantes limpo.
O Google oferece cinco campos custom_label (0–4). Eles aceitam valores arbitrários e existem apenas para a lógica das suas próprias campanhas. Os dados de variantes são uma entrada ideal.
Um esquema viável
| Rótulo | Dimensão | Valores de exemplo |
|---|---|---|
| custom_label_0 | Faixa de margem | high-margin, standard, clearance |
| custom_label_1 | Saúde do estoque | full-size-run, thinning, broken-size |
| custom_label_2 | Faixa de desempenho | bestseller, steady, long-tail |
| custom_label_3 | Sazonalidade | ss26, aw25, core, carryover |
| custom_label_4 | Faixa de preço | under-50, 50-100, 100-200, over-200 |
Com isso implementado, a lógica das campanhas fica simples:
- Aumente os lances para bestseller + full-size-run + high-margin
- Exclua broken-size da prospecção
- Dê a clearance uma campanha própria, com um tROAS agressivo
- Isole ss26 quando a temporada for lançada
Performance Max e Advantage+
Ambos são altamente automatizados, o que torna a segmentação no nível do feed mais importante, e não menos. Você não controla mais os lances por palavra-chave, então o feed se torna sua principal alavanca para direcionar o investimento.
No Performance Max, os custom labels definem a estrutura de grupos de recursos e grupos de produtos. Dividir um único grupo de recursos genérico em grupos baseados em margem ou na saúde do estoque é uma das poucas alavancas estruturais que restam, e depende inteiramente de os rótulos serem preenchidos com dados reais.
Nos anúncios de catálogo Advantage+, o agrupamento correto evita que o carrossel se encha com seis tons do mesmo suéter — e definições de conjuntos de produtos baseadas em atributos de variantes permitem separar o estoque de prospecção do de remarketing.
Enriquecendo os rótulos com dados de desempenho
Rótulos estáticos se deterioram. Um bestseller atribuído na temporada passada é desinformação nesta temporada.
A implementação mais robusta recalcula os rótulos a partir de dados de desempenho ao vivo — receita do GA4, taxa de conversão, número de visualizações — a cada sincronização do feed. Um produto que para de vender sai de bestseller automaticamente; um que começa a vender entra. Essa é uma parte central do que enriquecimento de feed significa na prática, e é a diferença entre rótulos que direcionam o orçamento e rótulos que apenas descrevem o último trimestre.
11. Medindo o desempenho das variantes
Os dados no nível da variante são onde a maioria dos relatórios desmorona silenciosamente.
O problema da agregação. O Merchant Center e o Ads geram relatórios no nível do id. Um suéter com 20 variantes aparece como 20 linhas, cada uma com uma fração do volume, nenhuma significativa individualmente. Qualquer conclusão tirada de uma única linha de variante provavelmente é ruído.
Sempre analise em dois níveis:
- Nível do grupo (item_group_id) — este produto funciona? Agregue investimento, conversões e receita de todos os membros.
- Nível da variante (id) — quais opções funcionam? Quais cores vendem, quais tamanhos acabam primeiro, quais combinações nunca saem.
É no segundo nível que estão as descobertas interessantes. Ele responde a perguntas que importam para o merchandising: o azul-marinho vende três vezes mais que o cinza-chumbo? As variantes de tamanho G convertem melhor porque estão sempre em estoque? Alguma cor está puxando a média do grupo para baixo?
Métricas que vale a pena acompanhar por grupo:
| Métrica | Por quê |
|---|---|
| Proporção de disponibilidade de tamanhos | Indicador antecedente de investimento desperdiçado |
| Cobertura de variantes no canal | Enviadas vs. realmente aprovadas — é nessa diferença que os problemas se escondem |
| Parcela de impressões por variante | Revela quais opções o canal realmente favorece |
| Taxa de conversão por cor | Sinal para merchandising e compras |
| Taxa de reprovação por grupo | Detecta cedo erros sistêmicos de atributos |
Uma observação sobre atribuição. Muitas vezes, o comprador vê um anúncio de uma variante e compra outra — clica no azul-marinho e compra o cinza-chumbo. Por isso, o ROAS no nível da variante, tomado ao pé da letra, vai atribuir errado. Avalie os produtos no nível do grupo; use os dados de variantes para entender o comportamento, e não para tomar decisões de lances com amostras pequenas.
12. Checklist antes do lançamento
Execute esta checklist antes de colocar um feed de variantes no ar e depois de qualquer mudança estrutural.
Estrutura
- Cada variante tem um id único
- Todos os membros de um grupo compartilham um item_group_id idêntico
- O item_group_id é derivado de um campo de origem estável e não muda entre as exportações
- O item_group_id usa um padrão consistente de maiúsculas/minúsculas em todo o feed
- Cada membro se diferencia em pelo menos um atributo que define variantes
- O item_group_title está presente e é idêntico em todo o grupo
Atributos
- color usa nomes de cores simples — sem hexadecimais, números ou letras isoladas
- Várias cores são separadas com /, com a principal primeiro
- Os valores de size são normalizados em todo o catálogo
- size_system é declarado quando você vende em regiões com sistemas de tamanhos diferentes
- gender e age_group são idênticos dentro de cada grupo
- material e pattern são preenchidos quando definem a variação
Links e imagens
- O link de cada variante leva ao estado pré-selecionado correto
- O & é escapado como & em XML
- O image_link é específico da variante, e não uma imagem principal compartilhada
- As imagens atendem às dimensões mínimas de cada canal
Transformações por canal
- Sintaxe de availability ajustada por canal (in_stock vs. in stock)
- Limites de caracteres respeitados em cada canal
- As exportações para a Amazon criam anúncios pai e declaram um tema de variação válido
- Conjuntos de atributos dos marketplaces regionais mapeados por categoria
Operação
- A frequência de atualização acompanha a velocidade real de giro do estoque
- A detecção de tamanhos quebrados é executada a cada sincronização
- A verificação de ids duplicados é executada antes da exportação
- O feed é validado como XML/CSV bem formado antes da publicação
- Há alertas configurados para quedas repentinas na quantidade de produtos
13. Perguntas frequentes
Preciso enviar absolutamente todas as variantes? Nem sempre, mas geralmente sim para vestuário e calçados, em que tamanho e cor são a decisão de compra. Em catálogos muito grandes e homogêneos, ou em canais que filtram quase duplicatas, enviar uma única variante representativa bem escolhida por grupo pode ter um desempenho melhor. Escolha a representante pelo desempenho de vendas e pelo estoque, e não por ordem alfabética.
O que acontece se eu omitir o item_group_id? Cada variante é tratada como um produto sem relação com as demais. Você perde o seletor de variantes na superfície de destino, os anúncios ficam repetitivos, os relatórios no nível da variante deixam de funcionar e, no Google, você pode descumprir um requisito — o item_group_id é obrigatório para listagens gratuitas e para anúncios do Shopping em vários mercados importantes quando há envio de variantes.
As variantes podem ter preços diferentes? Sim. O preço não é um atributo que define variantes, mas pode legitimamente variar por variante — tamanhos maiores costumam custar mais. O preço enviado precisa corresponder ao que a página de destino mostra para aquela variante específica.
As variantes fora de estoque devem permanecer no feed? Em geral, sim. Mantenha-as com availability: out_of_stock em vez de excluí-las. Remover e adicionar novamente zera o histórico do item no canal. Em vez disso, exclua-as das campanhas ativas usando uma regra ou um custom label.
Um produto pode pertencer a dois grupos? Não. O item_group_id aceita um único valor por item. Se um produto realmente pertence a dois grupos conceituais, você tem um problema de taxonomia de merchandising a resolver na origem.
Preciso de valores de item_group_id separados por canal? Não — e não deveria. Use o mesmo agrupamento lógico em todos os lugares. O que muda por canal é a transformação aplicada a ele: limites de caracteres, maiúsculas e minúsculas, sintaxe. Mantenha uma única fonte da verdade e adapte na exportação.
Como lidar com produtos que realmente têm tamanho único? Envie size como one_size, OS ou OSFA. Não deixe o campo vazio para vestuário em mercados em que o tamanho é obrigatório.
Versões masculina e feminina do mesmo design — um grupo ou dois? Dois. O gender precisa ser idêntico em todo o grupo. Modelagens e tamanhos diferentes fazem delas produtos diferentes do ponto de vista do comprador.
O que mais quebra na prática? Nas nossas auditorias: imagens principais compartilhadas entre variantes de cor, valores de item_group_id gerados novamente a cada exportação e a sintaxe de availability levada sem alterações de um feed do Google para a Meta. Os três são invisíveis na interface e só aparecem como um desempenho abaixo do esperado sem explicação.
Onde isso deixa você
Os feeds de variantes recompensam a precisão de uma forma que a maior parte do marketing digital não recompensa. Não há julgamento criativo no item_group_id — ou ele é estável e compartilhado, ou não é. Os valores de cor seguem a especificação ou são rejeitados. As imagens correspondem à variante ou o clique foi desperdiçado.
Essa é a boa notícia: trata-se de um problema solucionável, com uma resposta definida. O trabalho está em mantê-lo — porque os catálogos mudam todos os dias, o estoque muda a cada hora e cada canal ajusta sua especificação no próprio ritmo.
As empresas que acertam nisso tratam o feed de variantes como infraestrutura, e não como um arquivo. Elas derivam os IDs de grupo de dados de origem estáveis, normalizam os atributos uma única vez na origem, transformam por canal na exportação, recalculam a saúde do estoque a cada sincronização e geram alertas quando algo muda inesperadamente.
É exatamente para essa camada que a Feedance foi criada — Feed Rules para normalizar os atributos na origem, detecção de Broken Size recalculada a cada sincronização, enriquecimento com GA4 para manter os rótulos de desempenho atualizados e exportações por canal que aplicam a transformação certa para cada um dos mais de 200 destinos sem mexer nos seus dados de origem.
Se você quer saber como está sua estrutura de variantes antes de mudar qualquer coisa, nossa ferramenta gratuita de auditoria de feed avalia um feed existente quanto à completude, à qualidade dos dados e à saúde técnica — incluindo o agrupamento de variantes — sem nenhum custo.

Cofundador da Feedance, onde aproveita sua formação como engenheiro de computação e profissional de marketing para gerar insights analíticos. Com um forte foco em transformar dados em estratégias acionáveis, ele se dedica a ajudar marcas a alcançar um crescimento significativo no cenário digital.
LinkedIn


















