Feedship AI Catalog Feeds for WooCommerce

Description

Feedship AI Catalog Feeds is a free WooCommerce plugin that publishes your product catalog in the machine-readable formats used by AI shopping channels. It generates an OpenAI ACP product feed built to OpenAI’s published Commerce Feed Reference (JSONL & CSV), writes /llms.txt, /llms-full.txt and /llms-commerce.txt catalog files on your own server, serves ACP and UCP discovery manifests, and audits every product with a deterministic 0-100 AI Readiness Score. No coding required.

Everything runs on your own WordPress server. Feeds are generated on the schedule you choose – WordPress cron, your own cron URL, or a manual button – and written as static files. The plugin does not require external accounts, API keys, or a SaaS service.

The published files are plain text at public URLs on your site, so any reader that follows the relevant specification – an AI assistant, a crawler, or a feed validator – can fetch them like any other page.

Documentation | Installation | FAQ | Support

Feedship AI Catalog Feeds is an independent plugin: not affiliated with, endorsed by, or sponsored by OpenAI, Google, Anthropic, Perplexity, Shopify, or WooCommerce. All product names and trademarks belong to their respective owners and are used only to describe compatible protocols and destinations.

What the plugin publishes

  • OpenAI ACP product feed (JSONL & CSV) – one row per purchasable variation with identifiers, images and policy fields, built to OpenAI’s published Commerce Feed Reference
  • UCP discovery – a /.well-known/ucp manifest plus a UCP catalog search REST endpoint, per the Universal Commerce Protocol co-developed by Google and Shopify
  • ACP discovery – a /.well-known/acp.json manifest
  • The /llms.txt family – /llms.txt (store index), /llms-full.txt (full catalog with prices, stock and deep links) and /llms-commerce.txt (shipping, returns, payments), following the llmstxt.org format
  • Product JSON-LD – hasMerchantReturnPolicy, shippingDetails and FAQPage markup added through the schema filters of Yoast SEO or Rank Math when they are active
  • AI crawler monitor – reports whether GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, ClaudeBot, Google-Extended, CCBot and Amazonbot can reach your store

Setup in three steps

  1. Run the setup wizard – Map your Brand and GTIN sources and set your seller name and return policy URL. The 1-click field mapper reads identifiers from WooCommerce core, Yoast SEO, Rank Math, Germanized, or any custom meta key.
  2. Publish the files – The JSONL/CSV feeds, the /llms.txt family and the ACP/UCP manifests are generated automatically on your schedule.
  3. Submit your feed URL – Copy the hosted JSONL/CSV URL into OpenAI merchant onboarding for ChatGPT Shopping if you want to list your products there.

That is the whole setup. No XML editing, no spreadsheets, no external dashboard.

Features

OpenAI feed generation. Every purchasable variation becomes its own feed row, linked to the parent group_id with a consistent variant_dict (color, size, material). The WebP/AVIF-to-JPEG/PNG auto-resolver converts images so image_url meets the feed spec’s JPEG/PNG requirement. Titles and descriptions are HTML-entity decoded with a short-description fallback, and output is plain UTF-8 without a BOM so strict CSV and JSONL parsers read every header and row.

AI Readiness Score (0-100). A deterministic 7-point audit – required fields, brand, image format, description depth, GTIN/MPN identifiers, attributes, FAQ coverage – rendered as colored badges in Products > All Products, grouped into AI Ready / Needs Polish / AI Blocked, with one-click bulk recalculation. The same product data always produces the same score.

1-click product identity mapping. Pull GTIN, UPC, EAN, ISBN, MPN, and Brand from WooCommerce core, Yoast, Rank Math, Germanized, or any custom meta key, with Modulo-10 GTIN check-digit validation and a store-wide fallback brand.

The /llms.txt family, e-commerce flavored. /llms.txt (short store index), /llms-full.txt (every product with SKU, price, stock, and deep links), /llms-commerce.txt (shipping, returns, payments). Detects Yoast SEO or Rank Math and extends their output via native filters instead of duplicating files.

Dual-protocol discovery. /.well-known/acp.json (OpenAI ACP) and /.well-known/ucp (Google & Shopify’s UCP) manifests with automatic merchant logo resolution – Customizer logo, Site Icon fallback, or manual override.

Per-product control. A dedicated metabox on every product: readiness checks, brand and availability overrides, condition/gender/age-group fields, an exclude-from-all-feeds toggle, and conversational Q&A published in /llms-full.txt and as FAQPage JSON-LD.

AI crawler guard. Scans your effective robots.txt output, live-probes /llms.txt and your feed URL, and shows per-bot status for eight AI crawlers, so you can see which requests would be blocked before you submit your feed.

