Shopify product feeds: Google, marketplaces and channels
A feed is your catalogue in someone else's format. The work is entirely in data quality, and disapprovals are almost always the same five things.
7 min read · Integrations ·
A product feed is your catalogue expressed in someone else's format — Google Shopping, Meta, a marketplace, a comparison site. Each has its own required attributes and its own approval rules, and the work is almost entirely data quality rather than plumbing.
What a feed contains
Broadly the same everywhere:
- Identity: an ID, title, description, link, image link.
- Availability and price, including sale price and its date range.
- Product identifiers: GTIN, MPN, brand. The most common source of rejections.
- Category, in the channel's own taxonomy — not yours.
- Attributes: condition, colour, size, material, age group, gender.
- Shipping and returns, where the channel wants them declared.
- Variant grouping, so twelve sizes appear as one product rather than twelve.
Where the data comes from
The good news: most of it is already in Shopify. Title, description, price, availability, images and variants map fairly directly.
The rest doesn't have a native home, and that's where feeds get messy:
- GTIN maps to the variant barcode field. Populate it — this is the single biggest cause of disapprovals.
- Brand usually maps to vendor.
- Google product category has no native field. It belongs in a metafield, set per product or derived from collection.
- Age group, gender, material, pattern — metafields again.
The pattern is consistent: define metafields for channel attributes and populate them properly, rather than letting a feed app guess from your descriptions. Guessed data is where disapprovals come from.
Feed apps or custom
Apps handle the common case well: they generate the feed, map fields, submit it, and report errors. For most stores this is the right answer and there's no reason to build.
Custom becomes worthwhile when:
- You need transformation rules an app can't express — rewriting titles by category, deriving attributes from several fields, excluding products by a business rule.
- You're feeding many channels with genuinely different requirements.
- Your product data lives in an ERP and the feed should be generated from the source rather than from Shopify's copy.
- Feed volume is large enough that generation needs bulk operations rather than pagination.
The five reasons things get disapproved
Nearly every disapproval is one of these:
- Missing GTIN or MPN. Populate the barcode field.
- Price or availability mismatch between the feed and the landing page. Usually a stale feed, sometimes a currency or tax display difference.
- Image problems — too small, with promotional text overlaid, or watermarked.
- Prohibited or restricted content, including category-specific rules you didn't know applied.
- Landing page issues — a link that 404s, redirects, or lands on a sold-out variant.
Number two is worth dwelling on. If your feed says one price and the page shows another because tax is displayed differently, the channel treats it as a mismatch. Check what the feed asserts against what a customer actually sees.
Keeping feeds accurate
- Refresh frequency matched to change rate. Daily is standard; stores with frequent price changes need more.
- Handle out-of-stock deliberately — mark unavailable rather than removing, so history and reviews persist.
- Watch the disapproval report. It's the closest thing to a free data-quality audit you'll get, and most stores never open it.
- Test the landing pages. A feed pointing at a redirect or a dead handle wastes budget silently — related to URL structure and handles.
Variants matter more than people expect
A product with twelve sizes should appear as one item with variants, not twelve competing listings. That means the item group ID and the variant attributes need to be correct — and it's the difference between one strong listing and twelve weak ones splitting the same demand.
If a marketplace is currently your main channel rather than an add-on, the move to your own store is a different kind of project — leaving Etsy.
Start narrow
The mistake is feeding every channel on day one with mediocre data. Feed one channel properly, get the data quality right, watch the disapprovals go to zero, then add channels using the same clean data.
A feed is only as good as the fields behind it. Time spent populating barcodes and categories beats time spent configuring feed apps, every time.
Is this the problem you’re looking at?
Send me the link to your store and a line about what is going wrong. You get a straight answer within one business day — no pitch, no obligation.
[email protected]Or see what I do around Shopify: services, work beyond the theme, selected work.