{"id":363968,"date":"2026-09-10T13:27:47","date_gmt":"2026-09-10T13:27:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/advanced-product-feed-for-woocommerce\/"},"modified":"2026-09-10T13:27:28","modified_gmt":"2026-09-10T13:27:28","slug":"svmpforge-product-feed-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/svmpforge-product-feed-for-woocommerce\/","author":23560502,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"SVMPForge Product Feed for WooCommerce","header_author":"SVMP Forge","header_description":"Generate optimized WooCommerce product feeds for Google Merchant Center and Meta (Facebook & Instagram) in XML or CSV, with product filtering, category and attribute mapping and scheduled refresh.","assets_banners_color":"d6e4e8","last_updated":"2026-09-10 13:27:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/svmpforge.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":50,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"svmpforge","date":"2026-09-10 13:27:28","revision":3689974}},"upgrade_notice":{"1.0.2":"<p>All features are unlimited and fully enabled. Stronger input sanitization and several reliability fixes.<\/p>","1.0.1":"<p>Directory review fixes: distinctive name, fully enabled included features, input sanitization, and scoped PHP time limits.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3689974,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3689974,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3689974,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3689974,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The feeds list, showing each feed's channel, format, schedule and public feed URL.","2":"Step 1 of the feed wizard: choosing the destination country and channel.","3":"Step 2: confirming how WooCommerce product data maps to the channel's fields.","4":"Step 3: a live preview of how products will appear, with a feed health check.","5":"Mapping WooCommerce categories to Google's product taxonomy.","6":"Generation logs and the system status screen."}},"plugin_section":[],"plugin_tags":[51229,65424,64553,5418,286],"plugin_category":[45],"plugin_contributors":[280097],"plugin_business_model":[],"class_list":["post-363968","plugin","type-plugin","status-publish","hentry","plugin_tags-google-shopping","plugin_tags-merchant-center","plugin_tags-product-export","plugin_tags-product-feed","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-svmpforge","plugin_committers-svmpforge"],"banners":{"banner":"https:\/\/ps.w.org\/svmpforge-product-feed-for-woocommerce\/assets\/banner-772x250.png?rev=3689974","banner_2x":"https:\/\/ps.w.org\/svmpforge-product-feed-for-woocommerce\/assets\/banner-1544x500.png?rev=3689974","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/svmpforge-product-feed-for-woocommerce\/assets\/icon-128x128.png?rev=3689974","icon_2x":"https:\/\/ps.w.org\/svmpforge-product-feed-for-woocommerce\/assets\/icon-256x256.png?rev=3689974","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>SVMPForge Product Feed for WooCommerce creates optimized product feeds from your WooCommerce store. Filter which products are included, map your data to the correct attributes for each destination, and serve the feed from a clean public URL that the channel fetches on a schedule.<\/p>\n\n<p>Google Merchant Center gets the deepest support \u2014 full Google Shopping attribute coverage plus a bundled copy of Google's product taxonomy for category mapping \u2014 and the same feed engine drives the Meta (Facebook &amp; Instagram) catalog feed.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Google Shopping<\/strong> and <strong>Meta (Facebook &amp; Instagram)<\/strong> channels.<\/li>\n<li>Output formats: <strong>XML (RSS 2.0)<\/strong> and <strong>CSV<\/strong>.<\/li>\n<li>Product types: <strong>Simple<\/strong>, <strong>Variable<\/strong>, <strong>Grouped<\/strong> and <strong>External\/Affiliate<\/strong>, with variations exported as individual items carrying the correct item group id.<\/li>\n<li>Google Shopping attributes: id, title, description, link, image link, availability, price and sale price, brand, GTIN\/MPN, condition, Google product category, product type, basic shipping and tax.<\/li>\n<li>Product filtering by <strong>category<\/strong>, <strong>tags<\/strong>, <strong>brands<\/strong>, <strong>stock status<\/strong>, <strong>product type<\/strong>, <strong>price range<\/strong>, <strong>SKU<\/strong>, featured and on-sale products, plus data-quality toggles (skip products without an image or price).<\/li>\n<li>Attribute mapping from standard WooCommerce fields, product attributes, taxonomies, custom fields (post meta) and static values, with optional fallback values.<\/li>\n<li>Map WooCommerce categories to the bundled Google product taxonomy, with parent-to-child inheritance.<\/li>\n<li>One-click <strong>feed duplication<\/strong>.<\/li>\n<li>Manual generation plus <strong>hourly, twice-daily, daily and weekly<\/strong> scheduled refresh, processed in the background with Action Scheduler.<\/li>\n<li>Large catalogs generated as resumable background runs with a live progress bar \u2014 generation never hits a PHP or web-server timeout, and an interrupted run picks up where it left off.<\/li>\n<li>Public feed URLs with unguessable tokens, or <strong>private URLs<\/strong> protected by a secret key.<\/li>\n<li>Generation logs and a system status screen.<\/li>\n<li>Feed export\/import as JSON.<\/li>\n<\/ul>\n\n<h4>Optional add-on<\/h4>\n\n<p>Everything described above is included and fully functional in this plugin, with no account, licence or usage limit of any kind.<\/p>\n\n<p>A <a href=\"https:\/\/svmpforge.com\/pricing\/\">separate add-on<\/a>, distributed outside WordPress.org, adds further destinations and writers. It is entirely optional: none of its code ships here, and nothing in this plugin is disabled or reduced without it.<\/p>\n\n<h3>Trademarks<\/h3>\n\n<p>WooCommerce and WordPress are trademarks of their respective owners. Google, Google Shopping and Google Merchant Center are trademarks of Google LLC. Meta, Facebook and Instagram are trademarks of Meta Platforms, Inc. This plugin is an independent project and is not affiliated with, endorsed by or sponsored by any of them. These names are used only to describe the services this plugin generates feeds for.<\/p>\n\n<p>The bundled Google product taxonomy file (<code>data\/taxonomy-with-ids.en-US.txt<\/code>, version 2021-09-21) is published by Google for merchants and feed tools and is redistributed unmodified as reference data. See <code>data\/README.txt<\/code> for full provenance.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/svmpforge-product-feed-for-woocommerce<\/code> directory, or install the plugin through the Plugins screen in WordPress.<\/li>\n<li>Make sure WooCommerce is installed and active.<\/li>\n<li>Activate the plugin through the Plugins screen in WordPress.<\/li>\n<li>Go to <strong>Product Feeds<\/strong> in the admin menu to create your first feed.<\/li>\n<li>Configure the feed, save it, and click <strong>Generate<\/strong> to build the feed file. Copy the feed URL into your Google Merchant Center account.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20require%20woocommerce%3F\"><h3>Does this plugin require WooCommerce?<\/h3><\/dt>\n<dd><p>Yes. WooCommerce must be installed and active. The plugin will show a notice and stay inactive until WooCommerce is available.<\/p><\/dd>\n<dt id=\"which%20output%20formats%20are%20supported%3F\"><h3>Which output formats are supported?<\/h3><\/dt>\n<dd><p>XML (RSS 2.0) and CSV \u2014 the two formats Google Merchant Center and Meta most commonly ingest. Both are fully available.<\/p><\/dd>\n<dt id=\"how%20many%20feeds%20can%20i%20create%3F\"><h3>How many feeds can I create?<\/h3><\/dt>\n<dd><p>As many as you like. This plugin applies no feed limit, no trial period and no licence check of any kind.<\/p><\/dd>\n<dt id=\"can%20i%20schedule%20automatic%20feed%20updates%3F\"><h3>Can I schedule automatic feed updates?<\/h3><\/dt>\n<dd><p>Yes. Each feed can be set to regenerate hourly, twice daily, daily or weekly at a time you pick. Generation runs in the background using Action Scheduler (bundled with WooCommerce).<\/p><\/dd>\n<dt id=\"are%20product%20variations%20supported%3F\"><h3>Are product variations supported?<\/h3><\/dt>\n<dd><p>Yes. Variable products can be exported as individual variations, each with the correct item group id so Google groups them together.<\/p><\/dd>\n<dt id=\"where%20are%20feed%20files%20stored%3F\"><h3>Where are feed files stored?<\/h3><\/dt>\n<dd><p>Generated feed files are written to a protected directory inside your uploads folder and served through a clean feed URL such as <code>https:\/\/your-store.com\/apfw-feed\/{unique-token}.xml<\/code>. The token is a random identifier generated per feed, so feed URLs cannot be guessed. On sites using Plain permalinks the feed is served through an equivalent query-string URL instead.<\/p><\/dd>\n<dt id=\"why%20do%20some%20csv%20values%20start%20with%20an%20apostrophe%3F\"><h3>Why do some CSV values start with an apostrophe?<\/h3><\/dt>\n<dd><p>Values beginning with <code>=<\/code>, <code>+<\/code>, <code>-<\/code> or <code>@<\/code> are escaped with a leading apostrophe in CSV feeds, the same way WooCommerce's own CSV exporter does, so they cannot execute as formulas when a feed is opened in a spreadsheet. Plain numeric values are never escaped. Developers can disable this via the <code>apfw_csv_escape_formulas<\/code> filter.<\/p><\/dd>\n<dt id=\"which%20currency%20and%20language%20is%20the%20feed%20labelled%20with%3F\"><h3>Which currency and language is the feed labelled with?<\/h3><\/dt>\n<dd><p>Products are exported exactly as WooCommerce stores them, so every feed is labelled with your store currency and your site language. Developers can relabel a feed with the <code>apfw_feed_currency<\/code> and <code>apfw_feed_language<\/code> filters \u2014 for example from a multi-currency plugin that has actually converted the prices.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20phone%20home%3F\"><h3>Does this plugin phone home?<\/h3><\/dt>\n<dd><p>No. This plugin does not contact any external server. Licensing and automatic updates apply only to a separately sold add-on hosted outside WordPress.org.<\/p><\/dd>\n<dt id=\"where%20does%20the%20google%20product%20category%20list%20come%20from%3F\"><h3>Where does the Google product category list come from?<\/h3><\/dt>\n<dd><p>The plugin bundles Google's official product taxonomy file (version 2021-09-21), published by Google at https:\/\/www.google.com\/basepages\/producttype\/taxonomy-with-ids.en-US.txt for merchants and feed tools to use. It is redistributed unmodified as reference data so the category mapping screen can search and validate categories offline, without any external request. See <code>data\/README.txt<\/code> in the plugin folder for full provenance. Developers can supply a different or localized list with the <code>apfw_google_taxonomy<\/code> filter.<\/p><\/dd>\n<dt id=\"how%20are%20very%20large%20catalogs%20handled%3F\"><h3>How are very large catalogs handled?<\/h3><\/dt>\n<dd><p>Every generation \u2014 scheduled, manual or started from the editor \u2014 is one resumable run made of short steps. Each step processes products for a bounded number of seconds (it checks the clock and the memory limit after every product), appends them to a temporary file and saves its position; the next step continues from the last product written. Steps are chained in the background through Action Scheduler (bundled with WooCommerce) or, without it, through WP-Cron, so no single request can hit a PHP or web-server timeout and a host with a hard <code>max_execution_time<\/code> of 60 seconds still completes a 500 MB feed. Products are fetched with keyset pagination (<code>ID &gt; last id<\/code>), so the millionth product costs the same query as the first.<\/p>\n\n<p>If a step is killed by a fatal error, the run is not lost: the next step resumes from the saved position with the temporary file trimmed to its last good byte, so no product is ever duplicated. After three failures at the same position the run stops and the log names the product that caused it. When you start a generation from the editor, the browser drives the steps so you see live progress; closing the tab hands the run to the background and the feeds list keeps showing its progress. The finished file is swapped into place atomically, so the previously published feed is never served half-written, and feeds of 1 MB or more are also stored pre-compressed for clients that accept gzip. Feed URLs support HEAD and byte-range requests, and very large files can be handed to the web server (X-Sendfile \/ X-Accel-Redirect) from Settings.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Removed the feed-count cap and every trace of its enforcement \u2014 feeds are unlimited.<\/li>\n<li>Removed the per-feed currency and language gate; feeds are labelled with the store currency and site language, adjustable with the new <code>apfw_feed_currency<\/code> and <code>apfw_feed_language<\/code> filters.<\/li>\n<li>Removed add-on advertising from the feed wizard; the destination picker now lists only channels this plugin can build.<\/li>\n<li>Sanitized every admin form array with <code>map_deep()<\/code> so sanitization is verifiable by static analysis.<\/li>\n<li>Sanitized the REST <code>search<\/code> parameter everywhere and made every request read array-safe.<\/li>\n<li>Refusing, rather than silently emptying, a category-map save with a missing or malformed payload.<\/li>\n<li>Rewrite-rule self-healing no longer runs on front-end requests.<\/li>\n<li>Uninstall and deactivation now clear queued feed-generation cron events, and uninstall removes the storage directory's <code>.htaccess<\/code>.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Distinctive plugin name and slug for the WordPress.org directory (<code>svmpforge-product-feed-for-woocommerce<\/code>).<\/li>\n<li>All features included in this plugin are fully usable without a license.<\/li>\n<li>Sanitize settings and feed config before they are passed to filters.<\/li>\n<li>Raise PHP time limits only during feed generation (never on the Status screen) and restore them afterwards.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: Google Shopping and Meta feeds, XML\/CSV output, full core Google Shopping attribute support, category and stock filtering, category and attribute mapping, daily\/weekly scheduled generation, public feed URLs, logs and system status.<\/li>\n<\/ul>","raw_excerpt":"Generate optimized WooCommerce product feeds for Google Shopping (Google Merchant Center) and Meta (Facebook &amp; Instagram) in XML or CSV.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/363968","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=363968"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/svmpforge"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=363968"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=363968"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=363968"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=363968"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=363968"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=363968"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}