{
  "id": "B03",
  "url": "https://cartforagents.com/guides/chatgpt-product-feed",
  "title": "ChatGPT product feeds: map fields, approval and schema conflicts",
  "description": "Map source fields to the documented feed contract, preserve variant identity and resolve conflicting examples without mixing schema versions.",
  "answer": "A direct ChatGPT product feed is only for merchants OpenAI has approved: you apply, wait, then upload a full snapshot over SFTP at least daily, with one row per item or variant and nine required fields in OpenAI's Stable schema. Build to Stable only, because OpenAI says the nested Draft schema is not supported for production, and its best-practices page and products API use Draft-style names. If you sell on Shopify or Etsy, OpenAI says your catalog is already integrated and no feed or application is needed.",
  "take": "If you're on Shopify or Etsy, skip the direct feed: you're already in, and the time is better spent on the facts inside your catalog. If you're not, apply early, because admission is the slow part.",
  "summary": "OpenAI publishes two product schemas on the same page, and its best-practices guide uses the field names from the one you are told not to use in production. Here is the mapping for the supported one, and a teardown of where the two disagree.",
  "claims": [
    {
      "text": "OpenAI says onboarding product feeds in ChatGPT is currently available to approved partners, and the integration path is: review the file upload guide and product schema, validate required fields, upload over SFTP, and keep the feed current by overwriting the same file or shard set, with a full snapshot at least once a day recommended.",
      "source_title": "OpenAI Commerce: Get started",
      "source_url": "https://developers.openai.com/commerce/guides/get-started",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Living developer documentation; the date is our check date. It does not say how long approval takes or what decides it."
    },
    {
      "text": "OpenAI's merchant page says merchants apply to share product data, those who have applied are on a waitlist, Shopify and Etsy catalogs are already integrated with no application needed, shopping is live for ChatGPT users in the US, and a self-serve merchant platform is planned for later this year.",
      "source_title": "OpenAI: Power product discovery in ChatGPT (merchant page)",
      "source_url": "https://chatgpt.com/merchants/",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "The self-serve platform is announced, not available. The page is marketing and application copy, not a specification."
    },
    {
      "text": "OpenAI's merchant page answers \"Do I need a product feed if ChatGPT already crawls my site?\" with \"No, but feeds give you greater control over how your products appear, helping ensure more accurate and up-to-date information.\"",
      "source_title": "OpenAI: Power product discovery in ChatGPT (merchant page), Frequently asked questions",
      "source_url": "https://chatgpt.com/merchants/",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "OpenAI's own description of the benefit of feeds; no measured effect is published."
    },
    {
      "text": "In the Stable schema, is_eligible_search defaults to true; false disables search and checkout eligibility, and OpenAI says eligibility does not guarantee display. Checkout requires a separately enabled integration, and is_ads_eligible is independent of search eligibility.",
      "source_title": "OpenAI Commerce: Products (Stable), OpenAI flags; Ads; Checkout",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Describes flags in the feed contract, not how often eligible products are shown."
    },
    {
      "text": "In 1,620 results Shopify Catalog returned for 162 searches on October 26, 2026, the product rating was absent on 440 and present on 1,180, with no explicit zeros. For \"humidifier for dry winter air large room quiet top fill\", a decibel figure was in the description of 4 of 10 results and in no title.",
      "source_title": "Cart for Agents: Receipts cited by our guides (Shopify agent-catalog snapshot, Oct 26, 2026)",
      "source_url": "https://cartforagents.com/research/agent-shopping-research#receipts-cited-by-our-guides",
      "source_date": "2026-10-26",
      "method": "observed",
      "limitation": "Shopify Catalog records, not OpenAI feed rows or ChatGPT results. Occurrences, not distinct products; one unpersonalized snapshot."
    },
    {
      "text": "The products specification offers a Stable and a Draft schema. OpenAI says Stable is the supported file upload path for the foreseeable future, and Draft is published for planning and feedback only and is not supported for production integrations yet.",
      "source_title": "OpenAI Commerce: Products (file upload specification), Schema view",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Both versions can change. We read the Draft view from the page's draft fragment on the same date."
    },
    {
      "text": "In the Stable schema each row is one purchasable item or variant with nine required fields: item_id, title, description, url, brand, seller_name, image_url, availability and price. Availability must be in_stock, out_of_stock, pre_order, backorder or unknown, and an omitted, empty or unrecognized value rejects the row. Price is the regular price written as an amount and currency code, such as 79.99 USD.",
      "source_title": "OpenAI Commerce: Products (Stable), Basic product data; Price & promotions",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "OpenAI notes that format guidance is not a guarantee that every invalid value will be rejected at upload."
    },
    {
      "text": "For variants, the Stable schema asks for a separate row per selection with a distinct item_id, a shared group_id that differs from every item_id, listing_has_variations set to true, and a variant_dict of the selected options. A sale_price is used only if it is above zero, strictly below price and in the same currency.",
      "source_title": "OpenAI Commerce: Products (Stable), Variants; Price & promotions",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Describes the contract, not how ChatGPT displays variants."
    },
    {
      "text": "The Draft schema uses one product object per line containing a variants array, plus a header with feed metadata. In Draft, price is the active sale price as an integer in minor units with a currency, list_price is the reference price before discount, availability is an optional object with a boolean and a status that includes preorder and discontinued, options are a variant_options list of name and value pairs, and the product and variant tables list no brand field.",
      "source_title": "OpenAI Commerce: Products (Draft schema view)",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/products?version=draft",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Draft is not supported for production. \"No brand field\" means we did not find one in the Product or Variant tables on our check date."
    },
    {
      "text": "OpenAI's integration best-practices page refers to description.html, description.markdown, categories.taxonomy, seller.links, seller.name, media.url and variant_options, which are field names from the nested Draft and API shapes rather than the Stable flat schema.",
      "source_title": "OpenAI Commerce: Best practices",
      "source_url": "https://developers.openai.com/commerce/guides/best-practices",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Our comparison of field names across OpenAI pages on one date. The page does not say which schema it was written for."
    },
    {
      "text": "OpenAI's products API, GET /product_feeds/{id}/products, returns products in a nested Product and Variant shape, with prices as integer minor units, and says product data is updated by uploading a feed file over SFTP.",
      "source_title": "OpenAI Commerce API: Products",
      "source_url": "https://developers.openai.com/commerce/specs/api/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "We did not call the API, so we have not seen how an uploaded Stable row reads back."
    },
    {
      "text": "The Stable compatibility notes accept older aliases, and precedence is not consistent: item_id wins over id and sku, and group_id over item_group_id, but enable_search and enable_checkout win over is_eligible_search and is_eligible_checkout, and return_window wins over return_deadline_in_days.",
      "source_title": "OpenAI Commerce: Products (Stable), Compatibility notes",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Quoted from the compatibility notes. OpenAI's advice is to send only one name per value."
    },
    {
      "text": "The Stable schema says an empty value does not mean zero or false; an omitted shipping_price means unknown, not free shipping; review_count of zero means no reviews while omitted means unknown; and a rating should be omitted when there are no reviews.",
      "source_title": "OpenAI Commerce: Products (Stable), Value conventions; Fulfillment; Reviews and Q&A",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Describes the feed contract, not how ChatGPT treats unknown values when choosing products."
    },
    {
      "text": "The file upload guide recommends parquet (jsonl.gz, csv.gz and tsv.gz are also supported), stable file names overwritten in place, a sample of around 100 items first, and lists missing required fields, outdated or non-spec field names and malformed values as common ingestion failures. A product missing from later snapshots is retained for up to 14 days; is_eligible_search=false makes it ineligible at the next processed snapshot.",
      "source_title": "OpenAI Commerce: File upload overview",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/overview",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Delivery guidance for approved partners. Processing times are not stated."
    },
    {
      "text": "The standard OpenAI-format upload currently targets the US; row-level market columns do not change that, and other markets require OpenAI to confirm the integration. The shared format currently represents US, CA and MX.",
      "source_title": "OpenAI Commerce: Products (Stable), Geo tagging",
      "source_url": "https://developers.openai.com/commerce/specs/file-upload/products",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Representing a country in the format is not the same as shopping being live there."
    },
    {
      "text": "Shopify says Shopify Catalog sends an eligible compare-at price through the list_price field of the Universal Commerce Protocol Variant, when the merchant chooses compare-at price as the list price.",
      "source_title": "Shopify Help Center: Customizing your product data for Shopify Catalog, Choose the list price for AI agents",
      "source_url": "https://help.shopify.com/en/manual/shopify-catalog/mapping",
      "source_date": "2026-10-27",
      "method": "documented",
      "limitation": "Describes Shopify's route to its catalog, not OpenAI's direct feed."
    }
  ],
  "sources": [
    {
      "title": "OpenAI Commerce: Products (file upload specification, Stable)",
      "url": "https://developers.openai.com/commerce/specs/file-upload/products",
      "accessed": "2026-10-27"
    },
    {
      "title": "OpenAI Commerce: Products (Draft schema view)",
      "url": "https://developers.openai.com/commerce/specs/file-upload/products?version=draft",
      "accessed": "2026-10-27"
    },
    {
      "title": "OpenAI Commerce: File upload overview",
      "url": "https://developers.openai.com/commerce/specs/file-upload/overview",
      "accessed": "2026-10-27"
    },
    {
      "title": "OpenAI Commerce: Get started",
      "url": "https://developers.openai.com/commerce/guides/get-started",
      "accessed": "2026-10-27"
    },
    {
      "title": "OpenAI Commerce: Best practices",
      "url": "https://developers.openai.com/commerce/guides/best-practices",
      "accessed": "2026-10-27"
    },
    {
      "title": "OpenAI Commerce API: Products",
      "url": "https://developers.openai.com/commerce/specs/api/products",
      "accessed": "2026-10-27"
    },
    {
      "title": "OpenAI: Power product discovery in ChatGPT (merchant page)",
      "url": "https://chatgpt.com/merchants/",
      "accessed": "2026-10-27"
    },
    {
      "title": "OpenAI Help Center: Shopping with ChatGPT Search",
      "url": "https://help.openai.com/en/articles/11128490-shopping-with-chatgpt-search",
      "accessed": "2026-10-27"
    },
    {
      "title": "Shopify Help Center: Customizing your product data for Shopify Catalog",
      "url": "https://help.shopify.com/en/manual/shopify-catalog/mapping",
      "accessed": "2026-10-27"
    },
    {
      "title": "Cart for Agents: Receipts cited by our guides",
      "url": "https://cartforagents.com/research/agent-shopping-research#receipts-cited-by-our-guides",
      "accessed": "2026-10-27"
    }
  ],
  "limitations": [
    "Platform routes change. Everything here was checked on October 27, 2026; re-check OpenAI's specification and the Stable or Draft label before building.",
    "We are not an approved feed partner and have not uploaded a feed, so nothing here confirms what OpenAI's parser accepts, rejects or displays beyond what the documentation says.",
    "The worked example is a labelled hypothetical product. Its values are invented to show the mapping, not taken from any store.",
    "The \"your source data\" column describes typical store fields in general terms. It is not a field-by-field export guide for any platform.",
    "How a direct feed interacts with the Shopify Catalog route for the same store is not documented in the pages we read.",
    "Field coverage in a feed is not a ranking factor anyone has published. A complete feed makes your facts available; it does not guarantee display."
  ],
  "related": [
    "https://cartforagents.com/guides/ai-shopping-platforms",
    "https://cartforagents.com/guides/how-to-rank-in-chatgpt",
    "https://cartforagents.com/guides/product-not-showing-in-chatgpt",
    "https://cartforagents.com/guides/ai-visibility-audit",
    "https://cartforagents.com/guides/product-variant-structured-data",
    "https://cartforagents.com/guides/gtin-mpn-sku",
    "https://cartforagents.com/guides/ucp-vs-acp"
  ],
  "published": "2026-10-27",
  "updated": "2026-10-27",
  "checked": "2026-10-27",
  "kind": "guide"
}