Google Shopping & ad feeds
Product-level checks against Google Merchant Center's product data specification. Critical ones get items disapproved; warnings throttle reach.
No Product structured data on the page
Google can't verify price/availability from the page and AI agents see an unlabelled web page instead of a product.
How to fixAdd schema.org Product (or ProductGroup) JSON-LD to the product template. Most current Shopify themes output it; if yours doesn't, add it to the product section's Liquid or use a structured-data app. The fixed JSON-LD in a report is a working template.
CriticalAd feedAI agents
Structured data block fails to parse
A broken JSON-LD block is silently ignored by every crawler — the product data in it doesn't exist for them.
How to fixRun the block through Google's Rich Results Test or the Schema Markup Validator and fix the syntax error — usually an unescaped quote or a trailing comma. In Liquid, pass every dynamic value through the json filter.
CriticalAd feedAI agents
Structured-data price differs from the live price
Merchant Center flags "Mismatched value (page crawl) [price]" and disapproves the item; repeated mismatches risk an account-level warning.
How to fixOutput each variant's current price in the JSON-LD from the same value the page shows, and make sure sale prices and Shopify Markets currency conversion update the markup too.
CriticalAd feed
Structured-data availability differs from real stock
Google disapproves for "Mismatched value [availability]"; agents recommend items that can't be bought (or skip ones that can).
How to fixGenerate availability per variant from variant.available (InStock or OutOfStock) instead of hard-coding it, with one Offer per variant.
CriticalAd feedAI agents
Offer has no priceCurrency
Without a currency the price can't be validated, so automatic item updates and price checks fail.
How to fixAdd priceCurrency to every Offer, using the visitor's currency (cart.currency.iso_code in Liquid).
CriticalAd feed
Invalid GTIN / barcode
Merchant Center rejects invalid GTINs ("Invalid value [gtin]"); the item is disapproved until fixed.
How to fixCorrect the barcode in Shopify admin (product → variant → Barcode) to the 8-, 12-, 13- or 14-digit GTIN from the manufacturer or your GS1 record. If the product has no GTIN, clear the field rather than entering a SKU.
CriticalAd feed
Missing description
Description is a required feed attribute; agents have nothing to reason over.
How to fixWrite a description that covers what the product is, what it's made of, its fit or dimensions, and who it's for.
CriticalAd feedAI agents
No product image
Image link is required — the item can't serve in Shopping at all.
How to fixAdd at least one product image, and point each variant to its own image.
CriticalAd feedAI agents
Main image below Google's minimum size
Images under 100×100 (250×250 for apparel) are disapproved.
How to fixUpload main images of at least 800×800 px; Shopify serves smaller sizes automatically, and Google's floor is 100×100 (250×250 for apparel).
CriticalAd feed
Purchasable variant priced at 0
Zero prices are rejected as "Invalid value [price]".
How to fixSet a real price on purchasable variants, or make free samples and gifts unavailable so they drop out of feeds.
CriticalAd feed
GTIN in a restricted / in-store range
Store-internal (02/04/2x) and coupon (05/98/99) ranges aren't accepted as product identifiers.
How to fixReplace store-internal or coupon codes with the product's real GTIN. If it has none, leave the barcode empty and submit identifier_exists = no in your feed.
WarningAd feed
No GTIN on any variant
Branded products without GTINs get "limited performance" in Shopping and can't be matched to the same product across sellers by agents.
How to fixAdd the manufacturer's GTIN to each variant's Barcode field. For your own brand, license GTINs from GS1; for custom or handmade items without one, submit identifier_exists = no.
WarningAd feedAI agents
Barcodes exist in Shopify but aren't exposed in structured data
The identifiers are already there — the theme just doesn't publish them, so crawlers and agents never see them.
How to fixAdd gtin to each variant's Offer in the theme's JSON-LD from variant.barcode — the data is already in Shopify.
WarningAd feedAI agents
No brand in structured data
Brand is required for most new products in Shopping and is the first filter agents apply.
How to fixAdd brand to the JSON-LD (most themes use product.vendor) and make sure the vendor field holds the actual brand name.
WarningAd feedAI agents
Apparel item: color / size / gender / age group not published
Google requires these for apparel in key markets (US, UK, DE, FR, JP, BR), and agents filter on them. If they only live in app metafields, no crawler or agent can see them.
How to fixPublish color and size as variant options, and gender and age group as product metafields that both your JSON-LD and your feed read (Shopify's Google & YouTube app uses the mm-google-shopping namespace).
WarningAd feedAI agents
Material / color / pattern not in structured data
These are the attributes Google and AI agents filter on; they're absent from the machine-readable layer.
How to fixPublish color, material and pattern in the JSON-LD (the Product properties of the same names), filled from variant options or metafields.
WarningAI agentsAd feed
Very thin description (< 150 characters)
Short copy limits which searches the item can match in Shopping and gives agents nothing to quote.
How to fixExpand the description past 150 characters with material, dimensions, use and care — the facts agents quote and feeds match on.
WarningAd feedAI agents
Title over 150 characters
Google truncates at 150 characters; the words that sell get cut.
How to fixKeep titles under 150 characters, ideally under 70, with brand, product type and the key attribute first.
WarningAd feed
Promotional text or shouting in title
"Free shipping", "SALE" or ALL-CAPS in titles violates Shopping editorial policy.
How to fixRemove promotional text, prices and all-caps words from titles; run offers as Merchant Center promotions instead.
WarningAd feed
No product type
Without a product type, mapping to Google's taxonomy (and bidding by category) falls back to guesswork.
How to fixFill in the product type (or Shopify product category) for every product so it maps cleanly to Google's product taxonomy.
WarningAd feedAI agents
Very short title (< 25 characters)
Feed titles that include brand, product type and key attribute get more impressions.
How to fixLengthen the feed title to brand + product type + key attribute, e.g. "Acme Women's Merino Crew Sweater – Navy".
InfoAd feedAI agents
No return / shipping policy in structured data
Google shows shipping and returns annotations only when they're marked up; agents compare stores on exactly this.
How to fixAdd hasMerchantReturnPolicy and shippingDetails to the Offers in your JSON-LD, or configure return and shipping policies in Merchant Center.
InfoAI agentsAd feed
AI shopping agents
What ChatGPT, Perplexity and Google AI Mode need to recommend a product: machine-readable facts, visible without JavaScript.
Product structured data only appears after JavaScript runs
Google renders it eventually, but most AI crawlers (OAI-SearchBot, PerplexityBot, ClaudeBot) don't execute JavaScript — to them the product has no structured data at all.
How to fixRender the JSON-LD server-side in the theme's Liquid instead of injecting it with an app script, so it's in the HTML crawlers download. If an app adds it, look for a server-side output setting or switch apps.
CriticalAI agents
No material, measurements or specs in the product data
Agents filter on facts ("merino, under 300g, machine-washable"). With none, the product can't match those queries.
How to fixAdd the facts shoppers filter on — material, dimensions, weight, care — to the description and, better, to metafields published in the JSON-LD as additionalProperty.
CriticalAI agents
Variants aren't described in structured data
Agents can't tell which sizes/colors exist or are in stock, so they can't answer "do you have it in M, in blue?"
How to fixDescribe the product as a ProductGroup with hasVariant, or one Offer per variant, so each size and color carries its own price, availability, SKU and GTIN.
WarningAI agents
Specs buried in prose, not structured
Facts exist in paragraphs but not as attributes; agents and feeds have to guess, and usually drop them.
How to fixMove specs out of paragraphs into product metafields and publish them as additionalProperty name/value pairs in the JSON-LD.
WarningAI agents
Images have no alt text
Crawlers and agents that don't run vision read nothing from the images.
How to fixAdd alt text to product images in Shopify admin, describing the product, its color and the view.
InfoAI agents