Generated on a schedule. Feeds are generated on the schedule you choose – WordPress cron, your own cron URL, or a manual button – not during shopper page loads. They are written atomically as static files and served straight from disk; the plugin adds no front-end scripts or styles, and generation never runs inside a shopper’s request.

Self-hosted, end to end. Everything is generated on your own server under wp-content/uploads/feedship-feeds/ with directory listing disabled. The plugin never sends your catalog to a third-party service – its only HTTP calls are loopback checks to your own site – and an optional clean uninstall removes every stored trace. The published feed and discovery URLs are public by design: that is how feed readers fetch them.

Developer friendly. WordPress hooks and filters throughout (like feedship_merchant_logo), catalog reads through WooCommerce CRUD APIs, and declared HPOS + Cart/Checkout Blocks compatibility.

Screenshots

Installation

No coding required.

From WordPress (Recommended)

  1. Go to Plugins > Add New
  2. Search for “Feedship AI Catalog Feeds”
  3. Click Install Now, then Activate

Manual Installation

  1. Upload the feedship-ai-catalog-feeds folder to /wp-content/plugins/
  2. Activate from the Plugins page

After Activation

  1. Complete the 3-step setup wizard: map Brand/GTIN sources, set seller name and return policy URL, generate your first feed
  2. Copy your hosted JSONL/CSV feed URL from WooCommerce > Feedship AI Catalog Feeds and submit it through OpenAI merchant onboarding
  3. Review your AI Readiness Score badges under Products > All Products

Done. Your feeds and discovery files are now live for the channels you enabled.

FAQ

How do I get my WooCommerce products into ChatGPT Shopping?

Install the plugin, run the 3-step setup wizard, then copy your hosted JSONL feed URL from WooCommerce > Feedship AI Catalog Feeds and submit it through OpenAI’s merchant onboarding for ChatGPT Shopping. The feed rebuilds automatically on your chosen schedule, so prices, stock and new products stay current without manual exports. Listing your products in ChatGPT is handled by OpenAI’s onboarding process and is subject to their terms.

Does the free version require an external account, SaaS service, or API key?

It does not. All feed generation (.jsonl, .csv, /llms.txt, /llms-full.txt), discovery manifests (/.well-known/acp.json, /.well-known/ucp), and AI Readiness Scores run entirely on your WordPress server, without an external account, an API key, or a SaaS service.

What is the ACP?

ACP (Agentic Commerce Protocol) is OpenAI’s open standard, built with Stripe, for passing merchant catalog and checkout data to ChatGPT. This plugin publishes a /.well-known/acp.json discovery manifest plus a JSONL/CSV product feed following the published Commerce Feed Reference, so a WooCommerce store can provide the data the protocol describes without writing code.

What is /llms.txt and why does my WooCommerce store need one?

/llms.txt is a Markdown format (llmstxt.org) that gives AI models a compact map of your site instead of full HTML pages. This plugin publishes an e-commerce-flavored trio: /llms.txt (short store index), /llms-full.txt (every product with prices, stock and buy links) and /llms-commerce.txt (shipping, returns and payments guide). If Yoast SEO or Rank Math is already publishing /llms.txt, the plugin extends their output via native filters instead of duplicating the file.

What is the difference between /llms.txt, /llms-full.txt and /llms-commerce.txt?

/llms.txt is the concise index – your store summary plus section links. /llms-full.txt carries the full catalog: every purchasable variation with SKU, current price, availability, variation matrix and a direct product link. /llms-commerce.txt describes shipping options, return policy and accepted payment methods in one place.

What is the Universal Commerce Protocol (UCP)?

UCP is the open standard co-developed by Google and Shopify for AI-led buying flows. The plugin publishes a /.well-known/ucp discovery manifest and a UCP catalog search REST endpoint, so a store can expose the endpoints the protocol defines alongside the OpenAI ACP files.

Which AI platforms does this cover?

The plugin publishes files and endpoints for these destinations: an ACP feed for ChatGPT Shopping and OpenAI Ads; a UCP manifest and search endpoint for Google implementations; the /llms.txt family for any assistant that reads it; Product JSON-LD for search engines. The built-in crawler monitor reports reachability for GPTBot, OAI-SearchBot, ChatGPT-User, PerplexityBot, ClaudeBot, Google-Extended, CCBot and Amazonbot.

Do my products need GTIN, MPN or brand data?

The OpenAI Commerce Feed Reference expects product identifiers where available, and missing GTINs are among the most common product-feed errors. The 1-click field mapper pulls GTIN, UPC, EAN, ISBN, MPN and Brand from WooCommerce core, Yoast, Rank Math, Germanized or any custom meta key, validates GTIN check digits with Modulo-10, and can apply a store-wide fallback brand. The AI Readiness Score tells you exactly which products are missing what.

Why do feed images need to be JPEG or PNG?

