This is the full audit list, organized the way you’d actually work through it, plus what’s new for 2026 and what to fix first.
Why This List Exists Now: What Changed in 2026
Google updates its Merchant Center product data specification every year, and 2026’s changes are more consequential than most. According to Google’s own announcement, confirmed by Search Engine Roundtable’s coverage, three changes are rolling out on a staggered timeline:
- New product-level shipping attributes, effective April 14, 2026: handling_cutoff_time (a daily order-processing deadline), minimum_order_value (minimum spend to ship), and two new sub-attributes of shipping, loyalty_program_label and loyalty_tier_label, for surfacing loyalty shipping perks on individual products.
- A new optional video_link attribute, also available from April 14, 2026. Merchants can submit product video URLs now, but serving and policy/quality validation didn’t begin until June 30, 2026 (which, as of this writing, has already happened). Products with a flagged video simply won’t show that video; the underlying product offer keeps serving normally.
- A higher minimum image resolution. Google is raising the minimum for image_link and additional_image_link to 500×500 pixels across every product category. Warnings started April 14, 2026; enforcement begins January 31, 2027. Google says it will attempt to auto-upscale some under-sized images in the meantime, but that’s a stopgap, not a fix.
Almost no Shopify store has touched the three brand-new fields yet, which means there’s a real first-mover window here: the merchants who populate video_link, handling_cutoff_time, and minimum_order_value now are giving Google’s ranking systems more to work with than competitors who haven’t.
The Business Case: What Feed Quality Actually Buys You
It’s tempting to treat feed hygiene as busywork. The case studies say otherwise. Feedonomics’ published client results, one of the two dominant feed management platforms alongside DataFeedWatch, include:
- Euro Car Parts: consolidating and correcting feed data lifted Google Merchant Center eligibility by 20%, took GTIN coverage from 58% to 74%, and pushed feed accuracy above 99%, contributing to a 44% reduction in customer acquisition cost and an 88% uplift in ROI.
- Dell: feed optimization work increased click-through rate by 15% and return on ad spend by 16% in the first year.
- Logitech: centralizing and automating feeds cut product data errors from over 5% down to under 1%.
None of that came from new ad spend: it came from fixing what was already in the feed. That’s the argument for treating this checklist as a revenue project, not a compliance chore.
Why Shopify Specifically Gets This Wrong
Shopify’s product model is built around what a shopper sees on a product page: title, price, variant options, a description field. Google’s specification is built around what an algorithm needs to classify, match, and trust a product. The two don’t line up as neatly as the “connect your Google & YouTube channel and you’re done” onboarding flow implies:
- Shopify has no native “Brand” field. Most feed integrations pull brand from the Vendor field under Organization, which is frequently left as the store’s own name, blank, or inconsistent across a catalog migrated from another platform.
- Shopify’s variant options (Option1/Option2/Option3) aren’t the same as Google’s color/size/gender/age_group attributes. Without explicit mapping (via metafields, a feed app, or manual rules), combined values like “Navy / Large” get dumped into one field instead of split correctly.
- The barcode field is optional at product creation. Nothing in Shopify’s admin forces a GTIN to be populated, so catalogs built by non-technical staff routinely ship with the field empty.
- Shopify’s id and variant_id are different things, and mapping the wrong one is one of the most common causes of duplicate-ID errors across a catalog with any variants at all.
- Headless and custom Shopify storefronts break Google’s verification loop. The Google & YouTube channel app checks live price and availability against your standard storefront; a custom frontend serving product pages differently causes price-mismatch disapprovals even when the underlying data is accurate.
None of this is a Shopify failure exactly: it’s a translation gap. The checklist below is the translation.
The 47-Field Checklist
1. Core Identification & Content (8 fields)
| # | Field | Common Shopify Mistake | Fix |
|---|---|---|---|
| 1 | id | Feed apps map the shared product ID instead of the unique variant_id, causing duplicate-ID errors across variants | Confirm your feed source maps variant_id, not id, as the Merchant Center offer ID |
| 2 | title | Pulled straight from the Shopify product title with no Brand + Type + Attribute structure | Rebuild titles as Brand + Product Type + Key Attribute + Secondary Attribute; front-load the first ~70 characters |
| 3 | description | Copied from the SEO meta description field, often under 300 characters with no real specs | Write to 500+ characters covering materials, dimensions, and use case; don’t keyword-stuff |
| 4 | link | Preview-theme or password-protected URLs leak into the feed after a redesign | Audit that every link resolves to a live, public, canonical product URL |
| 5 | image_link | Native product photo under the new 500×500px minimum, or carries a watermark/badge | Re-export hero images at 1500×1500px+; strip promotional overlays |
| 6 | additional_image_link | Only one image submitted per product | Add alternate angles: Google’s Shopping gallery rewards multi-image listings |
| 7 | video_link | Not populated at all: this is a brand-new 2026 attribute | Prioritize video for your top-revenue and highest-margin SKUs first |
| 8 | canonical_link | Missing entirely on headless/custom Shopify storefronts | Set explicitly if your frontend isn’t Shopify’s standard theme engine |
2. Price, Availability & Inventory (7 fields)
| # | Field | Common Shopify Mistake | Fix |
|---|---|---|---|
| 9 | price | Feed price drifts from checkout price after a currency or member-pricing app changes it | Spot-check 10-20 products across price points against live checkout monthly |
| 10 | sale_price | Set without a matching effective-date window, so the sale looks perpetual or expired | Always pair with sale_price_effective_date |
| 11 | sale_price_effective_date | Missing explicit UTC offset, causing sales to start/end at the wrong hour | Use full ISO format with timezone, e.g. 2026-03-01T00:00:00-05:00/2026-03-15T23:59:59-05:00 |
| 12 | availability | Shopify’s true/false stock flag passed raw instead of mapped to Google’s accepted values | Map explicitly to in_stock, out_of_stock, or preorder: no other values are accepted |
| 13 | availability_date | Missing on preorder items | Required whenever availability is set to preorder |
| 14 | Feed resync timing | Merchants assume real-time sync; Shopify → Merchant Center typically takes 24-48 hours | Trigger a manual resync for time-sensitive price or stock changes instead of waiting |
| 15 | expiration_date | Long-tail, slow-moving SKUs quietly expire from the feed after 30 days of neglect | Set a recurring feed refresh cadence so low-velocity products don’t silently drop out |
3. Identifiers & Classification (6 fields)
| # | Field | Common Shopify Mistake | Fix |
|---|---|---|---|
| 16 | gtin | Barcode field left empty since it’s optional at product creation | Backfill from supplier data or a UPC lookup service; validate the check digit before submitting |
| 17 | mpn | Also missing when GTIN is absent, leaving the product with zero identifiers | Populate mpn for any private-label or unbranded item without a barcode |
| 18 | identifier_exists | Not set to false for handmade, custom, or private-label goods | Explicitly declare false: silence is treated as a missing required identifier, not an exemption |
| 19 | brand | Left blank, since Shopify has no native brand field | Map from Vendor, or a dedicated metafield if Vendor is used for internal supplier tracking |
| 20 | google_product_category | Left to Google’s automatic categorization | Manually map every product type to Google’s official taxonomy |
| 21 | product_type | Raw internal collection structure dumped in unedited | Submit a clean breadcrumb-style value (e.g., “Apparel > Women’s > Outerwear > Jackets”) |
4. Variants & Apparel Attributes (8 fields)
| # | Field | Common Shopify Mistake | Fix |
|---|---|---|---|
| 22 | item_group_id | Reused across unrelated products instead of only true variants of one product | Audit that every shared group ID represents genuine color/size variants of a single item |
| 23 | color | Combined option values like “Navy/Large” pushed into one field unsplit | Map Option1/Option2 cleanly so color and size populate separate attributes |
| 24 | size | Same option-mapping issue as color | Split from combined variant option strings; standardize label formatting |
| 25 | size_type | Omitted for regular/plus/petite/maternity/big cuts | Populate wherever a store carries more than one fit category |
| 26 | size_system | Missing on stores shipping to both US and EU customers | Set explicitly (e.g., US, EU) to avoid size confusion across markets |
| 27 | gender | Left blank on unisex or gender-neutral accessory items | Use unisex rather than leaving the field empty: required for apparel |
| 28 | age_group | Missing entirely: not part of Shopify’s default product template | Populate alongside gender; required for apparel categories |
| 29 | material / pattern | Blank even when the description already mentions fabric or pattern | Extract from existing copy: free ranking signal most stores skip |
5. Shipping & Tax (7 fields)
| # | Field | Common Shopify Mistake | Fix |
|---|---|---|---|
| 30 | shipping (weight/dimensions) | Weight field left at a default “0” from a bulk import or template | Audit weight and dimensions together: Google uses both for dimensional-weight shipping estimates |
| 31 | shipping (cost) | Feed shipping cost doesn’t match live Shopify shipping-rate tables | Mirror rates exactly, or set shipping centrally in Merchant Center’s Shipping settings |
| 32 | ships_from_country | Missing on dropship or third-party-fulfilled catalogs | Populate wherever fulfillment location affects delivery promises |
| 33 | max/min_handling_time | Not set, so Google displays generic delivery estimates | Set to match real fulfillment SLAs, especially for made-to-order items |
| 34 | handling_cutoff_time | Unpopulated: brand-new for 2026 | Add for any store with a hard daily order-processing deadline |
| 35 | minimum_order_value | Unpopulated: brand-new for 2026 | Relevant for stores with supplier minimum order quantities passed to the customer |
| 36 | tax / tax_category | US sellers leave Merchant Center tax settings unconfigured; non-US sellers include tax incorrectly | Configure Merchant Center’s Sales Tax settings for US; submit tax-inclusive pricing for most other markets |
6. Merchandising & Optimization Signals (6 fields)
| # | Field | Common Shopify Mistake | Fix |
|---|---|---|---|
| 37 | custom_label_0-4 | Left completely empty | Populate with margin tier, seasonality, or bestseller status to enable segmented Shopping bidding |
| 38 | cost_of_goods_sold | Skipped entirely | Populate so Target ROAS bidding can optimize toward actual profit, not just revenue |
| 39 | promotion_id | Not linked to an active Merchant Center Promotion | Set up the matching promotion so the “Special offer” badge actually surfaces |
| 40 | loyalty_program_label / loyalty_tier_label | Unused: brand-new 2026 shipping sub-attributes | Worth testing if you run a Shopify loyalty app with tiered shipping perks |
| 41 | product_highlight / product_detail | Left blank | Populate with bullet-style specs for a richer, more complete-looking listing |
| 42 | condition | Left at default “new” even for refurbished or open-box inventory | Set accurately for any resale, liquidation, or open-box catalog |
7. Policy, Trust & Compliance (5 fields)
| # | Field | Common Shopify Mistake | Fix |
|---|---|---|---|
| 43 | Return policy visibility | No return policy page linked or easily discoverable | Publish and link a clear return policy from Shopify’s Legal/Policies settings |
| 44 | Contact information | Incomplete business contact details in the site footer | Confirm phone, email, and physical address are visible and accurate |
| 45 | Structured data (schema.org Product) | Theme doesn’t emit matching Product/Offer schema, so on-page data contradicts the feed | Verify with Google’s Rich Results Test; align schema pricing/availability with your feed |
| 46 | excluded_destination / included_destination | Not configured, so every product defaults into every surface | Explicitly control which products appear in Shopping ads vs. Free listings vs. Display |
| 47 | multipack / is_bundle | Bundle or kit SKUs left unflagged | Flag bundles so Google doesn’t try to match them against a single component’s GTIN |
Quick Prioritization: The First 10 to Fix This Week
If the full list feels like a lot, this is the order that recovers the most performance fastest, based on which errors cause outright disapproval versus which just suppress performance:
- availability value mapping (#12): wrong values mean products vanish entirely
- gtin and identifier_exists (#16, #18): the single most common disapproval cause industry-wide
- price / checkout match (#9): price mismatches trigger preemptive disapproval
- image_link resolution (#5): the 2026 500×500 minimum is already generating warnings
- brand mapping (#19): required for most branded products, frequently blank on Shopify
- google_product_category (#20): manual mapping beats Google’s automatic guess
- item_group_id (#22): misconfigured grouping confuses variant display
- gender / age_group (#27, #28): required-together fields on apparel, often missing as a pair
- shipping cost and weight (#30, #31): a top source of price-mismatch disapprovals
- custom_label_0-4 (#37): zero disapproval risk, pure performance upside for campaign structure
How to Audit This Without Doing It by Hand
For catalogs under a few hundred SKUs, a spreadsheet pass against this checklist is realistic. Past that, the Diagnostics tab inside Google Merchant Center will surface every current error and warning with an affected-product count: start there before touching anything else. Feed rules and supplemental feeds (native to Merchant Center) let you transform, map, or patch attribute values without editing your live Shopify product data, which is the safer path for anything beyond a handful of products. For larger or more complex catalogs, dedicated feed management apps (Simprosys, AdNabu, DataFeedWatch, or Feedonomics depending on catalog size) give far more granular control over attribute mapping than Shopify’s native Google & YouTube channel app alone.
How iClick Approaches This
Feed audits are the unglamorous part of eCommerce PPC, and they’re also where iClick finds the fastest wins on almost every new eCommerce account: a client’s Shopping campaigns are only ever as good as the data feeding them. If you want a second set of eyes on your feed, a free written PPC audit covers exactly this checklist against your live account. For a sense of where your ROAS should land once the feed is clean, the Google Ads ROAS Calculator is a fast benchmark. For the full channel strategy beyond the feed itself, see Google Shopping management and the eCommerce PPC hub. To talk through your current feed health, book a strategy call.
FAQ
What’s the most common reason Shopify products get disapproved on Google Shopping?
Missing or invalid GTINs are the single most common cause industry-wide, closely followed by price mismatches between the feed and the live checkout price. Both are avoidable with a regular audit cadence rather than a one-time setup.
Do I need a GTIN for every product on Shopify?
Only for products that have one: branded items with a manufacturer barcode. For custom, handmade, or private-label products without a registered barcode, set identifier_exists to false rather than leaving the field blank; a blank field is treated as a missing required attribute, not an exemption.
What are the new Google Shopping feed fields for 2026?
Google added three product-level attributes in 2026: video_link (product videos, serving live since June 30, 2026), handling_cutoff_time (a daily order-processing deadline), and minimum_order_value, plus two new shipping sub-attributes for loyalty shipping perks. Google also raised the minimum image resolution to 500×500 pixels, with enforcement starting January 31, 2027.
Why doesn’t Shopify have a native “brand” field for Google Shopping?
Shopify’s product model uses a “Vendor” field under Organization, which most feed integrations map to Google’s brand attribute. It’s frequently left blank, set to the store’s own name, or inconsistent after a platform migration, worth auditing directly rather than assuming it’s populated correctly.
How often should I audit my Google Shopping feed?
At minimum quarterly, and immediately after any theme change, platform migration, or pricing/shipping update. Stores running active promotions or frequent price changes benefit from a monthly spot-check of 10-20 products against live checkout pricing.
Does feed quality affect anything beyond Shopping ads?
Increasingly, yes. Google’s free listings and AI-driven shopping surfaces both draw on the same Merchant Center product data, so a more complete feed improves visibility beyond paid Shopping placements as well.
Sources
- Google Merchant Center: Product Data Specification Update 2026
- Google Merchant Center: Fixing Disapprovals for Product Data Quality Violations
- Search Engine Roundtable: Google Updates Some Merchant Center Product Specifications for 2026
- Shopify Help Center: Google Product Disapprovals and Warnings
- Feedonomics: Data Feed Management Case Studies
- Google Merchant Center: Product Data Specification

