{"id":31830,"date":"2026-11-02T22:41:23","date_gmt":"2026-11-02T21:41:23","guid":{"rendered":"https:\/\/wooacademy.sk\/produkt\/woocommerce-product-feed\/"},"modified":"2026-11-11T14:15:16","modified_gmt":"2026-11-11T13:15:16","slug":"woocommerce-product-feed","status":"publish","type":"product","link":"https:\/\/wooacademy.sk\/en\/produkt\/woocommerce-product-feed\/","title":{"rendered":"WooCommerce Product Feed: Facebook Catalog, Google Merchant and Heureka"},"content":{"rendered":"<div class=\"wa-seo\">\n\n<p class=\"wa-lead\"><strong>Wooacademy catalog feed is a WordPress plugin that turns a WooCommerce store into a product feed for the Facebook catalog (Meta), Google Merchant Center and Heureka CZ\/SK, with properly handled variations and product IDs that match the Meta Pixel. It costs \u20ac39 per year for one domain.<\/strong> It is built for store owners, PPC and social media specialists and agencies who want Facebook and Instagram dynamic ads, Google Shopping or Heureka without manual exports and without a monthly fee for an external feed tool. The plugin is made by wooacademy.sk, Milan Fra\u0148o from Bratislava, and runs on live stores with hundreds of variations.<\/p>\n\n<ul class=\"wa-facts\">\n<li><strong>Channels:<\/strong> Meta (Facebook and Instagram catalog), Google Merchant Center, Heureka CZ and SK<\/li>\n<li><strong>Formats:<\/strong> XML and CSV on a URL the platform fetches on its own<\/li>\n<li><strong>Variations:<\/strong> grouped by colour, parent only or all variations<\/li>\n<li><strong>Updates:<\/strong> automatically every 6 hours and 10 minutes after a product changes<\/li>\n<li><strong>Price:<\/strong> \u20ac39 \/ year for 1 domain, \u20ac99 \/ year for 5 domains<\/li>\n<li><strong>Requirements:<\/strong> WordPress 5.8+, WooCommerce 8.0+, PHP 8.1+<\/li>\n<\/ul>\n\n<div class=\"wa-btns\"><a class=\"wa-btn\" href=\"#wa-cennik\">Choose a licence<\/a><a class=\"wa-btn o\" href=\"https:\/\/wooacademy.sk\/kontakt\/\">Ask about the feed<\/a><\/div>\n\n<h2>What is a product feed and why does a store need one<em>?<\/em><\/h2>\n<p>A product feed is a file (usually XML) listing every product in the store with its title, price, availability, image, category and identifiers. Advertising and comparison platforms download it regularly and use it to show your products:<\/p>\n<div class=\"wa-3 wa-swipe\">\n<div class=\"wa-card c\"><span class=\"wa-n\">1<\/span><h3>Facebook catalog<\/h3><p>Meta builds a product catalog from the feed. Advantage+ catalog ads (dynamic ads), retargeting of viewed products and Instagram shopping all run on it.<\/p><\/div>\n<div class=\"wa-card c\"><span class=\"wa-n\">2<\/span><h3>Google Merchant Center<\/h3><p>Google uses the feed for free listings, Google Shopping and Performance Max campaigns.<\/p><p class=\"wa-more\"><a href=\"https:\/\/wooacademy.sk\/en\/produkt\/product-schema-google-shopping\/\">Product schema for Google Shopping \u2192<\/a><\/p><\/div>\n<div class=\"wa-card c\"><span class=\"wa-n\">3<\/span><h3>Heureka<\/h3><p>The Heureka.cz and Heureka.sk price comparison sites need their own XML format with the price including VAT, a Heureka category and the dispatch time.<\/p><\/div>\n<div class=\"wa-card c\"><span class=\"wa-n\">4<\/span><h3>ChatGPT<\/h3><p>ChatGPT shopping and ChatGPT Ads show products with price and link from a product feed in the OpenAI format. Since version 1.5.0 the plugin generates it too.<\/p><\/div>\n<\/div>\n<p class=\"wa-mt\">Without a feed these channels either do not work or work badly: products show old prices, sold-out items keep being promoted and dynamic ads show a different size or colour from the one the customer viewed.<\/p>\n\n<h2>Why typical WooCommerce feeds make a mess of the catalog<em>?<\/em><\/h2>\n<table class=\"wa-tbl\">\n<thead><tr><th>Problem<\/th><th>What it causes<\/th><th>How the plugin solves it<\/th><\/tr><\/thead>\n<tbody>\n<tr class=\"hl\"><td>Every variation is a separate product in the catalog<\/td><td>A T-shirt in 3 colours and 5 sizes becomes 15 near-identical ads and the ad shows a random size<\/td><td>By default it groups variations by colour: one item per colour, sizes merged<\/td><\/tr>\n<tr class=\"hl\"><td>Content IDs in the pixel do not match the catalog<\/td><td>Events Manager reports a mismatch and dynamic retargeting cannot tell which product was viewed<\/td><td>IDs match the events sent by the wooacademy solutions plugin, grouped variations included<\/td><\/tr>\n<tr><td>Invalid EAN or SKU in the GTIN field<\/td><td>Google disapproves or demotes the offer<\/td><td>EAN\/GTIN check digit validation, invalid values are not sent<\/td><\/tr>\n<tr><td>Feed updated once a day or by hand<\/td><td>Ads show old prices or sold-out items<\/td><td>Background generation every 6 hours and after a product changes<\/td><\/tr>\n<tr><td>Missing brand, category or unit price<\/td><td>Lower relevance and limited reach<\/td><td>Brand from an attribute or a brand list, category mapping, price per litre or kilogram from the title<\/td><\/tr>\n<\/tbody>\n<\/table>\n\n<h2>Features<em>?<\/em><\/h2>\n<h3>Facebook catalog (Meta) and Advantage+ catalog ads<\/h3>\n<p>The plugin generates the Meta feed as XML (RSS 2.0) and CSV following the <a href=\"https:\/\/developers.facebook.com\/docs\/marketing-api\/catalog\/reference\/\" target=\"_blank\" rel=\"noopener\">Meta catalog specification<\/a>. Besides the required fields it sends rich_text_description, up to 20 additional images, video, google_product_category and fb_product_category, colour, size, material, pattern, gender, age group, EAN, MPN, shipping, weight, unit price and sale dates. You add the feed URL in Commerce Manager as a scheduled data source.<\/p>\n<p>Variations come in three modes: <strong>group by one attribute<\/strong> (colour by default, one item per colour with a list of sizes), <strong>parent product only<\/strong> or <strong>all variations<\/strong>. Out-of-stock variations can be skipped.<\/p>\n<h3>Linked to the Meta Pixel and Conversions API<\/h3>\n<p>Dynamic ads only work when content_ids in ViewContent, AddToCart and Purchase match the item IDs in the catalog. With <a href=\"https:\/\/wooacademy.sk\/en\/produkt\/facebook-pixel-free-plugin-wooacademy\/\">wooacademy solutions<\/a> 2.0.1 or newer the feed hands the pixel and Conversions API the exact IDs from the last published feed. The feed also works on its own with a different pixel plugin, but then you need to check that the IDs match yourself.<\/p>\n<h3>Google Merchant Center<\/h3>\n<p>The Google feed is switched on separately and by default sends all variations with item_group_id, as required by the <a href=\"https:\/\/support.google.com\/merchants\/answer\/7052112\" target=\"_blank\" rel=\"noopener\">Google product data specification<\/a>. identifier_exists=no is only sent for products you explicitly mark as having no manufacturer-assigned EAN. IDs can be switched to the SKU \/ ID format used by GA4 e-commerce events.<\/p>\n<h3>Heureka CZ and SK<\/h3>\n<p>An optional separate SHOP \/ SHOPITEM feed: every variation as its own offer with the price including VAT, a valid EAN-13, CATEGORYTEXT from category mapping, DELIVERY_DATE and optional shipping and HEUREKA_CPC.<\/p>\n<h3>ChatGPT (OpenAI product feed)<\/h3>\n<p>Since version 1.5.0 the plugin also generates a <strong>product feed for ChatGPT<\/strong> in the OpenAI format (JSON Lines). It contains all 9 required fields (item_id, title, description, url, brand, seller_name, image_url, availability, price) and optional fields only when the shop really has the data: sale price, GTIN, category, color, size, material, weight, extra images, ratings and the return window. Every variant is its own row with a shared group_id, so it has its own chance in the ChatGPT shopping carousel.<\/p>\n<p>The plugin puts the short description first, because ChatGPT reads only about the first 40 words of a description when it selects products. Products ChatGPT does not allow (alcohol, nicotine, prescription drugs) are excluded with one checkbox on the product.<\/p>\n<div class=\"wa-tip\"><strong class=\"t\">\u2b50 Honestly: what it brings today<\/strong> In the EU, ChatGPT takes product results from Google Shopping as of November 2026, so the Google feed remains the basis. You use the ChatGPT feed in ChatGPT Ads, live in Europe since August 2026, and you are ready when OpenAI launches its own feeds in Europe (it already did in the US).<\/div>\n\n<h3>Campaign labels (custom_label_0 to 4)<\/h3>\n<p>The five custom labels can be filled with discount, best seller, new arrival, price band, margin, category, stock or your own campaign label. Split best sellers, high-margin products or seasonal stock into separate campaigns and move budget to what earns. The purchase price itself is never sent, only the margin segment.<\/p>\n<h3>Feed quality under control<\/h3>\n<p>After every run you see item counts, a quality report (missing image, brand, EAN, category, duplicate or overlong IDs) and a preview per channel. A new feed is published only when all formats are complete; if something fails, platforms keep fetching the last good feed.<\/p>\n<h3>Performance, cache and languages<\/h3>\n<p>Generation runs in the background in batches through WooCommerce Action Scheduler, so it does not slow the site down. The feed sits on a URL with a random token and is excluded from page cache. With WPML and WooCommerce Multilingual each language gets its own feed with prices in that language&#8217;s currency. Developers get filters and WP-CLI commands.<\/p>\n\n<div class=\"wa-tip\"><strong class=\"t\">\u2b50 What the plugin does not do<\/strong> The feed prepares data for catalogs. It does not run campaigns, set budgets or invent data missing in the store (such as EAN or brand). The pixel and Conversions API are handled by the separate wooacademy solutions plugin.<\/div>\n\n<h2>How setup works<em>?<\/em><\/h2>\n<div class=\"wa-3 wa-steps\">\n<div class=\"wa-card\"><span class=\"wa-n\">1<\/span><h3>Install<\/h3><p>After purchase, download the ZIP in My account and upload it in WordPress under Plugins, Add New, Upload Plugin.<\/p><\/div>\n<div class=\"wa-card\"><span class=\"wa-n\">2<\/span><h3>Configure<\/h3><p>In WooCommerce, Catalog feed, switch on channels, choose the variation mode, attribute mapping, brands and categories and click Generate now.<\/p><\/div>\n<div class=\"wa-card\"><span class=\"wa-n\">3<\/span><h3>Connect<\/h3><p>Paste the feed URL into Commerce Manager, Merchant Center or Heureka and check the catalog diagnostics after the first import.<\/p><\/div>\n<\/div>\n\n<h2 id=\"wa-cennik\">Price and licences<em>?<\/em><\/h2>\n<table class=\"wa-tbl\">\n<thead><tr><th>Licence<\/th><th>For<\/th><th>Includes<\/th><th>Price<\/th><\/tr><\/thead>\n<tbody>\n<tr class=\"hl\"><td>1 domain<\/td><td>One store<\/td><td>All channels (Meta, Google, Heureka), updates and email support for 12 months<\/td><td>\u20ac39 \/ year<\/td><\/tr>\n<tr><td>5 domains<\/td><td>Agencies and freelancers<\/td><td>The same for 5 client stores<\/td><td>\u20ac99 \/ year<\/td><\/tr>\n<tr><td>1 domain + done-for-you setup<\/td><td>If you want it done<\/td><td>Licence, installation, variation, brand and category setup, connection to Commerce Manager, Merchant Center or Heureka and a diagnostics check<\/td><td>\u20ac149<\/td><\/tr>\n<\/tbody>\n<\/table>\n<p>The plugin keeps working after the licence ends; you just stop receiving new versions and support.<\/p>\n\n<h2>Comparison with other solutions<em>?<\/em><\/h2>\n<p>Every tool has its strengths. Based on public pricing pages and descriptions as of 2 November 2026; details may change.<\/p>\n<div style=\"overflow-x:auto;\">\n<table class=\"wa-tbl\">\n<thead><tr><th>Solution<\/th><th>Channels<\/th><th>Price<\/th><th>Better when<\/th><\/tr><\/thead>\n<tbody>\n<tr class=\"hl\"><td>Wooacademy catalog feed<\/td><td>Meta, Google, Heureka CZ\/SK<\/td><td>\u20ac39 \/ year (1 domain)<\/td><td>You want one plugin for Meta, Google and Heureka with grouped variations and pixel-matching IDs<\/td><\/tr>\n<tr><td>Meta for WooCommerce (official)<\/td><td>Meta<\/td><td>free<\/td><td>API catalog sync is enough and you do not need Google or Heureka<\/td><\/tr>\n<tr><td>Product Catalog Feed (PixelYourSite)<\/td><td>Meta, Google, Pinterest, TikTok, Reddit<\/td><td>from $109 \/ year (2 sites)<\/td><td>You also advertise on Pinterest or TikTok<\/td><\/tr>\n<tr><td>CTX Feed Pro<\/td><td>hundreds of channel templates<\/td><td>from $83 \/ year (1 site, promo price)<\/td><td>You need many niche comparison sites and custom field templates<\/td><\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<h2>Frequently asked questions<\/h2>\n<details><summary>Does the plugin create a feed for ChatGPT?<\/summary><p>Yes, since version 1.5.0. Enable the ChatGPT channel in the settings and you get a feed URL in the OpenAI format (JSON Lines). In the EU you use it in ChatGPT Ads today; organic ChatGPT shopping results in Europe still come from Google Shopping, so keep the Google feed enabled too.<\/p><\/details>\n<details><summary>How do I create a Facebook catalog from WooCommerce?<\/summary><p>Install the plugin, enable the Meta feed, save and copy the feed URL. In Meta Commerce Manager create an e-commerce catalog, add a scheduled feed data source and paste the URL. Meta will fetch the feed regularly.<\/p><\/details>\n<details><summary>How often is the feed updated?<\/summary><p>Every 6 hours by default and 10 minutes after a product changes; the interval can be set from 1 to 168 hours. Actual timing depends on a working task scheduler on your hosting and on how often the platform fetches the feed.<\/p><\/details>\n<details><summary>Why does Events Manager say content_ids do not match the catalog?<\/summary><p>The pixel sends different IDs from those in the catalog, for example a variation ID instead of the grouped item ID or an SKU instead of a numeric ID. With wooacademy solutions 2.0.1+ the feed gives the pixel exactly the IDs in the published feed.<\/p><\/details>\n<details><summary>Does it work with another pixel plugin such as PixelYourSite?<\/summary><p>Yes, the feed is independent. Automatic ID matching only works with wooacademy solutions; with another plugin set a matching ID format and check it in catalog diagnostics.<\/p><\/details>\n<details><summary>Can it handle a large catalog?<\/summary><p>It generates in the background in batches (200 products by default) and works with both classic order storage and HPOS. For tens of thousands of products measure time and memory on your own hosting or reduce the batch size.<\/p><\/details>\n<details><summary>Does it work with WPML and multiple currencies?<\/summary><p>Yes, each language gets its own feed with prices in its currency. A currency conversion must be configured in WooCommerce Multilingual; otherwise the plugin does not generate the feed rather than sending a wrong price.<\/p><\/details>\n<details><summary>What if generation fails?<\/summary><p>Platforms keep receiving the last successfully generated feed. A new one is published only once all formats are complete.<\/p><\/details>\n\n<p class=\"wa-mt\"><strong>Want catalog ads that show the right product in the right variation?<\/strong> Buy a licence and have the feed running in minutes, or choose done-for-you setup.<\/p>\n<div class=\"wa-btns\"><a class=\"wa-btn\" href=\"#wa-cennik\">Buy a licence<\/a><a class=\"wa-btn o\" href=\"https:\/\/wooacademy.sk\/kontakt\/\">Contact Milan<\/a><\/div>\n\n<\/div>\n\n\n<!-- wp:themify-builder\/canvas \/-->","protected":false},"excerpt":{"rendered":"<p><strong>A WooCommerce product feed for the Facebook catalog, Google Merchant Center and Heureka CZ\/SK in one plugin.<\/strong><\/p>\n<ul>\n<li>Variations grouped by colour, no duplicates in the catalog<\/li>\n<li>Product IDs matching the Meta Pixel and Conversions API<\/li>\n<li>EAN, brand and category checks with a feed quality report<\/li>\n<li>Automatic updates every 6 hours and after product changes<\/li>\n<li>Campaign labels: best seller, margin, new arrival, discount<\/li>\n<li>New: feed for ChatGPT (OpenAI) and ChatGPT Ads<\/li>\n<\/ul>\n<p>\u20ac39 \/ year for 1 domain, updates and support included.<\/p>\n","protected":false},"featured_media":31810,"comment_status":"open","ping_status":"closed","template":"","meta":[],"product_brand":[],"product_cat":[658],"product_tag":[],"class_list":["post-31830","product","type-product","status-publish","has-post-thumbnail","product_cat-plugins","has-post-title","has-post-date","has-post-category","has-post-tag","has-post-comment","has-post-author","","first","instock","shipping-taxable","purchasable","product-type-variable","has-default-attributes"],"builder_content":"","_links":{"self":[{"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/product\/31830","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/product"}],"about":[{"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/types\/product"}],"replies":[{"embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/comments?post=31830"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/media\/31810"}],"wp:attachment":[{"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/media?parent=31830"}],"wp:term":[{"taxonomy":"product_brand","embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/product_brand?post=31830"},{"taxonomy":"product_cat","embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/product_cat?post=31830"},{"taxonomy":"product_tag","embeddable":true,"href":"https:\/\/wooacademy.sk\/en\/wp-json\/wp\/v2\/product_tag?post=31830"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}