OpenAI’s Commerce Feed spec requires image_url to be a direct JPEG or PNG file. If your store serves .webp or .avif images, those URLs do not meet the spec. The plugin automatically resolves the underlying JPEG/PNG image for every feed row.

What is the AI Readiness Score and how is it calculated?

A deterministic 0-100 score from a 7-point audit: required feed fields, brand, image format, description depth, GTIN/MPN identifiers, product attributes, and FAQ coverage. Scores render as colored badges in Products > All Products, the dashboard groups your catalog into AI Ready / Needs Polish / AI Blocked, and one click recalculates the whole catalog. Because the audit is deterministic, the same product data always produces the same score.

Will this conflict with Yoast SEO, Rank Math, or WooCommerce Core ACP?

The plugin is built to run alongside them. When Yoast SEO or Rank Math is active it owns /llms.txt: the plugin detects it and steps aside, appending its commerce appendix to their output through the native wpseo_llmstxt_content and rank_math/llmstxt/content filters rather than writing a second file. Product JSON-LD is enriched the same way through their schema filters (wpseo_schema_graph, rank_math/schema/json).

Does it support variable products with multiple sizes, colors or materials?

Yes. Every purchasable variation becomes its own feed row built to OpenAI’s published Commerce Feed Reference, linked to the parent group_id, with a variant_dict whose options always match the row’s top-level attributes and deep-link URL, unique attribute combinations only (duplicates are never exported), and per-variation deep links in /llms-full.txt.

How do I hide a single product from AI channels?

Open the product, find the Feedship AI Catalog Feeds box, and tick “Exclude this product from all AI feeds and llms.txt output”. The product disappears from the JSONL/CSV feeds and llms-full.txt, and its list badge switches to Excluded.

Where do the Conversational Q&A pairs I add in the product metabox show up?

They appear in /llms-full.txt inside the product block (as “FAQ: question / Answer: …” lines). They also power the FAQ check of the AI Readiness Score (2+ pairs = full points) and are published as FAQPage JSON-LD for search engines. The OpenAI JSONL/CSV feed intentionally does not carry them: the published OpenAI feed spec has no FAQ field, and unknown fields can make a feed row invalid.

Can I change how often the feeds rebuild?

Yes. Open WooCommerce > Feedship AI Catalog Feeds > Settings and pick Hourly, Twice a day, Once a day (default), Once a week, or External cron / manual only. There is also a toggle to rebuild automatically whenever product data changes (batched, about a minute after the save), and a secret rebuild URL you can call from a real cron job or uptime monitor.

Will this slow down my store?

Feeds are generated on a schedule (WordPress cron or your own cron URL), not during shopper page loads. They are written atomically as static files and served straight from disk; the plugin adds no front-end scripts or styles. Large catalogs are scanned in pages of 100 products so memory stays flat, and generation never runs inside a shopper’s request.

How many products can it handle?

The plugin does not impose its own product cap: one feed row is generated per purchasable variation in your catalog. Practical limits come from your hosting – generation time scales with catalog size, and very large catalogs are scanned in pages of 100 products so memory stays flat while generation runs in the background. Output is a static file, so serving a 10,000-row feed works the same way as serving a 10-row one.

Does this replace my Google Shopping feed?

It is not a replacement – it targets a different channel. Google Shopping integrations export XML for Google Merchant Center; this plugin publishes the AI-native formats: OpenAI’s ACP JSONL/CSV feed, UCP discovery for Google implementations, the /llms.txt family for LLMs, plus an AI Readiness Score, FAQPage JSON-LD and AI crawler monitoring. All of those files are generated and stored on your own server.

Will AI crawlers be blocked by my robots.txt, security plugin or firewall?

The AI Bot Allowlist & Crawler Monitor scans your effective robots.txt output for the eight AI crawlers, live-probes /llms.txt and your feed URL, and shows which bots are blocked so you can fix the cause before you submit your feed. WordPress-level blocks (from SEO or security plugins) are detected directly; hosting firewalls and CDNs sit outside WordPress, and the monitor tells you when a check cannot see that far.

Which prices are exported – with or without tax?

The same amounts your storefront displays. The plugin asks WooCommerce for the display price (wc_get_price_to_display), so your tax settings – “prices entered with tax” and “display prices in the shop” – decide whether feeds carry tax-inclusive or tax-exclusive amounts. Sale prices are exported the same way next to the regular price.

Is WordPress multisite supported?

Activate it per site: the plugin is single-site focused, and network activation does not propagate settings, schedules or rewrite rules to subsites. When the optional clean uninstall runs, it does remove data from every site in the network.

I already have a physical /llms.txt file in my web root. Which one wins?

