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
- id The id attribute is the unique, permanent identifier a sales channel uses to recognise one item across every feed update. In a Shopify feed it must identify a single variant rather than a product, and once a channel has seen an id it should never be reused for a different item.
- item_group_id The item_group_id attribute groups the rows that are variants of the same product, so a channel can show one listing with a size or colour picker instead of several unrelated listings. On Shopify the natural source is the product ID, shared by every variant row generated from that product.
- title The title attribute is the product name a channel shows in a listing and matches against search queries, which makes it the single highest-leverage field in a product feed. On Shopify it usually needs building from the product title plus the variant's options, because the raw product title alone does not describe an individual variant.
- link The link attribute is the URL a shopper is sent to after clicking a listing, and the page the channel crawls to verify that the feed is telling the truth about price and availability. On a multi-market Shopify store it must point at the market-specific storefront URL, not the primary domain.
Related errors
Related concepts
Channels this applies to
Primary sources
Channel specifications change. These are the official documents this page is based on.