=== FeedAgentX – ChatGPT Ads Product Feed for WooCommerce ===
Contributors: feedagentx
Tags: chatgpt ads, openai ads, product feed, woocommerce product feed, woocommerce
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 2.3.3
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

WooCommerce product feed for ChatGPT Ads. Validate your catalog and publish a hosted feed for OpenAI Ads Manager. Start free with 25 products.

== Description ==

**FeedAgentX turns your WooCommerce catalog into a ChatGPT Ads product feed.** It checks your products against OpenAI's product feed format, gives you a hosted feed URL for OpenAI Ads Manager and, on paid plans, sends price and availability updates through the Ads API.

ChatGPT Ads can be built straight from a product catalog. Before one of your products can appear in a product ad, Ads Manager needs a feed in OpenAI's format and a successful import. FeedAgentX Connect is the WordPress side of that setup: it links your store to [FeedAgentX](https://www.feedagentx.com), where you review the catalog, fix problems and publish the feed.

**Made for one channel: ChatGPT Ads**

* **OpenAI's feed format, field by field.** Titles, descriptions, prices, availability, images, brands, identifiers and variants are mapped to the columns Ads Manager expects.
* **Catch problems before the import.** Missing required fields, invalid GTINs, non-public product or image URLs and variant issues show up in FeedAgentX before OpenAI rejects a row.
* **A hosted feed for OpenAI Ads Manager.** One private URL with its own username and password, fetched on the schedule you set in Ads Manager. You can also download the CSV.
* **Price and stock updates.** After the first import, paid plans can send supported title, price and availability changes for existing items through the OpenAI Ads API.
* **Variable products included.** Each WooCommerce variation becomes its own feed row, as OpenAI's format requires.
* **Your store stays in charge.** FeedAgentX reads your catalog with a revocable token. It does not edit products and never reads customer or order data.

**How it works**

1. Install this plugin and copy the API token from **FeedAgentX → Connection**.
2. Create a free FeedAgentX account, add your store URL and token, and wait for the first catalog sync.
3. Review validation issues and choose which products go to ChatGPT Ads.
4. Create the hosted feed and add it in OpenAI Ads Manager, then check the first import.
5. Optionally connect the Ads API for price and availability updates.

**Plans**

