PrestaShop Product Feeds: Google Shopping, Facebook Catalog, and More
PrestaShop Product Feeds: Google Shopping, Facebook Catalog, and More
Product feeds are the backbone of modern e-commerce advertising. They connect your PrestaShop store's catalog to advertising platforms like Google Shopping, Meta (Facebook and Instagram), Pinterest, and comparison shopping engines. A well-optimized product feed can dramatically increase your visibility, drive qualified traffic, and boost sales. This guide covers everything from setting up your first feed to advanced optimization techniques that will give your products a competitive edge.
What Is a Product Feed and Why Does It Matter
A product feed is a structured data file (typically XML, CSV, or JSON) that contains detailed information about every product in your catalog. Advertising platforms ingest this file to display your products in shopping ads, marketplace listings, and social commerce features.
The quality of your product feed directly impacts:
- Ad eligibility - Products with missing or incorrect data get disapproved and never shown to shoppers
- Ad relevance - Better product titles and descriptions mean your ads appear for more relevant searches
- Click-through rate - Accurate prices, high-quality images, and compelling descriptions drive more clicks
- Cost per acquisition - Optimized feeds lead to better quality scores, which lower your cost per click
Google Shopping Feed Setup
Prerequisites
Before creating your Google Shopping feed, you need:
- Google Merchant Center account - Create one at
merchants.google.com. Verify and claim your website URL. - Google Ads account - Required if you want to run Shopping campaigns (free listings do not require this).
- Product identifiers - GTIN (EAN-13 in Europe, UPC in North America), MPN (Manufacturer Part Number), and Brand must be present for most product categories.
- Compliant website - Your store must have clear return policies, shipping information, and contact details visible to shoppers.
Required Feed Attributes
| Attribute | PrestaShop Field | Requirements |
|---|---|---|
| id | Product ID or Reference | Unique identifier, max 50 characters |
| title | Product Name | Max 150 chars, include key attributes |
| description | Product Description | Max 5000 chars, no HTML tags |
| link | Product URL | Must match verified domain |
| image_link | Cover Image URL | Min 100x100px, recommended 800x800px+ |
| price | Product Price | Include currency code (e.g., 29.99 EUR) |
| availability | Stock Status | in_stock, out_of_stock, or preorder |
| brand | Manufacturer | Required for all products with a brand |
| gtin | EAN-13 / UPC | Required for all products with a GTIN |
| mpn | Supplier Reference | Required if no GTIN exists |
| condition | Product Condition | new, refurbished, or used |
| google_product_category | Mapped manually or via module | Google's taxonomy ID or full path |
Setting Up the Feed in PrestaShop
Option A - PrestaShop Marketing with Google (Official Module)
The official module connects directly to Google Merchant Center. Install it from the PrestaShop Addons marketplace or your back office. Configuration steps:
- Navigate to Modules > Module Manager, search for "PrestaShop Marketing with Google"
- Install and click Configure
- Connect your Google account using OAuth
- Map your product attributes to Google's required fields
- Select which products to include (you can exclude by category, stock status, or price range)
- Set the synchronization frequency (daily is recommended)
Option B - Third-Party Feed Modules
Third-party modules often provide more flexibility. Look for modules that support:
- Custom attribute mapping (map any PrestaShop field to any feed attribute)
- Feed filtering (exclude products by category, manufacturer, stock, price)
- Multiple feed formats (XML, CSV, TXT)
- Scheduled generation via cron
- Support for product combinations/variants
Option C - Custom XML Feed
For maximum control, you can generate a feed programmatically. Create a PHP file that queries your database and outputs Google-compliant XML:
<?php
// Example - Basic Google Shopping feed generator
require_once(dirname(__FILE__) . '/config/config.inc.php');
require_once(dirname(__FILE__) . '/init.php');
header('Content-Type: application/xml; charset=utf-8');
$id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
$id_shop = (int)Context::getContext()->shop->id;
$link = new Link();
$products = Db::getInstance()->executeS('
SELECT p.id_product, pl.name, pl.description,
p.reference, p.ean13, p.price, p.quantity,
m.name as manufacturer_name,
cl.name as category_name,
i.id_image
FROM ' . _DB_PREFIX_ . 'product p
JOIN ' . _DB_PREFIX_ . 'product_lang pl
ON p.id_product = pl.id_product AND pl.id_lang = ' . $id_lang . '
JOIN ' . _DB_PREFIX_ . 'product_shop ps
ON p.id_product = ps.id_product AND ps.id_shop = ' . $id_shop . '
LEFT JOIN ' . _DB_PREFIX_ . 'manufacturer m
ON p.id_manufacturer = m.id_manufacturer
LEFT JOIN ' . _DB_PREFIX_ . 'category_lang cl
ON p.id_category_default = cl.id_category AND cl.id_lang = ' . $id_lang . '
LEFT JOIN ' . _DB_PREFIX_ . 'image i
ON p.id_product = i.id_product AND i.cover = 1
WHERE ps.active = 1 AND p.quantity > 0
');
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">';
echo '<channel>';
echo '<title>Your Store Name</title>';
foreach ($products as $product) {
$productObj = new Product($product['id_product'], false, $id_lang);
$finalPrice = $productObj->getPrice(true);
$productUrl = $link->getProductLink($product['id_product']);
$imageUrl = $link->getImageLink(
$productObj->link_rewrite,
$product['id_image']
);
echo '<item>';
echo '<g:id>' . $product['id_product'] . '</g:id>';
echo '<g:title>' . htmlspecialchars($product['name']) . '</g:title>';
echo '<g:link>' . htmlspecialchars($productUrl) . '</g:link>';
echo '<g:price>' . number_format($finalPrice, 2) . ' EUR</g:price>';
echo '<g:availability>in_stock</g:availability>';
echo '<g:image_link>' . htmlspecialchars($imageUrl) . '</g:image_link>';
echo '<g:brand>' . htmlspecialchars($product['manufacturer_name']) . '</g:brand>';
echo '<g:gtin>' . $product['ean13'] . '</g:gtin>';
echo '<g:condition>new</g:condition>';
echo '</item>';
}
echo '</channel></rss>';Set up a cron job to regenerate the feed periodically (e.g., every 6 hours).
Facebook and Instagram Catalog Feed
Setting Up a Meta Product Catalog
- Go to Meta Commerce Manager at
business.facebook.com/commerce - Create a new catalog and select "E-commerce" as the catalog type
- Choose "Data feed" as the upload method
- Set up a scheduled feed URL pointing to your PrestaShop feed
Required Attributes for Meta
| Attribute | Description | Requirements |
|---|---|---|
| id | Unique product ID | Max 100 characters |
| title | Product name | Max 200 characters |
| description | Product description | Max 9999 characters |
| availability | Stock status | in stock, out of stock, available for order |
| condition | Product condition | new, refurbished, used |
| price | Current price | Format: 9.99 USD |
| link | Product page URL | Must be accessible and match verified domain |
| image_link | Main product image | Min 500x500px for ads, 1024x1024px recommended |
| brand | Brand name | Required for branded products |
Meta Pixel Integration
For Dynamic Ads to work effectively, you need the Meta Pixel installed on your PrestaShop store. The pixel tracks user behavior and matches it with your product catalog to show relevant remarketing ads. Key events to track:
ViewContent- When a user views a product page (pass the product ID)AddToCart- When a user adds a product to their cartPurchase- When a user completes an order (pass order value and product IDs)
Feed Optimization Best Practices
Title Optimization
Product titles are the single most impactful element of your feed. Follow these guidelines:
- Include the brand name first - "Nike Air Max 90 Men's Running Shoes" performs better than "Men's Running Shoes by Nike"
- Add key attributes - Color, size, material, and model number help match search queries
- Front-load important keywords - Google truncates titles after ~70 characters in Shopping ads
- Avoid promotional text - "SALE" or "Free Shipping" in titles violates Google's policies
Image Optimization
- Use white or neutral backgrounds for Google Shopping
- Show the product clearly without watermarks, logos, or promotional overlays
- Provide at least 800x800 pixels for standard products, 1200x1200 for apparel
- Include additional images via the
additional_image_linkattribute (up to 10)
Price and Availability Accuracy
Google and Meta both check that the price and availability in your feed match what is shown on your product pages. Mismatches lead to disapprovals. Ensure your feed regenerates frequently enough to reflect:
- Price changes from promotions or sales
- Stock level changes (in stock vs. out of stock)
- Sale prices (use the
sale_priceattribute withsale_price_effective_date)
Product Category Mapping
Google uses its own product taxonomy with over 6000 categories. You need to map each of your PrestaShop categories to the most specific Google category possible. For example:
Your category: "Shoes > Running Shoes"
Google category: "Apparel & Accessories > Shoes > Athletic Shoes > Running Shoes"
Google taxonomy ID: 3603Handling Product Variants (Combinations)
PrestaShop combinations need special handling in product feeds. Each combination should be submitted as a separate item with:
- A unique
id(e.g.,product_id-combination_id) - The parent product grouped via
item_group_id - Specific attributes like
color,size,material - The correct price for that specific combination
- The image showing that specific variant (if available)
<!-- Example: same product, two color variants -->
<item>
<g:id>SKU-001-RED</g:id>
<g:item_group_id>SKU-001</g:item_group_id>
<g:title>Premium Running Shoes - Red</g:title>
<g:color>Red</g:color>
<g:size>42</g:size>
</item>
<item>
<g:id>SKU-001-BLUE</g:id>
<g:item_group_id>SKU-001</g:item_group_id>
<g:title>Premium Running Shoes - Blue</g:title>
<g:color>Blue</g:color>
<g:size>42</g:size>
</item>Automating Feed Generation with Cron
Set up a cron job to regenerate your feed automatically. This ensures Google and Facebook always have up-to-date product data:
# Regenerate Google Shopping feed every 6 hours
0 */6 * * * php /var/www/html/modules/yourfeedmodule/cron.php > /dev/null 2>&1
# Or if your module provides a URL-based cron
0 */6 * * * curl -s "https://yourstore.com/modules/yourfeedmodule/cron.php?token=YOUR_TOKEN" > /dev/null 2>&1For stores with more than 10,000 products, consider generating the feed during off-peak hours to minimize server load.
Troubleshooting Common Feed Issues
Products Disapproved for Missing Identifiers
If Google disapproves products for missing GTIN/MPN, check that:
- The EAN-13 field in PrestaShop is filled for every product
- The GTIN is valid (correct format and check digit)
- The manufacturer is set for every product
- If your products genuinely have no GTIN (custom or handmade items), set
identifier_existstofalse
Price Mismatch Errors
This occurs when the price in your feed does not match the price displayed on your product page. Common causes:
- Feed shows price without tax, but product page shows price with tax (or vice versa)
- Currency mismatch between feed and target country
- Cart rules or group discounts changing the displayed price
- Feed generation timing - prices changed after the last feed update
Image Rejection
Google rejects images that are too small, have watermarks, or contain promotional text. Ensure your product images meet these criteria:
- Minimum 100x100 pixels (250x250 for apparel)
- No text overlays, watermarks, or logos on the image
- Product fills at least 75% of the image area
- White or light background preferred
Measuring Feed Performance
After your feed is live, monitor these metrics in Google Merchant Center:
- Active products - How many products are approved and eligible to show
- Disapproved products - Fix these first as they represent lost opportunity
- Click-through rate - Indicates how appealing your product listings are
- Impression share - What percentage of eligible impressions your products receive
In Meta Commerce Manager, check:
- Catalog diagnostics - Shows errors, warnings, and suggestions for improvement
- Item match rate - How many pixel events match products in your catalog
For more details, read our guides: Google Merchant Center Feed Optimization: The PrestaShop Store Owner's Complete Guide and Google Merchant Center: How to Get Your Products into Google Shopping.
Was this answer helpful?
Still have questions?
Can't find what you're looking for? Send us your question and we'll get back to you quickly.