Integration
PrestaShop + Google Shopping
PrestaShop ships no Google feed in the core, but a free open-source module writes a Google Shopping XML on a cron, and the SQL Manager can download any product query as CSV. We point Textfinity at either, map the columns once, and Merchant Center fetches the result on a schedule.
We connect your store, build the feed and keep it in sync. Updated 2026-10-27.
At a glance
- gshoppingflux is a free Apache-2.0 PrestaShop module that generates a Google Merchant Center XML feed with automatic cron generation; it lists PrestaShop 1.6 through 9.x as tested.
- The SQL Manager (Advanced Parameters → Database) runs SELECT queries and downloads the result as a UTF-8 CSV, which gives you a raw export without any module.
- Textfinity has no PrestaShop module; it reads the XML or CSV by URL on a schedule, maps and filters, and publishes the feed on a stable URL.
- Combinations (PrestaShop's variants) need id_product as item_group_id and the combination reference as id.
Where a PrestaShop Google Shopping feed comes from
PrestaShop's back office imports CSV but has no product feed export in the core. The two free sources are a module and the database. The gshoppingflux module (a fork of ps_googleshopping) is open source under the Apache 2.0 license, generates an XML feed for Google Merchant Center, supports Local Inventory and Product Reviews feeds, and has automatic cron generation; the README lists 1.6.0.6 through 9.1.5 as tested versions. The Addons marketplace also sells paid modules with more mapping options.
The second source is the SQL Manager under Advanced Parameters → Database. It only runs SELECT queries, which is what you want, and each saved query has an export icon that downloads the result as CSV with UTF-8 or ISO-8859-1 encoding. A query joining ps_product, ps_product_lang, ps_stock_available and ps_image gives you a flat product table. The download is manual, so it suits a first load or a store that schedules the same query on its own cron and serves the file by URL.
PrestaShop fields to Google Shopping attributes
| PrestaShop field (module XML or SQL column) | Google attribute | Rule in Textfinity |
|---|---|---|
| reference (combination reference when present) | id | Rename; fallback to id_product with an advanced if when reference is empty |
| name (ps_product_lang) + attribute values | title | Combine manufacturer, name, color, size; max 150 chars |
| description_short or description | description | Remove from regexp <[^>]+> to strip HTML; max 5,000 chars |
| link_rewrite + id_product | link | Advanced: "https://store.example/" + [id_product] + "-" + [link_rewrite] + ".html"; the module XML already gives a full URL |
| image URL (id_image) | image_link | Module gives a full URL; from SQL build it with add prefix on the image path |
| quantity (ps_stock_available) | availability | Advanced: if calc{[quantity]} > 0 then "in_stock" else "out_of_stock" |
| price (tax excl.) or price with tax | price | Add suffix " EUR"; send the price the product page shows |
| reduction / specific price | sale_price | Add suffix; empty when no promotion |
| manufacturer name | brand | Rename; max 70 chars |
| ean13 / upc / isbn | gtin | Rename; leave empty rather than fill |
| category path | google_product_category | Replace from Google Sheet keyed on your category (substring find-and-replace: keep column A paths specific) |
| id_product (combinations) | item_group_id | Rename on combination rows |
| active | (filter) | Filters: active is equal to 1 |
Google attributes and limits from Google's product data specification, checked 2026-10-27. PrestaShop field names follow the ps_product, ps_product_lang and ps_stock_available tables; the module's XML uses its own element names, which the mapping reads as they are.
Fixes between PrestaShop and Merchant Center
- Tax: PrestaShop stores prices without tax and shows them with tax. Google compares the feed price with the product page, so send the tax-inclusive price your customers see, or Merchant Center flags a mismatch.
- Combinations: each combination is a sellable item. Map the combination reference to id, id_product to item_group_id, and the attribute values (color, size) to Google's color and size.
- Multilingual stores: ps_product_lang has one row per language. Filter one id_lang per feed and build one feed per language and country; Textfinity's AI configs can translate titles and descriptions when a language has no copy of its own.
- HTML descriptions: the editor stores tags. One remove from regexp rule returns plain text.
- Inactive products and products with no image: filter active = 1 and a non-blank image URL column in the source so Google never sees them.
How Merchant Center fetches the feed
Merchant Center fetches product files from a URL added as a product source in its data sources settings. The URL must start with http, https, ftp or sftp and point at the file itself; you choose the fetch schedule and can add a login for protected files. Files can be up to 4 GB. This is done in Google's interface.
Textfinity rebuilds the Google feed on the shop's sync schedule and keeps it on one stable URL, so the URL is registered once; we do that in your Merchant Center with you, through access you give us or on a short call. Make sure the module's cron, or your SQL export cron, runs at least as often as the Textfinity sync so the chain PrestaShop → module URL → Textfinity → Merchant Center never serves stale stock.
SQL Manager query (one row per product, default language, default shop)
SELECT p.id_product, p.reference, p.ean13, p.price, p.active,
pl.name, pl.description_short, pl.link_rewrite,
sa.quantity, m.name AS manufacturer
FROM ps_product p
JOIN ps_product_lang pl ON pl.id_product = p.id_product AND pl.id_lang = 1
JOIN ps_stock_available sa ON sa.id_product = p.id_product AND sa.id_product_attribute = 0
LEFT JOIN ps_manufacturer m ON m.id_manufacturer = p.id_manufacturerExamples
Worked examples, by situation
Three PrestaShop stores in three markets, with the rule each one needed before Google accepted the feed.
Combination rows that Google groups as one product
Before
reference: ROBE-LIN-BLEU-38 id_product: 4471 name: Robe en lin attributes: Bleu, 38
After
id: ROBE-LIN-BLEU-38 item_group_id: 4471 title: Maison Claire Robe en lin, Bleu, 38 color: Bleu size: 38
How we set it up
We map id as a rename of reference and item_group_id as a rename of id_product, build title as an advanced expression, [manufacturer] + " " + [name] + ", " + [color] + ", " + [size], and rename color and size from the attribute columns. Google requires item_group_id, color and size for apparel sold in France.
Tax-inclusive price with currency
Before
price: 41.3223 (tax excl.) vat: 21%
After
price: 50.00 EUR
How we set it up
We map price as an advanced expression, round(calc{[price] * 1.21}, 2) + " EUR", which adds the 21% VAT, rounds and appends the currency in one rule. If the module already exports the tax-inclusive price, the * 1.21 goes. Google compares the feed with the product page, which shows the price with VAT.
German titles for a French catalog
Before
name: Puzzle en bois 48 pièces - Forêt
After
title: Holzpuzzle 48 Teile Waldtiere ab 3 Jahren, Kinderpuzzle aus Holz mit großen Teilen für kleine Hände, Lernspielzeug für Feinmotorik
How we set it up
We set up an AI config that enhances the title, translated into German, from name, description_short and the age attribute; Textfinity keeps titles at 100 to 150 characters with the key facts first. Once the store accepts the generations, title uses replace from AI config with the French name as fallback. One AI config serves the DE and the AT feed.
Copy this plan
Plan: PrestaShop to Merchant Center
One back-office step, four feed steps that we set up in Textfinity for you, one Merchant Center step.
01
Produce a feed URL in PrestaShop
Install the free gshoppingflux module, enable every field, turn on its cron generation and copy the feed URL. Or save the SQL query above in the SQL Manager, export it, and serve the CSV from a URL you refresh on cron. Both happen in the PrestaShop back office.
02
Add the URL as a shop
The feed tool pulls the file, detects columns and profiles them: completeness, title lengths, mixed languages, malformed image URLs.
What we set up: We add the module's XML URL or your CSV URL as the source and send you the profile.03
Create the Google Shopping feed
Start from the template so Google's attribute names are pre-filled, then map from the table above.
What we set up: We start the feed from the Google Shopping channel template and map it from the table above.04
Add the PrestaShop-specific rules
Tax-inclusive price with currency, combination ids and group ids, stripped HTML, stock words.
What we set up: We map price as an advanced expression (VAT, rounding, currency), item_group_id as a rename, description with remove from regexp and availability as an advanced expression.05
Filter inactive products and one language
Keep active products with an image, and one id_lang per feed.
What we set up: We add filters: active is equal to 1; the source image URL column is not blank; id_lang is equal to 1.06
Give Merchant Center the feed
Add the feed URL in Merchant Center as a product source from a file and schedule a daily fetch. This step is in Google's interface.
What we set up: We register the feed URL with a daily fetch in your Merchant Center, with access you give us or on a short call.
Customization tips
Make it yours
Start from the module, move to SQL only if you need columns it lacks
The module's XML is already Google-shaped and refreshes itself. The SQL route exposes every table (features, specific prices, pack contents) but you own the cron and the file hosting. Use SQL when a feature value such as material or age range must reach Google.
Merge a Google Sheet for GTINs you keep outside PrestaShop
Many PrestaShop catalogs have ean13 empty. A merged source (a Sheet keyed on reference) adds a gtin column without touching the store. The trade-off is a second place to maintain; keep the sheet small.
One feed per language-country pair
FR, BE-fr and CH-fr differ in currency and shipping even when the copy is identical. Separate feeds with their own add suffix currency rule are easier to debug than one feed with conditional mapping.
Use the hygiene profile to catch mixed languages
Stores that started in French and added English often have Spanish descriptions in the French rows. The language consistency checker shows which rows mix languages before Google disapproves them for the wrong target country.
FAQ
Questions about prestashop google shopping feed
Is there a free PrestaShop Google Shopping module?
Yes. gshoppingflux on GitHub is open source under the Apache 2.0 license, generates a Google Merchant Center XML feed with automatic cron generation, and lists PrestaShop 1.6 through 9.x as tested. Paid modules on the Addons marketplace add mapping screens; Textfinity does that part for any raw export.
Can I export PrestaShop products to CSV without a module?
Yes, through the SQL Manager under Advanced Parameters → Database. It runs SELECT queries only and downloads the result as a CSV in UTF-8 or ISO-8859-1. Join ps_product, ps_product_lang and ps_stock_available for a flat product table.
Does Textfinity have a PrestaShop module?
No. Textfinity connects to PrestaShop through a Google Shopping XML or CSV URL, the same way it connects to WooCommerce, Magento and BigCommerce. Only Shopify has a native connection. Send us the URL and we build the feed from it.
How do PrestaShop combinations go into a Google feed?
One row per combination: the combination reference as id, id_product as item_group_id, and the attribute values as color and size. Google then shows one listing with variant pickers. Products without combinations use their own reference as id and need no item_group_id.
Set up for you
We'll get your PrestaShop catalog into Merchant Center this week.
Send us the module or SQL export URL. We map the thirteen fields above once, filter one language per feed and register the feed in your Merchant Center with you. EU-hosted.
Tell us your store and channels. We reply within 24 hours.