The physical file – web servers serve it directly before WordPress runs. Remove or rename it and re-save Settings > Permalinks if you want this plugin to manage /llms.txt. Yoast SEO and Rank Math users need nothing: the plugin hands /llms.txt over to them and merges its commerce appendix into their output.

Is any store or product data sent to a third-party server?

No. Feeds, llms.txt files, manifests and scores are generated and stored on your own server under wp-content/uploads/feedship-feeds/ (directory listing disabled), and the plugin makes no calls to third-party services carrying your catalog data – its only HTTP requests are loopback checks to your own site during the built-in diagnostics. Deactivating stops generation; the optional clean uninstall removes every stored trace. Note that the published feed and discovery URLs are intentionally public: AI agents must be able to read them, exactly like your product pages.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“Feedship AI Catalog Feeds for WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

1.0.0

  • Initial release: OpenAI ACP & ChatGPT Shopping product feeds (JSONL/CSV), /llms.txt + /llms-full.txt + /llms-commerce.txt generators, dual-protocol discovery manifests (/.well-known/acp.json & /.well-known/ucp), UCP catalog search REST endpoint, and daily automatic rebuilds.
  • Smart variable product flattening: one feed row per purchasable variation, unique option combinations only, parent group_id linking, and per-variation add-to-cart deep links in llms-full.txt.
  • Built to OpenAI’s published Commerce Feed Reference: WebP/AVIF to JPEG/PNG auto-resolver with right-sized image selection, HTML-entity decoded titles/descriptions, short-description fallback, and plain UTF-8 output with no BOM, so strict CSV and JSONL parsers read every header and row.
  • Deterministic AI Readiness Score (0-100): 7-point audit with GTIN Modulo-10 validation, products-list badge column with score-band filter and bulk recalculation, and a per-product AI feed metabox (brand, availability, condition, gender and age group overrides, exclude toggle, conversational Q&A published in llms-full.txt and FAQPage JSON-LD).
  • Product JSON-LD enrichment: injects hasMerchantReturnPolicy and shippingDetails into Product schema and publishes FAQPage JSON-LD, extending Yoast SEO and Rank Math output via native filters when active.
  • 1-click brand & GTIN field mapper, AI bot allowlist & crawler monitor, 3-step setup checklist, configurable rebuild schedule (hourly / twice daily / daily / weekly / external cron with secret URL, plus optional rebuild-on-product-change), and opt-in clean uninstall.
  • Merchant logo resolution for discovery manifests: Customizer Site Logo preferred, Site Icon fallback, manual override URL in settings, all filterable via feedship_merchant_logo.
  • Fix – Variant option sets are consistent end to end: variant_dict includes every variation attribute (including custom ones like logo), the top-level color/size fields and the deep-link URL describe the same options, and identical option combinations inside one product are exported once. llms-full.txt variation tables use the same rules, list every option, and show the same variant counts as the feeds.
  • Fix – The CSV feed no longer starts with a UTF-8 BOM; strict feed parsers would otherwise read the first column as a byte-marked item_id and reject every row.
  • Fix – The UCP discovery manifest is date-versioned per the UCP conformance spec and exposes the canonical top-level ucp object.
  • Fix – Anonymous requests to admin-ajax.php or admin-post.php can no longer trigger catalog builds; building requires a real capability, WP-Cron, or WP-CLI.
  • Fix – Hidden, search-only and password-protected products are no longer exported to the feeds, llms-full.txt or the catalog search API.
  • Fix – The public commerce guide no longer publishes the WordPress admin email address.
  • Fix – Tax-aware pricing: exports now carry the same display prices the storefront shows (follows your WooCommerce tax settings).
  • Fix – The robots.txt crawler monitor was rewritten with correct robots semantics: grouped user-agents, empty Disallow values, the “*” group, Allow rules and wildcards.
  • Fix – A rebuild lock prevents concurrent generations; external cron rebuilds run through Action Scheduler; bulk readiness scoring continues in background chunks on very large catalogs.
  • Fix – The catalog search endpoint caches only empty-query browsing, is rate-limited, and can no longer trigger image file generation.
  • Fix – Discovery fallback URLs now resolve on subdirectory (non-root) installs.
  • Fix – Generated files always use the site default locale, never the locale of the triggering user.
  • Added – Yoast SEO and Rank Math now fully own /llms.txt when active; the plugin merges its commerce appendix into their output.
  • Added – The external cron token can be sent as an X-FEEDSHIP-Token header or POST field instead of a URL parameter.
  • Added – New feedship_client_ip filter lets stores behind a CDN or reverse proxy pass the real client IP to the search rate limiter.
  • Changed – Requires WordPress 6.5 or newer.
  • Documentation: FAQ covering the researched AI-commerce questions (ChatGPT Shopping submission, ACP/UCP, llms.txt family, GTIN and brand requirements, performance, privacy) and six annotated admin screenshots added.