{"id":387736,"date":"2026-10-29T07:08:01","date_gmt":"2026-10-29T07:08:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/universal-product-feed-for-woocommerce\/"},"modified":"2026-10-29T09:41:17","modified_gmt":"2026-10-29T09:41:17","slug":"geekodev-universal-product-feed","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/geekodev-universal-product-feed\/","author":23586819,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"GeekoDev Universal Product Feed for WooCommerce","header_author":"GeekoDev","header_description":"Product feeds for Google Merchant Center, Facebook \/ Meta, TikTok, Bing, Pinterest and Snapchat, plus a custom CSV feed, from your WooCommerce store.","assets_banners_color":"29438a","last_updated":"2026-10-29 09:41:17","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/docs.geekodev.com\/woocommerce\/wc_universal_product_feed\/","header_author_uri":"https:\/\/geekodev.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":79,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"geekodev","date":"2026-10-29 07:07:44","revision":3772246},"1.0.1":{"tag":"1.0.1","author":"geekodev","date":"2026-10-29 09:41:17","revision":3772540}},"upgrade_notice":{"1.0.1":"<p>Notice after a manual generation; fixes a &quot;translation loaded too early&quot; notice in debug logs.<\/p>","1.0.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3772246,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3772246,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3772246,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3772246,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3772246,"resolution":"1","location":"assets","locale":"","width":1280,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3772246,"resolution":"2","location":"assets","locale":"","width":1280,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3772246,"resolution":"3","location":"assets","locale":"","width":1280,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3772246,"resolution":"4","location":"assets","locale":"","width":1280,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3772246,"resolution":"5","location":"assets","locale":"","width":1280,"height":800}},"screenshots":{"1":"Dashboard listing your feeds with their status, URL and quick actions","2":"Feed editor: general settings and channel options","3":"Mapping editor: choose what goes in each column","4":"Preview tab showing sample products before you submit the feed","5":"Settings: general options and Google category mapping"}},"plugin_section":[],"plugin_tags":[194631,51229,5418,210374,286],"plugin_category":[45],"plugin_contributors":[289387],"plugin_business_model":[],"class_list":["post-387736","plugin","type-plugin","status-publish","hentry","plugin_tags-facebook-catalog","plugin_tags-google-shopping","plugin_tags-product-feed","plugin_tags-tiktok-shop","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-geekodev","plugin_committers-geekodev"],"banners":{"banner":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/banner-772x250.png?rev=3772246","banner_2x":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/banner-1544x500.png?rev=3772246","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/icon-128x128.png?rev=3772246","icon_2x":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/icon-256x256.png?rev=3772246","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/screenshot-1.png?rev=3772246","caption":"Dashboard listing your feeds with their status, URL and quick actions"},{"src":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/screenshot-2.png?rev=3772246","caption":"Feed editor: general settings and channel options"},{"src":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/screenshot-3.png?rev=3772246","caption":"Mapping editor: choose what goes in each column"},{"src":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/screenshot-4.png?rev=3772246","caption":"Preview tab showing sample products before you submit the feed"},{"src":"https:\/\/ps.w.org\/geekodev-universal-product-feed\/assets\/screenshot-5.png?rev=3772246","caption":"Settings: general options and Google category mapping"}],"raw_content":"<!--section=description-->\n<p>https:\/\/www.youtube.com\/watch?v=uGzKZjgwJ8c<\/p>\n\n<p>GeekoDev Universal Product Feed for WooCommerce builds the product feeds the main shopping and advertising channels ask for, straight from your WooCommerce products, and keeps them up to date at a stable public URL. No product limit, no feed limit.<\/p>\n\n<h4>Channels<\/h4>\n\n<ul>\n<li><strong>Google Merchant Center<\/strong> (Google Shopping, free listings): XML feed with prices, sale prices, availability, brand, GTIN, MPN, condition, Google product category, variations, age group, gender, custom labels, shipping cost and handling times<\/li>\n<li><strong>Facebook \/ Meta Catalog<\/strong> (Facebook and Instagram Shops, Advantage+ catalog ads)<\/li>\n<li><strong>TikTok Shop \/ TikTok Catalog<\/strong><\/li>\n<li><strong>Microsoft Bing Merchant Center<\/strong><\/li>\n<li><strong>Pinterest Shopping<\/strong><\/li>\n<li><strong>Snapchat Ads Catalog<\/strong><\/li>\n<li><strong>Custom CSV<\/strong>: choose every column yourself, with your delimiter, for any other channel that takes a CSV file<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Stable public URLs (<code>\/feeds\/your-feed.xml<\/code>) that Googlebot, the Meta crawler and the other channels fetch on a schedule<\/li>\n<li>Fast delivery: the generated file is served straight from disk and rebuilt automatically when products change; crawlers may cache it for the max age you set and get a \"304 Not Modified\" when it has not changed<\/li>\n<li>Background generation through WooCommerce's Action Scheduler, in batches, so large catalogs don't time out; the <strong>Run<\/strong> button regenerates a feed immediately<\/li>\n<li>Scheduled regeneration per feed: every 15 minutes, hourly, daily or weekly<\/li>\n<li>Variations exported as individual items, with their own link, image and an <code>item_group_id<\/code> pointing to their parent<\/li>\n<li>A mapping editor on every channel: send a product field, a custom field (meta), a taxonomy term or a fixed value in any column<\/li>\n<li>Google category mapping: assign a Google product category to each WooCommerce category once; sub-categories and variations inherit it. The Google category list can be downloaded in your language<\/li>\n<li>Filters per feed: categories, stock status, product type, price range<\/li>\n<li>Prices as customers pay them: the sale price only while the sale runs, and prices shown the way your shop displays them<\/li>\n<li>Shipping cost per product for Google Merchant Center, from a WooCommerce shipping zone<\/li>\n<li>Per-feed logs and a Preview tab to check the output before submitting it<\/li>\n<li>WooCommerce's own GTIN field, or <code>_gtin<\/code> \/ <code>_ean<\/code> \/ <code>_upc<\/code> custom fields; brands from a <code>_brand<\/code> custom field, the <code>product_brand<\/code> taxonomy (WooCommerce Brands, Perfect Brands, YITH Brands\u2026) or a Brand attribute<\/li>\n<li>Translation-ready, right-to-left languages included: translations are managed on translate.wordpress.org<\/li>\n<li>Compatible with WooCommerce High-Performance Order Storage (HPOS)<\/li>\n<\/ul>\n\n<h4>Universal Product Feed Pro<\/h4>\n\n<p>The <a href=\"https:\/\/geekodev.com\/woocommerce-extensions\/universal-product-feed\">Pro add-on<\/a> adds:<\/p>\n\n<ul>\n<li>39 more channels: the European price comparison engines and marketplaces (Idealo, Kelkoo, LeD\u00e9nicheur, Skroutz, BestPrice, Heureka, Zbo\u017e\u00ed.cz, Ceneo, Glami, Mall, \u00c1rukeres\u0151, Compari.ro, eMAG, Geizhals, PriceRunner, PriceSpy, Prisjakt, Trovaprezzi, KuantoKusta, Trendyol\u2026), Google Ads, Google Product Reviews and Promotions, Amazon, Temu, Criteo, Fruugo, OpenAI \/ ChatGPT Shopping, Custom XML and Custom JSON<\/li>\n<li>Advanced mapping: composite templates (<code>{name} - {brand}<\/code>), conditions and transforms (strip HTML, truncate, replace, regex, rounding, arithmetic)<\/li>\n<li>One feed per language with WPML or Polylang, and feeds in other currencies with WooCommerce Multilingual (WCML) or Aelia Currency Switcher<\/li>\n<li>Shipping rules by price, weight, stock and category<\/li>\n<li>FTP \/ SFTP upload of the generated file and a signed webhook after each generation<\/li>\n<li>Category mapping for Heureka \/ Glami, Ceneo and Fruugo<\/li>\n<\/ul>\n\n<p>The free plugin keeps working on its own: the add-on only adds to it.<\/p>\n\n<h4>Source code<\/h4>\n\n<p>The admin screens are a React app: <code>build\/<\/code> holds the compiled files and <code>src\/<\/code> their source, shipped in the plugin with the files that build it (<code>package.json<\/code>, <code>webpack.config.js<\/code>, <code>tsconfig.json<\/code>). To rebuild <code>build\/<\/code>: <code>npm install<\/code>, then <code>npm run build<\/code> (@wordpress\/scripts).<\/p>\n\n<h4>Trademarks<\/h4>\n\n<p>WooCommerce, Google, Meta, Facebook, Instagram, TikTok, Microsoft Bing, Pinterest and Snapchat are trademarks of their respective owners. This plugin is not affiliated with, or endorsed by, any of them.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to one external service, only from its settings screen:<\/p>\n\n<ul>\n<li><strong>Google product taxonomy<\/strong> (google.com). When an administrator opens <strong>Settings \u2192 Taxonomy mapping<\/strong> (or clicks <strong>Refresh from source<\/strong> there), the plugin downloads Google's list of product categories, in the site's language, from <code>https:\/\/www.google.com\/basepages\/producttype\/taxonomy-with-ids.{locale}.txt<\/code>, so a Google category can be picked for each WooCommerce category. Only the language code is sent with the request; no data about the store, its products or its customers. The list is then kept for 30 days. Google's <a href=\"https:\/\/policies.google.com\/terms\">Terms of Service<\/a> and <a href=\"https:\/\/policies.google.com\/privacy\">Privacy Policy<\/a> apply.<\/li>\n<\/ul>\n\n<p>The feeds themselves are files on your site: the channels you submit their URL to fetch them, and the plugin sends nothing to them.<\/p>\n\n<!--section=installation-->\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>WooCommerce 7.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>Pretty permalinks enabled (Settings \u2192 Permalinks \u2192 any structure other than \"Plain\")<\/li>\n<\/ul>\n\n<h4>Install<\/h4>\n\n<ol>\n<li>Go to <strong>Plugins \u2192 Add New<\/strong>, search for \"Universal Product Feed\" and click <strong>Install Now<\/strong>, then <strong>Activate<\/strong><\/li>\n<li>A new menu appears under <strong>WooCommerce \u2192 Product Feeds<\/strong><\/li>\n<\/ol>\n\n<h4>Create your first feed<\/h4>\n\n<ol>\n<li>Go to <strong>WooCommerce \u2192 Product Feeds<\/strong> and click <strong>Add new feed<\/strong><\/li>\n<li>Give it a name and pick the channel (e.g. Google Merchant Center)<\/li>\n<li>In the editor, toggle <strong>Enabled<\/strong> and <strong>Save<\/strong><\/li>\n<li>Click <strong>Run<\/strong>: the feed is generated right away<\/li>\n<li>Copy the URL shown in the dashboard and submit it to the channel (Google Merchant Center, Meta Commerce Manager, TikTok Shop Seller Center\u2026)<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20there%20a%20limit%20on%20products%20or%20feeds%3F\"><h3>Is there a limit on products or feeds?<\/h3><\/dt>\n<dd><p>No. Create as many feeds as you need, with as many products as your store has.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20install%20action%20scheduler%20separately%3F\"><h3>Do I need to install Action Scheduler separately?<\/h3><\/dt>\n<dd><p>No. WooCommerce already bundles Action Scheduler.<\/p><\/dd>\n<dt id=\"how%20often%20is%20the%20feed%20regenerated%3F\"><h3>How often is the feed regenerated?<\/h3><\/dt>\n<dd><p>Each feed can regenerate on its own schedule: turn it on in the feed's <strong>Schedule<\/strong> tab and pick every 15 minutes, hourly, daily or weekly (the schedule is off for a new feed). A WP-Cron event checks every 15 minutes which feeds are due and queues their generation. WP-Cron runs when the site gets visits: on a low-traffic site, a real cron job calling <code>wp-cron.php<\/code> keeps the schedules on time.<\/p>\n\n<p>In addition, every time a product is created, updated or deleted, the next request for the feed gets the current file and its rebuild is queued in the background. The <strong>Run<\/strong> button regenerates a feed immediately.<\/p><\/dd>\n<dt id=\"my%20host%20answers%20%2Ffeeds%2Fxxx.xml%20with%20a%20404.\"><h3>My host answers \/feeds\/xxx.xml with a 404.<\/h3><\/dt>\n<dd><p>Make sure pretty permalinks are enabled at <strong>Settings \u2192 Permalinks<\/strong>. Click <strong>Save Changes<\/strong> even if you don't change the structure: WordPress then regenerates its rewrite rules.<\/p><\/dd>\n<dt id=\"where%20is%20the%20feed%20file%20stored%3F\"><h3>Where is the feed file stored?<\/h3><\/dt>\n<dd><p>In the WordPress uploads directory, at <code>wp-content\/uploads\/gdupf\/feeds\/<\/code>. An <code>.htaccess<\/code> file there blocks direct access to files being written, so crawlers never receive a half-written feed.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20variations%3F\"><h3>Does the plugin support variations?<\/h3><\/dt>\n<dd><p>Yes. Each variation is a feed item of its own, with its own link (the option is preselected on the product page), its own image when it has one, and <code>item_group_id<\/code> pointing to the parent product.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20the%20google%20product%20category%3F\"><h3>How do I set the Google product category?<\/h3><\/dt>\n<dd><p>Go to <strong>Settings \u2192 Taxonomy mapping<\/strong> and assign a Google category to each WooCommerce category. Sub-categories inherit the mapping of their closest mapped parent.<\/p><\/dd>\n<dt id=\"i%20get%20%22feed%20not%20found%22%20or%20%22503%20service%20unavailable%22.\"><h3>I get \"Feed not found\" or \"503 Service Unavailable\".<\/h3><\/dt>\n<dd><ul>\n<li>\"Feed not found\": the feed is not enabled (save it with <strong>Enabled<\/strong> toggled on), or the URL doesn't match an existing feed<\/li>\n<li>\"503\": a generation is running. Retry in a few seconds; the file is available once the first run completes<\/li>\n<\/ul><\/dd>\n<dt id=\"can%20i%20get%20feeds%20for%20idealo%2C%20kelkoo%2C%20skroutz%2C%20heureka%20or%20ceneo%3F\"><h3>Can I get feeds for Idealo, Kelkoo, Skroutz, Heureka or Ceneo?<\/h3><\/dt>\n<dd><p>Yes, with the Pro add-on, which adds 39 channels including the European price comparison engines. You can also build a Custom CSV feed in the free plugin for any channel that takes a CSV file.<\/p><\/dd>\n<dt id=\"how%20do%20i%20uninstall%20cleanly%3F\"><h3>How do I uninstall cleanly?<\/h3><\/dt>\n<dd><p>Deactivate the plugin, then delete it from <strong>Plugins \u2192 Installed Plugins<\/strong>. Its uninstall script removes everything the plugin created: feeds, settings, the logs table, the generated files and the scheduled events.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>New: running a feed by hand shows a notice with the number of products exported, or the error.<\/li>\n<li>Fix: no \"translation loaded too early\" notice when another plugin reads the cron schedules while plugins load.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: Google Merchant Center, Facebook \/ Meta, TikTok, Bing, Pinterest, Snapchat and Custom CSV feeds, mapping editor, Google category mapping, filters, background generation, logs and preview.<\/li>\n<\/ul>","raw_excerpt":"Product feeds for Google Merchant Center, Facebook \/ Meta, TikTok, Bing, Pinterest and Snapchat, plus a custom CSV feed, from your WooCommerce store.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/387736","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=387736"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/geekodev"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=387736"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=387736"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=387736"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=387736"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=387736"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=387736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}