=== FeedRobin Connector ===
Contributors: feedrobin
Tags: woocommerce, product feed, google shopping, merchant center, facebook catalog
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Publishes your WooCommerce catalogue as a Google-format product feed at a private URL, ready for Merchant Center, Meta, Bing or FeedRobin.

== Description ==

WooCommerce does not generate a product feed. Every channel that sells your
products wants one — Google Merchant Center, Facebook and Instagram catalogues,
Microsoft/Bing Shopping, price comparison sites — and each of them expects a
file your store does not produce.

This plugin adds that file. One URL, generated when it is fetched, so it is
never out of date: change a price in WooCommerce and the next fetch has it.

**What goes into the feed**

* Every published, visible product, with variations as separate items tied to their parent by `item_group_id` — which is how a channel knows your blue Large and your red Small are one product.
* Prices including tax, and the sale price separately when a sale is actually running (not merely scheduled).
* Stock status, including backorder.
* Barcodes from WooCommerce's own GTIN field. Where a product genuinely has none, the feed says so explicitly rather than leaving the channel to guess.
* Brand, read from WooCommerce's brand taxonomy or from Perfect Brands, YITH or a `brand` attribute — wherever your store already keeps it.
* Colour and size as their own fields, read from your product attributes in English or German and resolved to the name a shopper sees, not the slug — a channel can filter on a field, it cannot filter on a word in the title.
* Your full category path, the whole image gallery, and shipping weight.

**What it deliberately leaves alone**

* Your custom labels. All five belong to your campaign segmentation in Google Ads; a feed that fills one can change how your bidding groups products.
* Your SKU is never sent as a manufacturer part number. It identifies the product in your shop, not at its maker, and claiming otherwise is how catalogues get flagged.
* Nothing is written to your products. The plugin stores one option — the token in your feed URL — and removes it on uninstall.

**Do you need FeedRobin?**

No. The URL is yours: paste it into Merchant Center and you are done. FeedRobin
adds what a feed on its own cannot — the other channels in their own formats,
checks for the errors that get products rejected, and rules to fix data without
touching the store. There is a button for it on the settings screen, and
ignoring it costs you nothing.

**External services**

The plugin makes no outbound requests of any kind. It does not send your
catalogue, your settings or any usage data anywhere. The **Connect to
FeedRobin** button is an ordinary link: pressing it opens feedrobin.com in a
new tab with your feed URL prefilled, and nothing is transmitted unless you
choose to connect there. FeedRobin is a separate paid service with its own
[terms](https://www.feedrobin.com/terms) and
[privacy policy](https://www.feedrobin.com/privacy); using this plugin does not
require it.

== Installation ==

1. Install and activate the plugin. WooCommerce must be active.
2. Go to **WooCommerce → FeedRobin**.
3. Copy the feed URL, or press **Connect to FeedRobin**.

== Frequently Asked Questions ==

= Is my feed URL public? =

It is unguessable rather than secret: it carries a random token, and the page
is served with a noindex header, so it will not be crawled or listed. Everything
in it is already on your storefront. If the URL leaks, create a new one from the
settings screen — the old address stops working immediately.

= Does it slow my store down? =

The feed is only built when something fetches it, in batches of 200 products,
and it is never built while a shopper is on the site. Nothing is added to your
storefront pages.

= I use a caching plugin — does that break the feed? =

No. The feed tells page caches not to store it (the constant WP Super Cache,
W3 Total Cache, LiteSpeed and WP Rocket all honour) and closes any output
buffer they have opened, so a channel always fetches the current catalogue
rather than a copy. That matters more than it sounds: a cached feed does not
look broken, it looks empty.

= My feed URL returns "not found". =

Go to **Settings → Permalinks** and press Save once. WordPress rebuilds its
rewrite rules, and the pretty feed URL starts working. The plugin also serves a
query-string version of the same feed for stores with plain permalinks.

= Variable products: what appears in the feed? =

The variations, not the parent — those are what a shopper buys and what carries
the price and stock. Each one keeps the parent's id as `item_group_id`, and its
title says which variation it is.

== Screenshots ==

1. The whole plugin: your feed URL, a button that opens it, and one that hands it to FeedRobin. Nothing else to configure.

== Changelog ==

= 1.0.0 =
* First release.
