# Google Shopping feed quality for product ads

Titles, GTINs, availability and image rules that keep Shopping and PMax from disapproving half the catalogue.

- Date: 2026-08-09
- Category: SEM

# Google Shopping feed quality for product ads

A Google Shopping feed is the catalogue Google actually advertises. If titles, GTINs, availability and images are wrong, Shopping and Performance Max will disapprove half the range or show the wrong SKU next to a query that deserved a sale. I am a Gold Coast web developer with 18 years of storefront work. I have shipped Magento, Shopify and Laravel catalogues where the on-site merchandising looked finished and the feed still read like a stock export. In 2026 product ads still start in Merchant Center, not in a mood board.

This note is the production view: what I check before anyone increases Shopping spend. It is not a walkthrough of every optional attribute in the spec. Google's [Merchant Center product data](https://support.google.com/merchants/answer/7439058) is the source of truth for fields. My job is to make the store able to fill those fields without a weekly spreadsheet hero.

## Why Google Shopping feed quality still decides who sees the product

Google Shopping feed quality still decides who sees the product because the ad is the feed row. There is no separate "creative brief" for a Shopping card. Title, image, price and availability are the ad. If the title is an internal SKU, the query match is luck. If the image is a 200-pixel swatch on a grey background that looked fine in a PIM, the card loses next to a competitor who shot the product on white at 1200 pixels.

I watch two failure modes on almost every catalogue.

The first is disapproval. Missing GTIN where Google expects one, price mismatch between landing page and feed, availability that says in stock while the PDP says sold out. Merchant Center will tell you. People still ship the feed from an app default and never open the diagnostics.

The second is approval without quality. Every item is approved. None of them match how a person searches. Bike catalogues are the obvious example: model year, geometry, wheel size and colour live in spec tables on the site and never reach `title` or `additional_image_link`. Furniture catalogues hide dimensions. Fashion hides fabric. Google cannot invent the words you left in a metafield.

