Product vertical
Books, music and media
Media is the vertical where identifiers work best and are least forgiving. Every book has an ISBN and every commercial release has a barcode, so channels expect an exact identifier match, and the whole listing hangs on getting the edition and the condition right.
Categories this covers
The Google product taxonomy branches these rules apply to. Match your own products against these paths before assuming the extra requirements are yours.
- Media
- Media > Books
- Media > Music & Sound Recordings
- Media > DVDs & Videos
- Software > Video Game Software
Attributes this vertical changes
These sit on top of the attributes every feed needs. A requirement shown here applies because of the category, not because of the channel.
| Attribute | Requirement here | Why |
|---|---|---|
| gtin | Required | An ISBN-13 is a GTIN, and every commercial release carries one. This is the vertical where matching works almost perfectly when the identifier is right, and where an absent one is a plain data gap. |
| condition | Required | Second-hand media is a category of its own. A used paperback listed as new is the clearest possible mismatch between listing and product, and used stock is normal here rather than exceptional. |
| brand | Optional | Media is the one place where brand is genuinely the wrong question: the publisher or label is not a brand a shopper searches by, and the identifier does the matching work instead. |
| item_group_id | Required in some cases | Required where formats are variants of one product, such as hardback, paperback and audiobook, so a shopper can choose between them rather than seeing three unrelated listings. |
| multipack | Required in some cases | Required for box sets you have assembled yourself from individually saleable volumes, which is a common own-assembled bundle in this vertical. |
What catches books, music and media stores out
ISBN-10 is not a GTIN
Older stock and older supplier data carry ten-digit ISBNs, which are not valid GTIN lengths. They convert to ISBN-13 by prefixing 978 and recalculating the check digit, and that conversion has to happen at generation time. Submitting the ten-digit form produces an invalid identifier rather than a missing one.
Leading zeros vanish through a spreadsheet
Media identifiers frequently begin with a zero, and any trip through Excel or Sheets turns a valid twelve-digit UPC into an eleven-digit number. In a catalogue built from supplier spreadsheets this is the single most common cause of invalid identifiers.
Editions are different products with similar titles
A reissue, a film tie-in cover and an anniversary edition are separate products with separate identifiers and often near-identical titles. Matching on title instead of identifier puts your listing against the wrong edition, at the wrong price, with the wrong cover.
Formats submitted as separate products lose the picker
Hardback, paperback, ebook and audiobook are usually separate Shopify products rather than variants. That is reasonable in the admin and unhelpful in a feed, because without a shared item_group_id the channel shows them as unrelated listings competing with each other.
Used stock is single-quantity stock
A second-hand book is one unit. It sells once and has to leave the feed immediately, which a daily fetch cannot do. This vertical needs regeneration driven by inventory webhooks rather than by a timer, or it will accumulate availability mismatches.
Where these values come from in Shopify
Shopify has a field for some of these and nowhere to put the rest. Both cases are worth knowing before you start mapping.
- gtin
- From the variant barcode, which in a media catalogue holds the ISBN or UPC. Validate the length and check digit and convert any ten-digit ISBN before it reaches the feed.
- condition
- From a tag, collection or metafield distinguishing used stock. A store that sells both new and second-hand needs this per product rather than per catalogue.
- item_group_id
- Where formats are separate products, from a shared metafield carrying the work identifier rather than from the product id, which would put each format in its own group.
- availability
- From inventory quantity, and worth regenerating on the inventory webhook rather than on a schedule because single-copy stock goes out of date the moment it sells.
Frequently asked questions
Is an ISBN a valid GTIN?
An ISBN-13 is, and it goes straight into the gtin attribute. An ISBN-10 is not a valid GTIN length and has to be converted by prefixing 978 and recalculating the check digit before it is submitted.
How do I feed different formats of the same book?
Each format is its own item with its own identifier, tied together with a shared item_group_id. Since Shopify usually holds formats as separate products, the group value normally comes from a metafield rather than the product id.
Do I need brand for a book feed?
Not really. The publisher is not a brand shoppers search by, and the identifier does the matching. It is the one vertical where leaving brand thin costs you very little.
How do I handle second-hand stock in a feed?
Set condition to used and regenerate on inventory changes rather than on a schedule. Single-copy stock sells once, and a daily fetch leaves it advertised as available for hours afterwards.
Attributes involved
- gtin The gtin attribute is the globally unique barcode number a manufacturer assigns to a product, covering UPC, EAN, JAN and ISBN formats. Channels use it to match an item against the same product sold elsewhere, and on Shopify it comes from the variant's barcode field, which is optional in the admin and therefore frequently empty.
- condition The condition attribute declares whether an item is new, refurbished or used. Its requirement level is one of the sharpest differences between channels: Google only needs it when an item is not new, while Meta expects it on every item, so a feed built for one and pointed at the other fails on every row.
- 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.
Errors this vertical runs into
- Invalid value: GTIN The "Invalid value: GTIN" error means the feed supplied a value in the gtin attribute that is not a structurally valid Global Trade Item Number. Unlike a missing GTIN this is usually a disapproval rather than a warning, because a wrong identifier matches the item to the wrong product rather than to none.
- Missing value: GTIN The "Missing value: GTIN" issue means a channel believes a product has a manufacturer-assigned barcode but the feed did not supply one. On Shopify it almost always traces back to the variant barcode field, which is optional in the admin and therefore left empty across large parts of most catalogues.
- Mismatched value: availability The availability mismatch error means the feed says an item is purchasable but the crawled landing page suggests otherwise, or the reverse. On Shopify it is usually a stale feed after a sell-out, or an availability value derived from inventory quantity alone without accounting for variants that do not track inventory or that allow overselling.
Related concepts
- Product identifiers Product identifiers are the values that let a sales channel recognise that your listing and someone else's describe the same physical product: a GTIN, or a manufacturer part number together with a brand. They matter because a channel that can identify a product can attach reviews, specifications and competing offers to it, and one that cannot has to treat your listing as an unknown object.
- Variant-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.
Channels this applies to
- Google Shopping Google Shopping is the surface where Google displays product listings from a merchant's catalogue, fed by a product feed uploaded to Google Merchant Center. Google's product data specification is the most detailed of the major channels, and the one whose attribute names the other channels tend to borrow.
- Meta Meta's product catalogue is the data source behind Facebook and Instagram Shops, Advantage+ catalogue ads and dynamic retargeting, populated by a product feed uploaded to Commerce Manager. Its attribute names largely mirror Google's, but its accepted values and its handling of variants differ enough to break a feed copied straight across.
- Microsoft Advertising Microsoft Advertising runs product ads across Bing, Yahoo and the Microsoft Audience Network from a catalogue uploaded to Microsoft Merchant Center. Its feed specification is closely modelled on Google's, which makes it the cheapest additional channel to launch once a Google Shopping feed already exists.
Primary sources
Channel specifications change. These are the official documents this page is based on.