The Free plan covers 1 store and up to 25 products with a hosted feed, and needs no card. Paid plans raise the product limit, add stores on Growth and Pro, include Ads API updates and start with a 14-day free trial. See [plans and limits](https://www.feedagentx.com/pricing/).

**What FeedAgentX does not do**

FeedAgentX does not create campaigns, process orders or payments, or enable checkout inside ChatGPT. OpenAI controls account access, supported markets, catalog processing, product eligibility and ad approval. No placement, impressions or sales are guaranteed.

FeedAgentX is an independent service. It is not an official OpenAI or WooCommerce product.

**Guides**

* [Documentation](https://www.feedagentx.com/docs/): installing the plugin, the hosted feed, checking an import, API updates and what each error means.
* [ChatGPT Ads for WooCommerce stores: the complete guide](https://www.feedagentx.com/blog/chatgpt-ads-woocommerce-guide/)
* [ChatGPT product feed specification: every field explained](https://www.feedagentx.com/blog/chatgpt-product-feed-specification/)
* [OpenAI Ads Manager product feeds: setup and upload history](https://www.feedagentx.com/blog/openai-ads-manager-product-feed-setup/)

== Installation ==

**Requirements:** WordPress 6.2+, PHP 8.1+, WooCommerce 5.0+ and a FeedAgentX account (the Free plan is enough to start). OpenAI Ads account access is separate.

1. Install the plugin from **Plugins → Add New**, or upload the `.zip`, and activate it. WooCommerce must be active.
2. Go to **FeedAgentX → Connection** and copy the API token. Keep it private; use **Rotate token** if it is exposed.
3. Sign in to FeedAgentX, add your store URL and the token, and wait for the first catalog sync.
4. Review products and validation issues, then open the store's ChatGPT Ads setup and create a hosted feed URL.
5. In OpenAI Ads Manager, add a feed and enter the URL, username and password separately. Set its schedule and check the first import.
6. Optionally connect the Ads API after the import and confirm which feed holds this store's catalog.

Give Ads Manager the hosted URL or CSV from FeedAgentX, not the plugin's WordPress endpoints: those supply source data to FeedAgentX and are not an OpenAI-ready feed.

== Frequently Asked Questions ==

= How do I add my WooCommerce products to ChatGPT Ads? =
Install this plugin, connect your store in FeedAgentX and wait for the catalog sync. Fix any validation issues, create the hosted feed and add it to OpenAI Ads Manager. After a successful import you can build product-feed campaigns from the catalog; OpenAI still decides which products are eligible for ads.

= Are ChatGPT Ads and OpenAI Ads the same thing? =
ChatGPT Ads are the ads shown inside ChatGPT. Advertisers create and manage them, including product feeds, in OpenAI Ads Manager. This plugin prepares the product feed for that platform.

= What does a ChatGPT Ads product feed contain? =
One row per product or variation, with fields such as ID, title, description, link, price, availability, image, brand and identifiers. Our [field-by-field guide](https://www.feedagentx.com/blog/chatgpt-product-feed-specification/) explains each column.

= Do I need an OpenAI Ads API key? =
Not for the hosted feed, which uses its own URL, username and password. The optional Ads API connection uses an Ads API key for supported updates after the first import. An OpenAI model API key is not an Ads API key.

= Does it support variable products? =
Yes. A parent product can produce several feed rows, one per variation, so the number of rows may differ from the number of products in your store.

= Are price and stock updates instant? =
No. Timing depends on store synchronization, the feed fetch schedule and OpenAI's processing. Ads API updates cover supported fields on existing items; other changes need a full catalog refresh.

= Will my products appear in ChatGPT after I install the plugin? =
No. The plugin and FeedAgentX prepare your catalog. Account access, feed processing, ad eligibility and ad serving are controlled by OpenAI, and installing the plugin does not guarantee placement or enable checkout.

= Is there a free plan? =
Yes. The Free plan covers 1 store and up to 25 products with a hosted feed, and needs no card. A FeedAgentX account is required; the plugin does not generate a feed on its own.

= Does the plugin share customers or orders? =
No. The connection exposes product catalog data and store settings, not customer records, order data or payment details. See External services below.

= How is the store connection protected? =
Every catalog request needs the plugin's Bearer token. Rotate it on the Connection tab if it is exposed, then update the store in FeedAgentX. Never put it in a public URL or support screenshot.

= Where can I get help? =
Read the [setup guides](https://www.feedagentx.com/docs/). Signed-in FeedAgentX users can send a support request from the app; it includes the store's sync and feed status, so you do not need to send screenshots of this plugin.

== Screenshots ==

1. The Connection tab: three steps to connect the store, the Store URL and the API token you paste into FeedAgentX.
2. FeedAgentX's guided ChatGPT Ads setup: catalog, hosted feed, first import and optional API updates, each with its current state.
3. The synced catalog in FeedAgentX, with the validation issues that would keep a product out of the feed.
4. The hosted feed step: one private URL with its own username and password for OpenAI Ads Manager.
5. The Diagnostics tab: plugin and platform versions, product totals and pending changes.

== External services ==

This plugin connects your WooCommerce store to **FeedAgentX.com**, a third-party SaaS platform operated by FeedAgentX. The plugin itself does **not** make outbound calls; instead it exposes a token-protected catalog API that the FeedAgentX.com service pulls from after you connect your store. The token also permits sync acknowledgments and ownership requests; ownership changes require a WordPress administrator approval.

**What data is shared with FeedAgentX.com:**

* Product catalog data: titles, descriptions, prices, stock levels, SKUs, brands, categories, image URLs, product attributes, and variant data.
* Store details used in the feed: site name, home URL, site timezone, store currency, store and target countries, and the privacy policy, terms and return policy links with return acceptance and deadline.
* Catalog settings: search, checkout and Ads eligibility defaults, Ads metadata, excluded categories, who manages Ads settings, and product and pending-change totals.
* Plugin and platform metadata: plugin version, schema version, WordPress / WooCommerce / PHP versions, and when the API token was created (never the token itself).
* No customer records, order data or payment details are read or transmitted.

**When data is shared:**

* Only after a site administrator copies the API token from **FeedAgentX → Connection** and pastes it into a connected workspace at FeedAgentX.com.
* Every request must include a valid Bearer token. Rotating the token on the Connection tab replaces it immediately; requests with the old token stop working.

**Service provider:**

* FeedAgentX.com — Privacy Policy: <https://www.feedagentx.com/privacy/>
* FeedAgentX.com — Terms of Service: <https://www.feedagentx.com/terms/>

== Security and logs ==

* All endpoints require a Bearer token, compared in constant time and rotatable from the admin screen.
* Authenticated requests have a per-token rate limit (default 120/min); failed-auth requests have a per-IP limit (default 10/min) against brute force and log spam.
* Diagnostic logs are written to `wp-content/uploads/feedagentx-logs/` at INFO level and deleted after 14 days by default. They contain route names, error messages and migration events, plus the IP address of requests refused for a missing or invalid token or for exceeding the rate limit. Tokens are never logged.
* The log directory is protected by generated `.htaccess` (Apache) and `web.config` (IIS) files. **On Nginx**, add this inside your server block:

`
location ~* /wp-content/uploads/feedagentx-logs/ {
    deny all;
    return 404;
}
`

== Changelog ==

= 2.3.3 =
* New name: FeedAgentX – ChatGPT Ads Product Feed for WooCommerce.
* The admin menu shows the FeedAgentX "F" instead of a generic feed icon.
* Rewritten description, installation steps and FAQ.
* No changes to settings, stored data, the token or the REST API.

= 2.3.2 =
* Adds a "Connect your store in three steps" card to the Connection tab, with the Store URL to copy and links to sign up, sign in, the setup guide and support.
* The setup guide link opens the public documentation at www.feedagentx.com/docs.
* Clearing the change log now records the cleared history, so FeedAgentX re-reads the whole catalog on its next sync instead of missing changes deleted before it fetched them.
* The authenticated rate limit's help text says what it does: it cannot be turned off, and the minimum is 1.
* The readme lists every store detail shared with FeedAgentX and says that logs record the IP address of refused requests.

= 2.3.1 =
* Adds a descriptive plugin name and a brand icon to the admin header.
* Rewrites the plugin description. No changes to settings, stored data, the token or the REST API.

= 2.3.0 =
* Supports moving Ads settings to FeedAgentX, with explicit approval in WordPress before local Ads controls become read-only.
* Reports excluded category IDs, full paths and exact-term scope consistently in health and feed responses. Existing source category filters remain active.
* Keeps Search and Checkout settings independent of Ads ownership. Health requests never change ownership.

= 2.2.0 =
* Stable OpenAI product schema: canonical is_ads_eligible, independent search/Ads controls and explicit return acceptance.
* Stable wc-ID identities survive SKU edits. Event-ID pagination and acknowledgments prevent change loss. Run a full sync after upgrading.
* Active-sale prices follow WooCommerce's displayed tax convention; scheduled discounts are not published early.
* Brand resolution, GTIN checksum validation, variant options and public URL checks.

= 2.1.0 =
* OpenAI flat (file-upload) feed fields, eligibility flags with per-product overrides, per-product brand, seller block and target countries.

= 1.0.0 =
* Initial public release.

== Upgrade Notice ==

= 2.3.3 =
New plugin name, menu icon and description. Settings, the connection token and catalog data are unchanged.

= 2.3.2 =
Safer "Clear change log", a getting-started card and public setup guides. Settings, the connection token and catalog data are unchanged.

= 2.3.0 =
Update FeedAgentX before transferring Ads settings. Installing this release alone does not transfer ownership or remove category filters. Existing catalog settings are preserved.
