Magento (now Adobe Commerce) and PrestaShop are the two platforms visitors most often name when they paste a store address into our feed checker and ask why nothing comes back. The answer is the same for both: the export their admin offers is a spreadsheet of your catalogue, not a Google Shopping feed. Here is why it fails in Merchant Center, how to get a real feed URL on each platform, and the mapping traps specific to Magento and to PrestaShop.
Why the native export is not a feed
Magento / Adobe Commerce. System → Data Transfer → Export → Products writes a CSV to the server's var/export folder, on demand, as a background job (Adobe's export documentation). Look at the columns in the product attributes reference and two things Google requires are missing: the file carries url_key, the last segment of the product URL, never the full address, and image columns such as base_image hold relative paths like /m/b/mb01-blue-0.jpg, not URLs. There is also no barcode attribute at all unless you created one. Merchant Center rejects every row for a missing link before it gets to anything else.
PrestaShop. The export on the product list gives you the columns of that list — ID, image, name, reference, category, price, quantity, status — which is fine for stock-taking and useless as a feed: no product URL, no description, no barcode, one row per product rather than per combination. And in both cases the file is a download, so even a perfect one goes stale the moment a price changes; Merchant Center wants a URL it can fetch every day.
What Google needs instead
One item per sellable variant with, at minimum, id, title, description, link, image_link, price, availability and identifiers — brand plus gtin, or identifier_exists = false for products that genuinely have none — grouped by item_group_id when they are variants of one product. The full list is Google's product data specification; if the vocabulary is new, what a product feed is covers it in five minutes. Everything below is about producing that file automatically from each platform.
Magento / Adobe Commerce: getting a feed URL
Adobe once shipped its own connector, the Google Shopping ads Channel (announced in 2019), and withdrew it in 2020; what core still ships under Google site tools is Analytics and Tag Manager, not a feed. So the route is a feed extension from the Commerce Marketplace (search for “Google Shopping feed”): it renders Google-format XML to a URL on your own domain and regenerates it on cron. Any of them will do; what decides approval is the mapping you set inside it.
Link. Map the product URL as base URL + url_key + your URL suffix (usually .html), per store view. A feed built from the default store view but submitted for another country's Merchant Center target points shoppers at the wrong language and currency, and Google notices.
Variants. A configurable product is a parent with simple children. Export the children as items — they carry the real SKU, price, stock and size or colour — and put the parent's SKU in item_group_id. Exporting only the configurable parent loses every variant from Shopping; exporting children without the group shows them as unrelated duplicates.
Barcodes. Magento has no GTIN attribute by default. Create one (attribute code gtin or ean, scope global, applied to simple products), fill it, and map it to gtin. Where a product truly has none, map identifier_exists to false instead of leaving the field empty — the GTIN guide explains why an empty field costs you performance and a declared absence does not.
Prices and tax. Magento stores price and a special price with from/to dates; map them to price and sale_price respectively, never the special price into price. Then check price display settings: if the catalogue displays prices including tax, the feed must carry tax-inclusive values too, because Google compares the feed with what the page shows. A feed exported excluding tax against a page that includes it is the classic price-mismatch disapproval.
Stock and images. Availability comes from is_in_stock and the salable quantity, not from qty alone — a product with stock reserved by open orders can show as in stock in the export and out of stock on the page. For images, map the base image and make sure the extension writes the full CDN or media URL; a relative path is a missing image to Google.
PrestaShop: getting a feed URL
PrestaShop offers two doors. PrestaShop Marketing, the official module, syncs the catalogue straight into Merchant Center over Google's API — no file, no URL, and therefore nothing you can reuse for Meta, Microsoft or a price comparator. If Google is the only channel you will ever need, it is the shortest path. Otherwise, install a Google Shopping feed module from the Addons marketplace that writes Google XML to a public URL on your domain, and connect that URL everywhere.
Identifiers are already there. PrestaShop's product sheet has fields for EAN-13 or JAN, UPC, ISBN and MPN, and each combination can carry its own — fill them on the combination, not just the parent, and map EAN/UPC/ISBN to gtin and MPN to mpn. This is the one place PrestaShop is ahead of Magento out of the box.
Combinations. Each combination is its own item with its own price impact, quantity and image; the product ID goes in item_group_id. A module that exports one row per product collapses every size and colour into a single listing that is out of stock as soon as one variant is.
Tax-included prices. The product sheet shows both Price – tax excluded and Price – tax included; shoppers in the EU see the second, so the feed must carry the second. Specific prices (catalogue price rules) belong in sale_price, with the regular price left in price.
Out-of-stock behaviour. Behavior when out of stock: Allow orders maps to backorder; Deny orders with zero quantity maps to out_of_stock. Feeds that write “in stock” for anything with the product enabled are a suspension signal the moment a shopper cannot buy.
Languages and shops. Friendly URLs, names and descriptions are per language, and with multistore per shop as well. Generate one feed per language and shop you submit, each with its own links, and submit it to the matching Merchant Center target country.
Connect it to Merchant Center
In Merchant Center: Products → Add products → Add products from a file, paste the feed URL, and set a daily fetch. Fix whatever Products → Diagnostics flags after the first run — with these two platforms it is almost always one of the four mappings above: tax, variants, barcodes, links. Before you paste it there, paste it into the free feed check: it reads the Google XML these extensions produce and lists the same problems with a fix for each, in about thirty seconds.
The part that bites later: freshness
Both platforms regenerate the feed on a cron job. On a large catalogue that job is slow, on shared hosting it is sometimes skipped, and nothing tells you — the file simply stops changing while prices in the store keep moving, until Merchant Center starts disapproving products for price mismatch a few days later. The same failure mode as WordPress cron on WooCommerce. After every price change, check the generation timestamp in the feed file until you trust the schedule, or let a service watch it for you.
How FeedRobin handles it
FeedRobin sits on top of the feed URL your extension or module produces: paste it once, and we re-read it on a schedule, check every product for the errors above — missing links and images, barcodes, availability, tax-inclusive prices that match the page — and give you one always-fresh URL per channel: Google, Meta, Microsoft, ChatGPT and the CEE price comparators, all from the same Magento or PrestaShop export. Titles and per-channel tweaks are rules on our side, so you never touch the store to satisfy one channel. It cannot read the native admin exports, for the reason this guide opened with: without product URLs there is nothing to check against.
Sources
Adobe Commerce documentation: Export data, the product data attributes reference, Configurable product, Special prices, Price display settings and Google site tools; Adobe's 2019 announcement of the channel it later withdrew. PrestaShop 8 documentation: Managing Products and Multistore; the PrestaShop Marketing module page. Google Merchant Center Help: the product data specification and the link and brand attributes.