Title: Feedelity Product Feeds for WooCommerce
Author: feedelity
Published: <strong>October 2, 2026</strong>
Last modified: October 2, 2026

---

Search plugins

![](https://ps.w.org/feedelity-product-feeds/assets/banner-772x250.png?rev=3725515)

![](https://ps.w.org/feedelity-product-feeds/assets/icon.svg?rev=3725515)

# Feedelity Product Feeds for WooCommerce

 By [feedelity](https://profiles.wordpress.org/feedelity/)

[Download](https://downloads.wordpress.org/plugin/feedelity-product-feeds.0.8.2.zip)

 * [Details](https://wordpress.org/plugins/feedelity-product-feeds/#description)
 * [Reviews](https://wordpress.org/plugins/feedelity-product-feeds/#reviews)
 *  [Installation](https://wordpress.org/plugins/feedelity-product-feeds/#installation)
 * [Development](https://wordpress.org/plugins/feedelity-product-feeds/#developers)

 [Support](https://wordpress.org/support/plugin/feedelity-product-feeds/)

## Description

This plugin turns your WooCommerce catalogue into a product feed that Google Merchant
Center can fetch, and keeps it up to date. It runs entirely on your own site. There
is no account to create, nothing to register, and no usage data is sent anywhere.

#### How it works

 1. Install and activate the plugin.
 2. Open **Product Feeds** in the WordPress admin and press **Generate now**.
 3. Copy the Google Shopping feed URL.
 4. Paste it into Google Merchant Center as a scheduled fetch.
 5. Read the **Product data check** and fix the products it lists.

#### What you get, free

 * A Google Shopping feed in RSS 2.0 with Google’s `g:` namespace, served from your
   own domain.
 * Field mapping, so any WooCommerce attribute or custom field can fill any feed
   field.
 * Filters, to keep products out of one feed or all of them.
 * Category mapping from your WooCommerce categories to Google’s product taxonomy.
 * A product data check with actionable findings, suggested improvements and links
   to edit example products.
 * A per-product **Exclude from product feeds** checkbox, and a store-wide list 
   of categories to leave out.
 * A feed URL for each enabled channel on the Overview tab, with a copy button and
   a line saying where to paste it.
 * Background refresh, so the feed is rebuilt before Google fetches a stale one.

#### Feeds this plugin can serve

Every feed is served from your own site at a URL containing a private token:

 * **google.xml** – Google Merchant Center (RSS 2.0 with the `g:` namespace).
 * **microsoft.xml** – Microsoft Merchant Center, in the same format.
 * **meta.csv** – Meta Commerce Manager catalogue CSV.
 * **tiktok.csv** – TikTok catalogue CSV.
 * **awin.csv** – Awin product feed CSV.
 * **base.xml** – the full source feed, used only when connecting to Feedelity.

A fresh install switches on Google, Meta and Microsoft. Open **Choose feeds and 
exclude products** on Overview to select your channels. Sites upgrading from an 
earlier version keep every feed they already had switched on, and Microsoft stays
off until you turn it on, because an upgrade should not open a new public URL on
its own.

#### Product data check

After each build, the Overview tab names the feed and how many offers were checked,
separates issues to investigate from suggested improvements, and links to example
products. Checks include: offers with no GTIN, MPN or brand, the same GTIN or the
same feed ID on more than one offer, feed IDs taken from the WooCommerce product
ID, missing images, descriptions that are very short or identical to the title, 
titles and descriptions that had to be shortened, sale prices with no end date, 
backorders with no availability date, and offers with no brand. Each one is explained
in plain English with up to five example products. Empty feeds are shown as having
no products checked. These local checks do not establish channel approval.

Nothing is invented to make a check pass. The plugin never writes a GTIN, MPN or
brand that your products do not have, and it cannot promise that Google will approve
anything: approval is Google’s decision.

#### Keeping products out

 * Tick **Exclude from product feeds** in the product data Advanced tab to drop 
   one product.
 * Choose categories to exclude on the Overview tab to drop a whole section of the
   catalogue.
 * Use the Filters tab for rules such as “no products under GBP 5”, globally or 
   per feed.

Products with no usable price are skipped automatically, because Merchant Center
rejects them.

#### Refresh

WP-Cron checks hourly and rebuilds any feed older than the refresh interval, which
is six hours by default. If Google fetches a feed that has gone stale, the last 
good file is served straight away and a rebuild is queued, so nobody waits for a
build. **Generate now** on Overview rebuilds the enabled feeds. If you have edited
any settings, the button changes to **Save changes and generate feeds** and saves
those changes first. The refresh details distinguish the next background check from
the configured rebuild interval.

When a rebuild fails, or comes back empty, the last good feed is kept and served,
and the failure is shown on the Overview tab.

#### Optional: connect to Feedelity

The feeds above work on their own and always will. Feedelity (https://feedelity.
app) is a separate hosted service that adds conditional rules with find-and-replace
and title templates, a view of which products a rule changes before you save it,
hosted feed URLs that keep serving when your site is slow or down, and one workspace
for several stores with roles and an activity log.

Saving a Feedelity connection key in Settings is the only thing that makes this 
plugin talk to Feedelity, and it changes nothing about the feeds your site serves.
A Feedelity account is needed only if you choose to connect to that service.

### External services

#### Feedelity

This plugin can connect to Feedelity, a hosted feed service at https://feedelity.
app, but only after an administrator saves a connection key on the Settings tab.
Until a key is saved, nothing is sent to Feedelity and no request is made.

Once a key is saved, the plugin sends a request to `https://feedelity.app/api/plugin/
exports` when the Product Feeds admin page’s Feed URLs or Settings tab is viewed,
and when you press Refresh on the Feed URLs tab. The request carries the connection
key in an Authorization header and your site’s home URL, so that Feedelity can tell
which shop is asking. The response contains your shop and workspace names and the
URLs and status of your Feedelity-hosted feeds. No product data is sent in this 
request.

Disconnecting removes the stored key and the cached list from your site. Revoke 
the key in Feedelity to invalidate it there as well.

Feedelity terms of service: https://feedelity.app/terms
 Feedelity privacy policy:
https://feedelity.app/privacy

#### Google product taxonomy

When an administrator presses **Download Google’s category list** on the Category
mapping tab, this site downloads one file from Google, `https://www.google.com/basepages/
producttype/taxonomy.en-US.txt`, and saves it so that the category mapping screen
can suggest and search Google categories. No data about your site or your products
is sent to Google in that request. Once the file is present, it is refreshed automatically
when it is more than 30 days old. If you never press the button, the file is never
downloaded, and category mapping still accepts typed category paths and numeric 
IDs.

Google terms of service: https://policies.google.com/terms
 Google privacy policy:
https://policies.google.com/privacy

#### Feed fetches by Google, Meta and Microsoft

These are not requests made by the plugin. When you paste one of your feed URLs 
into Google Merchant Center, Meta Commerce Manager or Microsoft Merchant Center,
that service then fetches the URL from your site on the schedule you set there. 
Your site answers the request; it does not initiate one. Stop it by removing the
feed from that service, or by regenerating your feed token.

## Screenshots

[⌊Overview: generate feeds and copy a URL, with a clear status and no account required.⌉⌊
Overview: generate feeds and copy a URL, with a clear status and no account required
.⌉[

Overview: generate feeds and copy a URL, with a clear status and no account required.

[⌊Feed URLs: local feeds and maintenance controls, separate from the optional hosted
service.⌉⌊Feed URLs: local feeds and maintenance controls, separate from the optional
hosted service.⌉[

Feed URLs: local feeds and maintenance controls, separate from the optional hosted
service.

[⌊Product data check: findings and suggested improvements, with links to edit example
products.⌉⌊Product data check: findings and suggested improvements, with links to
edit example products.⌉[

Product data check: findings and suggested improvements, with links to edit example
products.

[⌊Settings: refresh interval and product defaults, with the optional connection 
and advanced settings below.⌉⌊Settings: refresh interval and product defaults, with
the optional connection and advanced settings below.⌉[

Settings: refresh interval and product defaults, with the optional connection and
advanced settings below.

[⌊Field mapping: product identifiers, sources and live preview; less-used groups
can stay collapsed.⌉⌊Field mapping: product identifiers, sources and live preview;
less-used groups can stay collapsed.⌉[

Field mapping: product identifiers, sources and live preview; less-used groups can
stay collapsed.

[⌊Choose feeds and exclude products from Overview.⌉⌊Choose feeds and exclude products
from Overview.⌉[

Choose feeds and exclude products from Overview.

[⌊Google category mapping for WooCommerce categories.⌉⌊Google category mapping for
WooCommerce categories.⌉[

Google category mapping for WooCommerce categories.

## Installation

#### From the WordPress plugin directory

 1. Install and activate WooCommerce.
 2. In WordPress, go to **Plugins > Add New**, search for “Feedelity Product Feeds”,
    then install and activate it.
 3. Open **Product Feeds** in the admin menu.

#### From a ZIP file

 1. Install and activate WooCommerce.
 2. Go to **Plugins > Add New > Upload Plugin**, choose the ZIP, install and activate.
 3. Open **Product Feeds** in the admin menu.

#### Adding the feed to Google Merchant Center

 1. Press **Generate now** on the Overview tab and wait for the build to finish.
 2. Copy the Google Shopping feed URL with the **Copy** button.
 3. In Merchant Center, open **Products**, then **Add products**.
 4. Choose to add products from a file, on a schedule.
 5. Paste the feed URL. Google fetches it over HTTPS.
 6. Set the fetch frequency to daily, at a time that suits your store.
 7. Set the country and language to match the prices and text in the feed.
 8. Save. Google can take a few days to process a new feed.

## FAQ

### Do I need an account to use this?

No. There is no registration, no key, no trial and no account. Install it, press
Generate now, and the feed URL works. Connecting to Feedelity is entirely optional
and off unless you save a key yourself.

### How often is the feed updated?

WP-Cron checks hourly and rebuilds any feed older than the refresh interval, six
hours by default. WordPress runs scheduled jobs when the site gets a visit, including
when Google fetches the feed, so a quiet site refreshes on its next visit rather
than exactly on the hour. You can change the interval on the Settings tab, or press**
Generate now** at any time.

### My feed URL has a token in it. Is the feed private?

The URL contains a random token so that it is not guessable, but anyone holding 
the URL can read your product data. Treat it like a password: paste it into Merchant
Center, do not post it publicly. If a URL gets out, press **Regenerate token** on
the Feed URLs tab. That invalidates every existing feed URL, so you will need to
paste the new ones into each channel.

### Why are some products missing from the feed?

A product is left out when it has no usable price, when its catalogue visibility
is Hidden, when it is password protected, when it is not published, when it is a
grouped or external/affiliate product, when you ticked **Exclude from product feeds**
on it, when one of its categories is on the excluded list, or when one of your filter
rules drops it. The Overview tab reports how many products were excluded and how
many were skipped for having no price.

### Why does the feed say identifier_exists is no?

The plugin only sends `no` when you explicitly tick **No product identifiers assigned**
in the product data **Advanced** tab, or supply that value through field mapping.
For a variable product, the checkbox applies to all its variations. Only confirm
this if no identifiers were ever assigned, for example for a handmade item. Missing
WooCommerce fields are not proof: check the packaging or supplier first. If a GTIN
or MPN is present alongside `identifier_exists=no`, the product data check reports
the conflict. The plugin never invents identifiers.

### Which prices does the feed use, and what about tax?

The price sent is the price a shopper sees in your shop, using your WooCommerce 
tax display setting. If your shop displays prices including tax, the feed contains
tax-inclusive prices. A sale price is sent only while the sale is actually running.
Products with no price, or a price of zero, are skipped rather than sent without
a price, because Merchant Center rejects those.

### Are variations supported?

Yes. Each published variation becomes its own offer, sharing an `item_group_id` 
with its siblings, with the variation attributes in the title and the parent’s description,
images and weight used where the variation has none. A variation only inherits the
parent’s GTIN when the parent has exactly one published variation, because the same
GTIN on several offers is treated by Merchant Center as duplicate products.

### How big a catalogue can it handle?

Products are read in batches of 200 and feed files are written incrementally. Builds
still run in one PHP request, and duplicate-identifier checks use additional memory.
Your hosting limits, other plugins and product complexity determine the practical
catalogue size. Test a representative catalogue on your host before relying on scheduled
updates; there is no universal speed or memory guarantee.

### How do I remove it?

Deactivate and delete it in Plugins. Deleting removes the plugin’s options, the 
per-product exclusion and identifier-confirmation flags, the cached Google category
list and every generated feed file, and it clears the scheduled refresh. Deleting
does not remove WooCommerce products, but does remove the plugin’s own product flags.
Deactivation alone retains settings and files.

### What does connecting to Feedelity change?

Nothing about the feeds your site serves: they keep working exactly as before, at
the same URLs. Connecting switches on the base.xml source feed, which is what Feedelity
reads, and adds a list of your Feedelity-hosted feeds to the Feed URLs tab. Disconnecting
removes the stored key from your site.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Feedelity Product Feeds for WooCommerce” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ feedelity ](https://profiles.wordpress.org/feedelity/)

[Translate “Feedelity Product Feeds for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/feedelity-product-feeds)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/feedelity-product-feeds/),
check out the [SVN repository](https://plugins.svn.wordpress.org/feedelity-product-feeds/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/feedelity-product-feeds/)
by [RSS](https://plugins.trac.wordpress.org/log/feedelity-product-feeds/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.8.2

 * Fix: point Plugin URI to the dedicated WordPress plugin page, distinct from the
   author homepage, for WordPress.org submission.

#### 0.8.1

 * Add the confirmed WordPress.org contributor account for directory submission.

#### 0.8.0

 * Put generation and feed URLs together on Overview; save pending edits before 
   generating.
 * Distinguish partial builds, empty product checks and overdue background checks.
 * Link product-data findings to product editing and separate suggested improvements.
 * Require explicit confirmation before reporting that no product identifiers were
   assigned.
 * Collapse advanced mapping groups and connection settings; retain your tab after
   saving.
 * Warn about the legacy folder’s destructive uninstaller and correct migration 
   instructions.

#### 0.7.0

 * A standalone Google Shopping feed is now the point of the plugin: the Overview
   tab shows the feed’s status, its URL and the steps for adding it to Google Merchant
   Center.
 * Added a Microsoft Merchant Center feed (microsoft.xml). Fresh installs switch
   on Google, Meta and Microsoft; sites upgrading keep the feeds they already had,
   with Microsoft off until they turn it on.
 * Added a product data check that reports, after every build, what the feed’s own
   data would cause in Merchant Center, with example products. Nothing is invented
   to make a check pass.
 * Prices now follow your WooCommerce tax display setting instead of the raw stored
   price, so the feed matches what a shopper sees.
 * Products with no usable price are skipped instead of being sent without a price.
 * Backorders with no availability date are reported as out of stock by default,
   which Merchant Center accepts; the old behaviour is still available in the availability
   mapping.
 * `identifier_exists` is now sent as `no` when a product has no GTIN, MPN or brand.
 * Titles are capped at 150 characters and descriptions at 5000, on a word boundary,
   and the shortening is reported in the product data check.
 * A variation only inherits its parent’s GTIN when the parent has exactly one published
   variation, so a group no longer shares one GTIN.
 * Shipping weights in pounds are now sent as `lb`, the unit Google expects.
 * Products whose catalogue visibility is “Search results only” are now included,
   since their pages are live.
 * Added an **Exclude from product feeds** checkbox to the product data Advanced
   tab, and a store-wide excluded categories list on the Overview tab.
 * The last good feed is kept and served when a rebuild fails or comes back empty,
   and the failure is shown on the Overview tab.
 * The plugin folder and text domain are now `feedelity-product-feeds`.

#### 0.6.1

 * Do not follow redirects with a connection key; bound hosted-feed responses.
 * Remove stale hosted links after a failed refresh and explain rejected keys accurately.
 * Add installation and external-service documentation and reproducible ZIP packaging.

#### 0.6.0

 * Optional connection-key setup and Feedelity-hosted export listing in WordPress.

## Meta

 *  Version **0.8.2**
 *  Last updated **23 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [google shopping](https://wordpress.org/plugins/tags/google-shopping/)[merchant center](https://wordpress.org/plugins/tags/merchant-center/)
   [meta](https://wordpress.org/plugins/tags/meta/)[product feed](https://wordpress.org/plugins/tags/product-feed/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/feedelity-product-feeds/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/feedelity-product-feeds/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/feedelity-product-feeds/reviews/)

## Contributors

 *   [ feedelity ](https://profiles.wordpress.org/feedelity/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/feedelity-product-feeds/)