Disapproved products in Google Merchant Center: the most common causes and how to fix them in PrestaShop

5 min read Other languages: PL FR

A “disapproved” product in Google Merchant Center will not show in ads or free Shopping listings until you fix its data. In PrestaShop shops, most disapprovals come down to a handful of recurring causes: a feed price that differs from the page, mismatched availability, a missing GTIN, a bad image, or a product page Googlebot cannot open. Below are the most common issues, where they typically come from in PrestaShop, and how to fix them.

First: where to look and how to read the issues

In Merchant Center, go to Products › “Needs attention”. Issues are grouped by type, and you can download the affected products as a CSV. Work in groups, not product by product: one shop configuration error can disapprove hundreds of items at once. After a fix, you can request a website check – otherwise Google re-checks during its next review.

One important rule: do not change product IDs in the feed. For Google, a new id means a new product that has to be reviewed from scratch – which can take up to 3 business days.

The most common causes and their source in PrestaShop

IssueTypical cause in PrestaShopWhat to do
Mismatched price (landing page vs product data)The feed sends prices excl. tax while the page shows incl. tax; customer-group prices; a discount without dates in the feed; a daily feed with frequent price changes; combination prices swapped by JavaScriptA feed with tax-inclusive prices for the target country, a refresh schedule faster than price changes, structured-data price matching the default combination
Mismatched availabilityThe default combination is sold out while others are in stock; back-orders allowed but the feed sends “out of stock”Set an in-stock default combination; send stock per combination
Missing or incorrect GTINThe barcode is on the product but the feed sends combinations; a SKU pasted into the EAN fieldGuide to missing GTINs
Placeholder / not allowed imageA product without images – the feed sends the theme’s “no picture” image; a shop logo or promo text on the photoAdd a real photo or exclude the product from the feed
Image too smallThe feed sends a small thumbnail format (e.g. home_default) or the original is smallHow to find images under 500 × 500 px
Landing page not workingProduct disabled in the shop but still in the feed (404 or redirect); maintenance mode; a firewall or bot protection blocking Googlebot; robots.txt blocking URLsDisable products in the feed together with the shop; check server logs for Googlebot
Missing shipping costsShipping is not set in Merchant Center for the target country, or the feed sends incomplete dataSet shipping in Merchant Center or in the feed

Price: the most common problem

Googlebot fetches the product page and compares the price with the feed. It reads the HTML returned by the server – prices inserted later by JavaScript can cause errors. In PrestaShop, check in this order:

  1. Tax. In the EU, the feed price must include VAT. Many modules have a separate “prices with tax” setting.
  2. Customer groups. Googlebot is a guest. If guests see different prices than logged-in customers, the feed must send guest prices.
  3. Specific prices. A discount in the shop without sale_price in the feed, or with mismatched dates or time zone.
  4. Combinations. The product URL in the feed should point to the specific combination at its price, not to the default one.
  5. Cache. A full-page cache or CDN can show Googlebot old prices after a change.

Turning on automatic item updates in Merchant Center also helps – Google then corrects price and availability from the page’s structured data. It is a safety net, not a replacement for an up-to-date feed.

Availability: the default combination

A common and non-obvious case: a product has several sizes, the default one is sold out and the others are in stock. The product page opens with “out of stock”, so Google sees a mismatch. This query lists such products:

SELECT ps.id_product, pl.name, ps.cache_default_attribute,
       sa.quantity AS default_stock
FROM ps_product_shop ps
JOIN ps_product_lang pl
  ON pl.id_product = ps.id_product AND pl.id_lang = 1 AND pl.id_shop = ps.id_shop
JOIN ps_stock_available sa
  ON sa.id_product = ps.id_product
 AND sa.id_product_attribute = ps.cache_default_attribute
WHERE ps.id_shop = 1 AND ps.active = 1
  AND ps.cache_default_attribute > 0
  AND sa.quantity <= 0
  AND EXISTS (SELECT 1 FROM ps_stock_available s2
              WHERE s2.id_product = ps.id_product
                AND s2.id_product_attribute > 0 AND s2.quantity > 0);

Replace the ps_ prefix and id_lang with yours. For each result, set an in-stock combination as the default.

Account-level warnings

Worse than single disapprovals is a suspension of the whole account, for example for “misrepresentation”. Google expects a shop to clearly show company details and contact information, shipping costs, return and refund policies, and secure payment. In PrestaShop these are usually CMS pages and the footer. If any of them is missing or hard to find, add it before requesting a review.

How to stop doing this every week

Fixing disapprovals one by one never ends: new products and imports bring back the same errors. A check before sending works better: a product enters the feed only once it has an image, a GTIN (or brand and MPN), a price, stock and a description.

A quality check before Merchant Center

Product Data Guardian scores every product and combination from 0 to 100 using your rules – GTIN, brand, images, description, stock, price – and provides Google Shopping and Meta feeds with a quality threshold. Products with gaps do not reach Merchant Center until they are fixed, so there are simply fewer disapprovals.

See Product Data Guardian

Sources

← All articles

Contact form

Regarding module: Product Data Guardian – Catalog Quality Score & Ad-Ready Feeds