Feedelity Product Feeds for WooCommerce

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

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

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.