Skip to content
feedlab Request early access

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.

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.

Feed attributes whose requirement changes for Books, music and media
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

Errors this vertical runs into

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