Module reference

OpenAI Product Feed for Magento 2 — module reference

Covers angeo/module-openai-product-feed 2.1.1 · Checked 16 October 2026 · MIT licensed

OpenAI Product Feed builds the product feed that ChatGPT reads, so your catalog can be found inside ChatGPT. It writes one CSV file per store view, in line with the OpenAI Product Feed file-upload specification (Stable).

It covers every Magento product type: simple, virtual, downloadable, configurable, bundle and grouped.

What it does

  • Writes the spec columns, such as item_id, is_eligible_search, is_eligible_checkout, image_url, item_weight_unit and return_deadline_in_days.
  • Exports configurable products as a parent row plus one row per variant (group_id, variant_dict, item_group_title).
  • Links grouped products through related_product_id and relationship_type.
  • Flags digital goods with is_digital.
  • Keeps going when a product fails: the product is logged and skipped, the run does not stop.
  • Loads stock and category data in batches, so large catalogs stay fast.

How product types are exported

TypeRows in the feed
SimpleOne row
Virtual / downloadableOne row, is_digital=true, no weight
ConfigurableA parent row (listing_has_variations=true) and one row per enabled child, with group_id, item_group_title and a JSON variant_dict
GroupedOne row at the lowest price; children in related_product_id with relationship_type=part_of_set
BundleOne row: the “from” price for dynamic bundles, the fixed price otherwise

Requirements

Magento2.4.6+ (Open Source, Mage-OS or Adobe Commerce) — magento/framework >=103.0.6 <104
PHP8.1 – 8.5 — ~8.1.0||~8.2.0||~8.3.0||~8.4.0||~8.5.0
Other packagesmagento/module-inventory-sales-api >=1.2.3 <2

The feed reads stock from the Multi-Source Inventory index, so MSI must be installed. If a SKU is missing from the batch preload, the module falls back to Magento’s normal per-product APIs.

Installation

composer require angeo/module-openai-product-feed
bin/magento module:enable Angeo_OpenAiProductFeed
bin/magento setup:upgrade
bin/magento setup:di:compile                # production mode only
bin/magento cache:flush

Setting it up

  1. Open Stores → Configuration → Angeo → OpenAi Feed.
  2. Under Seller, fill in the seller name, URL, privacy policy and terms of service. The spec requires the privacy policy and terms when checkout is enabled for a product.
  3. Under Return policy, set the return policy URL and the return window in days.
  4. On each product, open the OpenAI Configurations attribute group and set Enable Search and Enable Checkout.

Enable Search is exported as is_eligible_search. Enable Checkout is exported as is_eligible_checkout. If search is off, checkout is forced to false in the feed, as the spec requires.

Generating the feed

# All store views
bin/magento angeo:product-feed:generate

# Only some store views (the option can repeat)
bin/magento angeo:product-feed:generate --store=default --store=en_us
CommandWhat it does
bin/magento angeo:product-feed:generate

The command prints progress per page and the total time. Output files are written to var/angeo/openai_feed/<store_code>.csv. Skipped products and a summary per store go to var/log/angeo_openai_feed.log.

On the reference benchmark (1,900 configurable products, 5 store views, about 10,300 rows per file), the batch loaders remove tens of thousands of per-product queries compared to 2.0.x.

Configuration reference

All settings are under Stores → Configuration → Angeo → OpenAi Feed. The table shows each field, its config path (for bin/magento config:set) and its default value.

Seller (4)
SettingConfig pathDefault
Seller Nameopenai_feed/seller/nameExample Store
Seller Urlopenai_feed/seller/urlhttps://example.com/store
Privacy Policyopenai_feed/seller/privacy_policyhttps://example.com/privacy
Terms of serviceopenai_feed/seller/toshttps://example.com/terms
Return policy (2)
SettingConfig pathDefault
Return Policy Urlopenai_feed/return_policy/urlhttps://example.com/returns
Return Windowopenai_feed/return_policy/return_window30

Cron

The feed is built daily at 02:00.

JobCron groupSchedule
angeo_generate_openai_feeddefault0 2 * * *

Upgrading from 1.x

2.0.0 is a breaking release. Feed columns were renamed to match the OpenAI specification, and ProductMapperInterface::map() now returns a list of rows. No data migration is needed: the enable_search and enable_checkout product attributes stay the same. Only the column names in the file change.

FAQ

Where is the feed file?

In var/angeo/openai_feed/<store_code>.csv, one file per store view. It is rebuilt daily at 02:00, or when you run the CLI command.

How do I hide a product from ChatGPT?

Set Enable Search to No on the product. It is then exported with is_eligible_search=false, and checkout is forced to false as well.

Does it handle configurable products?

Yes. You get a parent row and one row per enabled child, linked by group_id, with the variant options in variant_dict.

Do I also need the Feed API module?

Not to build the file. The OpenAI Product Feed API adds REST endpoints for incremental updates next to the daily file.

What happens when a product fails?

It is logged in var/log/angeo_openai_feed.log and skipped. The rest of the feed is still built.

This page was written from the README.md, composer.json and etc/*.xml files of tag 2.1.1, read on 16 October 2026. Settings, commands and defaults come straight from that code. If a newer release is out, the README on GitHub wins.