Schema on the PDP and the feed should not contradict each other. I link that work in [schema markup for product and article pages](https://alanvo.com/blog/schema-markup-product-pages/). Rich results and Shopping ads are different systems. Both will punish a price that does not match. Fix the source, not the symptom.

![Google Shopping feed dashboard on a laptop in an office](../../images/blog/google-shopping-feed-quality-1.jpg)

Performance Max eats the same feed. If you are arguing [Performance Max vs Search campaigns for stores](https://alanvo.com/blog/performance-max-vs-search/) with a dirty feed, you are arguing about budget on top of a broken product graph. Clean the graph first.

## How a Google Shopping feed is built and validated

A Google Shopping feed is built from the products you will sell, not from every draft in the admin. I want a primary feed that contains buyable SKUs with a stable `id`. Variants need a consistent story: either item-group grouping with colour and size attributes, or separate rows that still share a parent in `item_group_id`. Mixing both in one export is how you get duplicate products and random images.

The required core is still the core. `id`, `title`, `description`, `link`, `image_link`, `availability`, `price`, `brand`, and identifier fields (GTIN, MPN, brand combinations as Google requires for the category). Country and language must match the Merchant Center destination. Currency must match the landing page. Tax and shipping can live in account settings or in the feed. They must not surprise the shopper at checkout with a jump that makes the ad look like bait.

Titles need a pattern, not a novel. I use: brand, product type, key attribute, colour or size if it is a distinct SKU people search. "Ferm Living - ceramic vase - ribbed - ochre" is usable. "Vase 3" is not. Do not keyword-stuff five synonyms. Google has read that trick. Do put the words the PDP already uses in H1 and in spec.

Descriptions can be shorter than the PDP. They should still contain materials, dimensions and the use case. HTML in descriptions is a mess I strip. Plain text with line breaks is enough.

Images: main image on a simple background for most verticals. Additional images for context, on-body, or room. No watermarks, no promo badges that go stale, no lifestyle-only main image for a SKU that is a spare part. Resolution has to survive a Shopping card and a zoom. If the theme serves AVIF on the site, the feed still needs a JPEG or PNG URL that Merchant Center can fetch. Do not point `image_link` at a CDN URL that 403s Googlebot.

Availability must be a live signal. A nightly CSV that says in stock while the warehouse sold out at noon is how you buy ads for empty carts. Shopify and Magento both can push inventory more often than once a day. Use that. `availability_date` for preorder is allowed. Pretending preorder is in stock is how you get refunds and disapproval.

![Shopping ads style product photos on a table](../../images/blog/google-shopping-feed-quality-2.jpg)

GTINs: if the product has one, send it. If it is a custom bundle you made in the warehouse, do not invent a competitor's barcode. Google's identifier rules are picky because the Shopping graph is picky. MPN plus brand is the fallback for manufacturer parts. Handmade unique items have a path. Fake GTINs do not.

Validation is not a feeling. After each feed change I read Merchant Center product issues, item status, and a sample of landing pages. I click the `link` on twenty random SKUs. I check that the price on the page equals the feed, including sale price if `sale_price` is set. I check that the image is the same product. Apps that rewrite titles for "SEO" often rewrite them into keyword soup that no longer matches the H1. Pick one title strategy and keep it.

On large catalogues I also care about crawl. Magento faceted URLs should not be the `link`. The canonical PDP or a clean collection URL is the destination. Laravel catalogues with configurators, like the [Orbea storefront work](https://alanvo.com/work/orbea/), need a feed URL that lands on a buyable configuration or a model page that can still add to cart, not a brochure chapter.

## Production checklist for titles, GTINs and availability

A Google Shopping feed is ready for spend when these items are true on a weekday, not only after a heroic export.

1. Primary feed fetches on a schedule Google accepts. Failed fetches are an outage, not a nuisance.
2. Every row has a stable `id`. Do not recycle IDs from deleted SKUs.
3. Titles follow a written pattern. Merchandising owns the pattern. Developers own the template.
4. `link` returns 200, is canonical, and shows the same product, price and currency.
5. `image_link` is fetchable, large enough, and is the product. Additional images are extra, not a replacement for a bad main.
6. `availability` matches the PDP at the time of fetch. Out of stock is out of stock.
7. `price` and `sale_price` match on-page. Hidden extra fees that appear only in checkout will get you flagged.
8. GTINs or allowed identifier pairs are present where required. No borrowed barcodes.
9. Shipping and tax settings in Merchant Center match what checkout charges for the destination country.
10. Disapproved items have an owner. Someone clears issues weekly. A feed with 40 percent disapproval is not a Shopping strategy.

![Landing page on a phone next to a notebook](../../images/blog/google-shopping-feed-quality-3.jpg)

I add a local check: five queries a customer would actually type, then I search Google and see which of our SKUs appear. If none do, the titles are wrong even if Merchant Center is green.

## What breaks half the catalogue overnight

A theme or app update that changes PDP URLs without redirects breaks `link`. PMax keeps spending on 404s until you notice. A currency app that shows USD on the page while the feed is AUD breaks price. A wholesale login that changes price for tagged customers breaks the comparison if Googlebot sees a different number than a shopper. Cache that serves an old price on the PDP while the feed updated is the inverse.

Inventory buffers break trust. Marketing wants everything "in stock" for the campaign. Warehouse has two units. Google buys you forty clicks. You refund. Then you set availability to out of stock too late and the account looks volatile.

Variant image mixups are the fashion classic. Colour is red. Image is the navy sample because the PIM maps images at parent level. Shoppers bounce. Return rate is not a feed metric until finance asks.

GTIN conflicts across brands in a marketplace-style catalogue will cluster the wrong products. If you sell multiple brands, do not let a default MPN of "1234" collide.

Free-shipping badges in the image file go stale when the promo ends. Put shipping in account settings, not in pixels you forget to replace.

I have seen Shopify apps append "buy online" to every title. That wastes characters and looks spammy. I have seen Magento exports dump HTML entities into descriptions until Google truncates into nonsense. Strip and validate.

## How to measure whether the feed is earning ads

Measure disapproval rate, impressions, click share and conversion value by product type, not only by campaign. A beautiful ROAS on twenty SKUs while 800 SKUs sit disapproved is a feed problem with a media costume.

Compare top clicked products in Merchant Center to top sellers on the site. If they never overlap, titles and bids are chasing the wrong graph, or the landing page cannot convert the query. That is a [landing page](https://alanvo.com/blog/landing-pages-google-ads/) problem as much as a feed problem.

Price competitiveness reports are directional. They are not a reason to race to the bottom without margin. I would rather exclude a SKU than advertise a loss.

![Credit card and laptop for conversion tracking work](../../images/blog/google-shopping-feed-quality-4.jpg)

After a title rewrite, wait. Shopping has a memory. You will not see the new pattern on the same afternoon. Keep a changelog of feed template releases so you can correlate.

On [Ferm Living](https://alanvo.com/work/ferm-living/) the Shopify catalogue has to hold photography and still merchandising a full interiors range. Feed images that crop a sofa into an unreadable thumbnail fight that work. On [Orbea](https://alanvo.com/work/orbea/) the Laravel catalogue and custom-build path only help Shopping if the advertised URL can continue the build, not dump the rider on a generic bikes homepage.

## Related work on this site

[Orbea](https://alanvo.com/work/orbea/) is Laravel for a deep bike catalogue and MyO custom builds. That is the kind of product graph a Shopping feed has to respect: model, options, buyable outcome. [Ferm Living](https://alanvo.com/work/ferm-living/) is a Shopify interiors webshop where photography is the product. A feed that serves tiny cutouts will lose the card even if GTINs are perfect. Google Shopping feed quality is the ads layer on top of that merchandising, not a separate universe.

## FAQ

### How often should I refresh a Google Shopping feed?

As often as inventory and price change in a way shoppers would notice. Daily is a minimum for most stores. Multiple times per day is normal when stock moves fast. A weekly CSV is how you advertise ghosts.

### Does a Google Shopping feed replace on-site SEO?

No. The feed is for product ads and Merchant listings. On-site titles, schema and internal links still have to work. They should agree with the feed so you are not telling Google two different products.

### What is the fastest Google Shopping feed fix if ads are disapproved?

Open Merchant Center item issues and fix the clustered cause: identifier, price mismatch, or availability. Do not rewrite every title while 60 percent of SKUs fail a required field. Approval first, quality second, spend third.

### Can I use one Google Shopping feed for every country?

You can try a single multi-country setup if prices, languages and shipping are honest. Most catalogues I see need separate destinations or supplemental feeds when tax, size systems and copy diverge. A translated title that still links to an English PDP is a bounce machine.


![Marketing meeting around laptops](../../images/blog/google-shopping-feed-quality-5.jpg)


HTML version: https://alanvo.com/blog/google-shopping-feed-quality/
