Setting up a Google Merchant Center feed on PrestaShop
A Google Merchant Center feed is a structured file, XML, CSV/TSV or a direct call to the Content for Shopping API, listing every product with the attributes Google expects for Shopping. On PrestaShop, an official module built with Google can generate it, but the most frequent rejection cause I fix is a feed set up once and never resynchronised with the shop’s real stock and prices.
The situations I handle
- Products disapproved in Merchant Center with no obvious issue on the product page
- A feed generated when the shop launched and never revisited since
- The price shown on the site differs from the price sent in the feed
- A product out of stock on the site but still "in stock" in Merchant Center
- Uncertainty over which attributes are actually mandatory before building a custom feed
- Migrating to PrestaShop 9 with doubts about which export module to use
How I set up the feed on PrestaShop
-
Using the official module
PrestaShop offers a module built with Google ("PrestaShop Marketing with Google"), bundled into the PrestaShop Essentials suite and compatible with recent PrestaShop versions including 9. I start from this module rather than a hand-built feed whenever the shop is a standard case.
-
Checking the core attributes
Before publishing, I check every product sends a stable id (in practice the reference or SKU), a title, a description, the link to the product page, an image_link, price with the right currency, availability, and a recognised product identifier (GTIN, or brand + MPN). If the shop uses combinations (the product_attribute table), each combination goes out as its own item, with its own id, price and availability, the items of a given product being tied together by item_group_id.
-
Handling products with no standard identifier
For a product with genuinely no GTIN and no listed brand, I set identifier_exists=no rather than leaving the field blank or making up a code: an invalid GTIN is one of the most common disapproval reasons.
-
Setting the update frequency
I schedule a daily feed refresh, especially for price and availability. Google requires a refresh at least every 30 days but explicitly recommends a daily cadence to avoid a gap between the feed and the shop.
-
Checking after publishing
Once the feed is submitted, I check each product’s status in Merchant Center (approved, pending, disapproved) and monitor rejection reasons in the days following the first sync.
The stale feed trap
The most common issue I fix isn’t a badly filled attribute but a feed that no longer moves: generated once at launch, it keeps announcing a price or availability that no longer matches the site weeks or months later.
Google checks the feed against the product page when it crawls it: a price or availability gap triggers a disapproval, not just a warning. A properly scheduled daily refresh avoids this, provided the job that triggers it actually runs, which I always verify rather than assume just because it was configured once.
<item>
<g:id>REF-0001</g:id>
<g:title>Exemple de produit</g:title>
<g:price>29.90 EUR</g:price>
<g:availability>in_stock</g:availability>
<g:identifier_exists>no</g:identifier_exists>
</item>
Related pages
-
Google Merchant Center feed from WooCommerce
The same attributes on WooCommerce, where variations are split into separate items tied together by item_group_id, just like PrestaShop combinations.
-
Fixing Merchant Center errors
The ordered method for reading a disapproval reason and fixing it.
-
Sale prices, shipping and availability
The three attributes most often wrong in a feed.
-
Connecting a product feed
The general guide to setting up a feed, across every channel.
Describe your need in one minute
A few targeted questions so I can reply with an estimate rather than another questionnaire.