Skip to content
feedlab Request early access

Concept

Variant-level feed

Also called variant-level export, one row per variant, and SKU-level feed.

A variant-level feed emits one row for each purchasable variant rather than one row per product, because sales channels treat every size, colour and material as a separately buyable item with its own price, stock and barcode. A Shopify product with four sizes in three colours is one product in the admin and twelve items to a channel.

Frequently asked questions

Should a product feed have one row per product or per variant?

Per variant. Channels treat each variant as a separately purchasable item with its own price, stock level and barcode, so a product with twelve variants produces twelve rows, tied together by a shared item_group_id.

What breaks in a product-level feed?

Shoppers cannot filter by the size or colour they want, because only one variant is described. Price and availability are wrong for every variant except the one submitted. Barcodes, which are per variant, are wrong or missing. And the listing loses the variant picker entirely.

How do variants stay grouped as one listing?

Through item_group_id. Every variant row carries its own unique id plus an item_group_id shared across the product, which tells the channel to present them as one listing with a size or colour selector rather than as unrelated products.

Does every variant need its own landing page URL?

Each row should link to the product page with that variant preselected, usually through the variant query parameter. Without it a shopper lands on the default variant, which may be a different size and price than the listing they clicked.

Related attributes

Related errors

Related concepts

Channels this applies to

Primary sources

Channel specifications change. These are the official documents this page is based on.

Last reviewed View as markdown