Product Feeds
Google Product Feed Optimization Checklist (With Feed QA Steps)
Work through these tables to find what’s holding your feed back, then use the QA routine to keep it clean after every change.
Feed optimization has two parts. The first is meeting Google’s requirements so products are approved. The second is giving Google complete, accurate and specific data so products can match the right searches. Most feeds have gaps in both.
Each checklist below lists a check, what good looks like and where to verify it. Every requirement comes from Google’s documentation; practitioner suggestions are marked as tips. Use it for a one-off audit, then keep the QA routine at the end for ongoing changes.
Short answer: A good product feed has one primary data source, stable unique IDs, specific titles under 150 characters, accurate descriptions, large clean images, prices and availability that match the landing page, real GTINs and brands, correctly grouped variants and shipping for every target country. Check Needs attention, then compare a sample of products with their live pages after every change.
Key Takeaways
- Start with Needs attention, then compare a sample of products with their live pages.
- Price, availability and landing page checks protect the account, so do them first.
- Complete identifiers, specific titles and full product details improve how well products match searches.
- Fix problems in the system that generates the feed, not only in Merchant Center.
- Run a short QA routine after every platform, theme, app or pricing change.
How to use this checklist
Go through the sections in order. The early ones cover issues that can stop products or put the account at risk; the later ones improve quality and performance.
- Export the current issue list from Products > Needs attention (turn off Prioritized fixes to see every issue). See how to use diagnostics.
- Download a sample of product data from Merchant Center or your feed tool, covering every main category and both simple and variant products.
- Open each sample product’s landing page in a private window, logged out.
- Work through the tables below, noting each failed check and the system that produces the value.
Practitioner tip: record the root cause next to each failed check (“theme injects price with JavaScript”, “brand mapped from supplier field”). One root cause usually explains dozens of products.
Data source setup
| Check | What good looks like | Why |
|---|---|---|
| One primary source for the catalog | All products in a single primary data source; exclusions handled with excluded_destination | Google’s recommendation for primary sources |
| No duplicate online and local primary sources | Same products aren’t submitted in separate online and local primary sources | Google says not to do this |
| Supplemental sources match | Supplemental IDs match primary IDs exactly and use the same feed label | Supplemental sources match by ID and feed label |
| No legacy online inventory sources | Quick price and stock updates use a supplemental source with a “Take latest” rule | Online inventory data sources are deprecated |
| Countries and language correct | Target countries and language match where you sell and the language of your data and pages | Set per primary source |
| Feed labels planned | Feed labels follow the format (up to 20 characters, uppercase, digits, hyphen, underscore) and match campaigns | Language and feed label can’t be changed later |
| Single source of truth | Each product is managed in one place (platform, file or API), so syncs don’t overwrite fixes | API and app updates may overwrite manual edits |
Background on these concepts is in what is a product feed.
IDs and product structure
| Check | What good looks like |
|---|---|
| id present and unique | Every product has an id of 1 to 50 characters; no two products share one |
| id stable | IDs don’t change between updates (a change overwrites the product and its history) |
| id not case-dependent | No IDs that differ only by letter case, such as abc123 and ABC123 |
| id clean | No whitespace or invalid Unicode characters |
| IDs not recycled | Discontinued products’ IDs aren’t reused for new products |
| One record per variant | Each size, color or other variant is a separate product with its own id |
| item_group_id consistent | All variants of a product share one stable item_group_id (1 to 50 characters); the parent isn’t submitted separately |
| item_group_id only for real variants | Not used to group different products such as a jacket and matching trousers |
Variant setup has its own guide: how to manage product variants in feeds.
Titles and descriptions
| Check | What good looks like |
|---|---|
| Title length | 1 to 150 characters; the most important details in roughly the first 70 |
| Title matches page | Title describes the product on the landing page |
| Variant details in title | Color, size or other variant details included where relevant, and submitted as attributes too |
| Specific keywords | Product type, brand where it differentiates, and specific details such as material or key feature |
| No promotional text | No prices, sale wording, shipping or delivery claims, all caps for emphasis, symbols or company name |
| Clean formatting | No HTML tags, extra whitespace or gimmicky characters |
| Description present | Every product has a description of 1 to 5,000 characters |
| Description focused | Describes only this product; no links, comparisons, category paths, store policies or business history |
| Key details early | Most important information in the first 160 to 500 characters |
| AI-generated text labeled | AI-written titles and descriptions use structured_title and structured_description with the correct digital source type |
Templates and examples are in product titles and descriptions for Google Shopping.
Images
| Check | What good looks like |
|---|---|
| Size | At least 500 x 500 px (required for all products from January 31, 2027); about 1500 x 1500 or larger recommended; under 64 megapixels and 16 MB |
| Format | JPEG or WebP recommended; extension matches the real file type |
| No overlays | No calls to action, price or shipping text, watermarks, badges or added logos |
| No placeholders | No “coming soon” or “no image available” images, and no store logo in place of a product photo |
| Unique per variant | Each variant shows its own color or finish; one photo isn’t reused for distinct products |
| Framing | Product fills roughly 75% to 90% of the image; no borders |
| Additional images | Up to 10 additional images where useful, including lifestyle images in lifestyle_image_link |
| Crawlable URLs | robots.txt allows Googlebot and Googlebot-image; stable URLs without timestamps or session IDs |
| AI image metadata kept | Generative AI images keep their IPTC DigitalSourceType metadata |
Fixes for each image issue are in how to fix product image issues.
Price, availability and landing pages
These checks matter most, because Google compares them with your website and repeated mismatches can lead to account suspension.
| Check | What good looks like |
|---|---|
| Price matches page | Feed price equals the price in the page’s HTML and structured data, in the currency prominently displayed |
| Price in initial HTML | Price isn’t only injected by JavaScript after load |
| Sale prices handled | price holds the regular price, sale_price the sale price, with sale_price_effective_date; page shows both |
| No loyalty prices in sale_price | Member prices use loyalty_program instead |
| Availability matches page | In-stock products have an active buy button; out-of-stock products show sold out or a disabled button |
| Preorder and backorder dated | availability_date set and the expected date shown on the page |
| No out_of_stock to hide products | pause (up to 14 days) or excluded_destination used instead |
| Landing page loads | No 404s, server errors or more than two redirects; URL on the verified domain |
| Variant URLs distinct | Each variant’s link opens with that variant selected |
| Update timing | Feed updates are scheduled to match site changes; Merchant API used if values change more than once a day |
If any of these fail, use the guides to fix price mismatches and align website data and product feeds.
Identifiers and product details
| Check | What good looks like |
|---|---|
| GTIN where assigned | Manufacturer GTINs submitted for every product that has one |
| Brand correct | Real brand, not the supplier’s company name; store name for products you make with no official brand |
| MPN where no GTIN | Brand plus MPN for products without a GTIN |
| No invented identifiers | No made-up, guessed or copied GTINs; no internal SKUs in gtin |
| identifier_exists used correctly | false only for products that truly have no identifiers |
| condition | Set for used and refurbished products |
| Apparel attributes | color, size, age_group and gender on every apparel variant |
| Recommended detail | pattern, material, size_type and size_system where relevant |
| Multipacks and bundles | multipack and is_bundle used where they apply |
To fix identifier issues, see how to fix missing product identifiers.
Shipping and returns
| Check | What good looks like |
|---|---|
| Shipping for every target country | Account shipping policy or shipping attribute covers each country where it’s required |
| Currency matches | Each country has at least one shipping service in the same currency as the product prices |
| Costs close to website | Shipping costs as close as possible to checkout; overestimate rather than underestimate if needed |
| Labels used deliberately | shipping_label and return_policy_label only where products need different policies |
| Return policy configured | Return policy set in Merchant Center and consistent with the policy on your site |
Feed QA: a routine for every change
Most feed problems start with a change somewhere else: a theme update, a new app, a price import, a new product range. A short QA routine after each change catches issues before Google does.
When to run it
- After changing your theme, product templates or structured data.
- After installing, updating or replacing a feed app or plugin.
- Before and after a sale or bulk price change.
- After importing new products or a new supplier catalog.
- After adding a target country, currency or language.
- After changing attribute rules or supplemental sources.
The routine
- Pick a fixed sample of products (practitioner tip: 10 to 20, including a variant product, a sale item, an out-of-stock item and a recent addition).
- For each, compare id, title, price, sale price, availability, image and link in Merchant Center with the live landing page.
- Check the page’s structured data carries the same price, currency and availability, in the initial HTML.
- For attribute rules, use Test rules and the draft preview before applying, then reprocess the data source.
- Check Needs attention over the next few days for new issues, and use View history to see when a status changed.
- Note what changed and when in a change log.
Suggested attribute values in Needs attention should be checked against your landing page before you accept them. Google notes that accepted fixes override later changes from other methods, such as file uploads.
Ongoing monitoring
Practitioner suggestion for a simple cadence:
| How often | What to check |
|---|---|
| Weekly | Needs attention summary cards, new issues, products with high click potential that are disapproved or limited |
| Monthly | Analytics > Products: impressions, clicks and click-through rate by product, brand and category; products with zero impressions |
| Quarterly | Full run through this checklist, including a fresh sample of landing pages |
Zero impressions can mean a product isn’t approved yet, or simply low traffic, according to Google’s performance documentation.
When to get help
If the checklist turns up problems you can’t trace to a source system, or the same issues return after each fix, an outside review can save time. Our product feed optimization service runs this kind of audit and fixes issues at the source. For broader account problems, see our disapproval service.
Frequently asked questions
What should I check first when optimizing a product feed?
Start with issues that can stop products or put the account at risk: price and availability matching the landing page, landing pages that load, and required attributes. Then improve titles, identifiers and product detail.
How do I QA a product feed?
Compare a fixed sample of products in Merchant Center with their live landing pages and structured data after every change, test attribute rules before applying them, and watch Needs attention for new issues.
How many characters should a Google Shopping title be?
Titles can be 1 to 150 characters. Google says users usually notice the first 70 characters or fewer, so put the most important details first.
Do I need GTINs for every product?
Only where the manufacturer assigned one. Products with an assigned GTIN submitted without it may have limited visibility; products without one use brand plus MPN, or identifier_exists = false if they have no identifiers.
Can I accept Google’s suggested attribute values?
You can, but check them against your landing page first. Accepted fixes override later changes from other methods such as file uploads.
Want a second pair of eyes on your feed?
We run a full feed audit against your website and Google’s requirements, then fix the root causes we find.
Sources
- Google Merchant Center Help — The Needs attention tab
- Google Merchant Center Help — Create a product data source
- Google Merchant Center Help — Feed labels
- Google Merchant Center Help — ID [id]
- Google Merchant Center Help — Item group ID [item_group_id]
- Google Merchant Center Help — Title [title] and structured title
- Google Merchant Center Help — Description [description]
- Google Merchant Center Help — Image link [image_link]
- Google Merchant Center Help — How to fix: Mismatched product price
- Google Merchant Center Help — Sale price [sale_price]
- Google Merchant Center Help — Availability [availability]
- Google Merchant Center Help — How to fix: Product page unavailable
- Google Merchant Center Help — Automatic item updates
- Google Merchant Center Help — About unique product identifiers
- Google Merchant Center Help — Free listings for products
- Google Merchant Center Help — Set up shipping settings for an entire account
- Google Merchant Center Help — Set up return policies
- Google Merchant Center Help — Set up your attribute rules
- Google Merchant Center Help — Track your product performance
- Google Search Central — Merchant listing structured data
Last reviewed October 10, 2026 against the official documentation listed above. Google changes Merchant Center features and policies regularly — always confirm details in your own account.
