# 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.

- **Canonical URL:** https://www.feedlab.io/knowledge/verticals/books-music-and-media
- **Last reviewed:** 18 September 2026
- **Source:** feedlab knowledge base
- **Licence:** free to quote and cite with attribution to feedlab



## Categories this covers

- `Media`
- `Media > Books`
- `Media > Music & Sound Recordings`
- `Media > DVDs & Videos`
- `Software > Video Game Software`



## Attributes this vertical changes

| 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 these 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

- **`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.




## Primary sources

- [Google: gtin attribute specification](https://support.google.com/merchants/answer/6324461)
- [Google: condition attribute](https://support.google.com/merchants/answer/6324469)



