Reviewed June 2026 for PrestaShop 1.6.1 through 9.x against the current Merchant Center (Next) interface. Free listings, the data-source setup flow, and the required-where-they-apply identifier rules (GTIN/brand/MPN) are current; "data sources" replaced the old "Products → Feeds" menu, so match by purpose if a path has moved.
Search "buy blue leather wallet" on Google and the first thing you see isn't a list of blue links, it's a row of product photos with prices, star ratings and store names. Those are Google Shopping results, and getting your PrestaShop products into them is one of the few marketing moves that puts your actual product, at its actual price, in front of someone who is already in buying mode. The mechanism behind every one of those tiles is Google Merchant Center: the place where Google ingests your product data, checks it against its rules, and decides which of your items are eligible to appear. This guide is about exactly that, getting your products in, from a blank Merchant Center account to live, approved listings. It is not about squeezing more clicks out of a feed that's already running (that's feed optimization) or rescuing products Google has rejected (that's fixing disapproved products). It's the on-ramp.
Where these listings actually show up, and why "in" is worth the effort
Once Google accepts your products, they become eligible across Google surfaces such as the product carousel at the top of regular Search results for shopping queries, the dedicated Shopping tab, annotations in Google Images, and other Google placements where eligible. Since 2020, this includes free listings. You do not have to spend a cent on ads to appear. So what does that mean for a store owner? Getting set up in Merchant Center is a one-time job that can earn ongoing, no-CPC visibility for as long as your feed stays valid. Paid Shopping ads sit on top of that, but once your products are approved they become eligible for free listings, eligibility, not a guarantee that every item appears. The catch is the word "valid": Google will only list products whose data is complete, consistent and policy-clean. That validation step is where most PrestaShop merchants get stuck, and it's where the platform-specific work lives.
Step 1, Create and verify your Merchant Center account
Go to merchants.google.com and create an account with your business name, country and address. The gate here is website verification: Google has to confirm you own the domain you're submitting products from. If your store is already in Google Search Console under the same Google account, Merchant Center will usually offer to reuse that verification in one click, the fastest path. If not, you verify the same way you would Search Console: an HTML file upload, an HTML meta tag, or your DNS / Google Analytics / Tag Manager connection.
On PrestaShop, the meta-tag method is the cleanest because you never touch the theme files. If you run our tracking and tag setup with Marketing Revolution, the verification meta tag (and your GA4 / Google Ads tags) drop into the <head> from the back office rather than via a child-theme edit that an upgrade could wipe out. Verify once and the rest of the process opens up.
Step 2. Turn your PrestaShop catalogue into a feed Google accepts
This is the heart of "getting your products in," and it's the step generic guides hand-wave. A Merchant Center product feed is a structured file. A common, robust format is an XML feed using the g: namespace (Google also accepts text/TSV and the Content/Merchant API). Where every product is one <item> with a fixed set of tagged fields. The required core fields for a physical product, plus the identifiers Google expects where they apply, are:
| Google field | What it is | Where it lives in PrestaShop |
|---|---|---|
| g:id | Stable unique identifier | Product ID (and the combination ID for variants) |
| g:title | Product name, ≤150 chars | Product → name (per language) |
| g:description | Description, ≤5,000 chars | Short or full description |
| g:link | Live product-page URL | The product's friendly URL |
| g:image_link | Main product image | Cover image URL |
| g:price | Price with currency | Price. Must match the page exactly |
| g:availability | in_stock / out_of_stock / preorder | Derived from stock quantity |
| g:condition | new / refurbished / used (required where it applies) | Product → Condition |
On top of those core fields, Google's product identifiers are required where they apply, submit them so your items match cleanly:
| Google field | What it is | When to submit it |
|---|---|---|
| g:brand | Manufacturer / brand | Submit for most new products (Product → Manufacturer) |
| g:gtin | EAN/UPC barcode | Required whenever the product has a valid GTIN (Product → EAN-13 field) |
| g:mpn | Manufacturer part number | Submit together with brand when the product has no GTIN |
| g:identifier_exists | Set to no to signal a product has no official identifiers | Only for genuinely identifier-free products (e.g. custom or handmade) |
Put together, one approved product looks like this in the XML, and this is exactly the shape a feed module assembles for every item in your catalogue, so you never write it by hand:
<item>
<g:id>1842</g:id>
<g:title>Blue Leather Bifold Wallet, RFID-Blocking</g:title>
<g:description>Full-grain blue leather bifold wallet with RFID-blocking lining...</g:description>
<g:link>https://example.com/accessories/blue-leather-wallet</g:link>
<g:image_link>https://example.com/img/p/blue-leather-wallet.jpg</g:image_link>
<g:price>49.00 EUR</g:price>
<g:availability>in_stock</g:availability>
<g:condition>new</g:condition>
<g:brand>Hartwell</g:brand>
<g:gtin>5012345678900</g:gtin>
</item>
The reason this is harder than it looks on PrestaShop is that no native back-office button exports this file. You either build a custom script that queries the product, stock, image, manufacturer and URL tables and writes valid XML, or you use a feed module. The fields also have to be per shop, per language and per currency. A German feed needs German titles and EUR prices, and a multistore needs a separate feed per store URL, and the price has to match the product page to the cent, including how tax is displayed, or Google flags a mismatch.
Doing it cleanly with MPR Google Merchant
This mapping problem is exactly what our MPR Google Merchant module exists to remove. It generates the Google Merchant XML feed straight from your catalogue with the field mapping already done: {ean13} goes into g:gtin, {mpn} into g:mpn, the cover image and gallery into g:image_link and g:additional_image_link, sale prices into g:sale_price, and product combinations get a shared g:item_group_id so Google treats your size/colour variants as one product family. So what does that buy you? You skip the part where merchants typically hire a developer or wrestle a spreadsheet export. The feed is configured from a back-office controller (AdminMPRGoogleMerchantFeeds), you get a separate feed per shop, language and currency out of the box, and a built-in cron regenerates the file on a schedule so stock and price changes flow through without you remembering to re-upload. The XML item template is editable, so when you later want to add fields like g:product_type or shipping, you adjust the template rather than rewrite an export. It supports PrestaShop from 1.6.1 up through the current PrestaShop line, so it works on the version you're actually running.
Step 3. Get the feed into Merchant Center: hosted file vs Merchant API
There are two ways your data reaches Google, and choosing the right one matters for how fresh your listings stay.
| Scheduled feed (hosted URL) | Merchant Products API | |
|---|---|---|
| How it works | You give Merchant Center a public URL to your XML file; Google fetches it on a schedule | Your store pushes products to Google programmatically via a service account |
| Freshness | As fresh as your last regeneration + Google's fetch interval | Near-real-time pushes for price/stock changes |
| Setup effort | Low, paste a URL | Higher, Merchant ID + service-account JSON credentials |
| Best when… | Most stores; prices and stock change a few times a day | High-velocity catalogues where stale stock loses sales or causes disapprovals |
For the vast majority of PrestaShop stores, the scheduled hosted feed is the right answer: point Merchant Center at the feed URL, set a daily fetch, done. MPR Google Merchant supports both. It serves the hosted XML and can sync to the Merchant Products API when you want push-based freshness (you supply a Merchant ID and a service-account JSON path per feed). Start with the hosted feed; move to API sync only if stale stock is actively costing you.
Step 4. Submit, let Google validate, and go live

Add the feed in Merchant Center under Settings → Data sources (called "Products → Feeds" in the old interface; now "data sources" in Merchant Center Next), or connect the API source, and Google validates every item against its requirements. Expect a first pass that approves most products and flags some, that's normal, not failure. The usual first-submission snags are a price mismatch between feed and page (almost always a tax-display difference), missing shipping configuration (set it once in Merchant Center under your shipping settings, or include shipping in the feed), and missing or inconsistent identifiers (brand, GTIN where assigned, MPN where applicable, or identifier_exists=no only for products without official identifiers). When the Diagnostics tab lights up red, don't guess, we catalogue the exact errors and their PrestaShop fixes in fixing Merchant feed errors. Once items show Approved, they're automatically eligible for free Shopping listings; there's no separate "publish" button to find.
Free listings now, paid Shopping when you're ready
Approved products appear in free listings with no further action, your zero-cost baseline. When you want to push specific products higher, you connect Merchant Center to a Google Ads account and run paid Shopping campaigns, which place your product tiles above the free results. Shopping ads tend to convert well because the shopper has already seen the image and price before clicking. The click is pre-qualified. But that's a separate decision with its own budget and bidding logic, and it's worth getting your free listings clean first. When you're ready to spend, the modern way Google serves Shopping inventory is through Performance Max. We cover what that means for a PrestaShop catalogue in the complete Performance Max guide, and how Shopping sits alongside text ads in Search ads for e-commerce. New to paid traffic entirely? Start with your first Google Ads campaign without wasting money.
Keep the feed alive, it's not set-and-forget
Getting in is the milestone; staying in is the maintenance. A feed that was valid in January can rot by March as prices change, products go out of stock, and Google updates its policies. A short, durable routine keeps your products listed:
- Regenerate the feed automatically. A daily cron-driven refresh (built into MPR Google Merchant) keeps prices and stock in sync so Google never fetches a stale file. This is the single biggest source of avoidable disapprovals.
- Check Diagnostics weekly. New disapprovals appear quietly; catch them before they thin out your visibility.
- Watch your competitive price. Google compares your price to others selling the same GTIN, if you're well above, clicks stay low no matter how clean the listing.
- Then optimize for clicks. Approval is the floor, not the ceiling. Once you're stably listed, sharper titles, better images and custom labels are where the real performance gains are, all covered in the PrestaShop feed optimization guide.
Frequently asked questions
How do I verify my PrestaShop store without editing theme files?
Two clean routes. If your store is already in Google Search Console under the same Google account, Merchant Center usually offers to reuse that verification in one click. Otherwise use the HTML meta-tag method and drop the tag into your <head> from a back-office tag manager rather than a child-theme edit an upgrade could wipe out. The DNS and Tag Manager methods also work and never touch your theme.
Does PrestaShop have a built-in button to export a Merchant Center feed?
No, there's no native back-office export that produces a valid Google Merchant XML file. You either write a custom script that queries the product, stock, image, manufacturer and URL tables and emits the g:-namespaced XML, or you use a feed module that does the mapping and scheduling for you. The fields also have to be correct per shop, per language and per currency, which is the part a hand-rolled export usually gets wrong.
Should I start with a hosted feed URL or the Merchant Products API?
Start with the hosted feed for almost every store: paste a public feed URL into Merchant Center, set a daily fetch, done. The API only earns its extra setup (a Merchant ID and service-account credentials) when your stock moves so fast that the gap between fetches actually loses sales or causes disapprovals. Move to API sync if and when stale stock is demonstrably costing you, not before.
My products are "Approved". Do I have to do anything to appear in free listings?
No. Once an item shows Approved it's automatically eligible for free Shopping listings, there's no separate publish button. "Eligible" isn't a guarantee every item appears every time; ranking still depends on relevance and data quality. Paid Shopping campaigns sit on top of that baseline when you want to push specific products higher, but the free visibility comes with approval alone.
Why do some of my products get rejected on the first submission?
It's normal for a first pass to approve most and flag some. The usual culprits are a price mismatch between feed and page (almost always a tax-display difference), missing shipping configuration, and missing or inconsistent identifiers (brand, GTIN where assigned, MPN where applicable). The Diagnostics tab names each one; the exact PrestaShop fixes are in fixing Merchant feed errors. Don't guess, read the specific error.
For a PrestaShop store selling physical products, getting into Google Shopping is one of the highest-return setup tasks you'll do, free listings earn traffic indefinitely, and a clean feed is the foundation everything paid is built on. The hard part was never Google's side; it's translating your PrestaShop catalogue into the exact structured data Google demands, per shop, per language, per currency, and keeping it current. Do that once, correctly, and the on-ramp is open.
Comments
Leave a comment
Share a question, an installation detail, or feedback that could help another reader.