Direct answer
A ChatGPT product feed is a structured catalog input for product discovery. In OpenAI’s current stable file-upload specification, submit one row per purchasable item or variant. Each row needs a stable item ID plus factual title, description, destination URL, brand, seller name, image URL, price, and availability. Variants need separate item IDs, a shared group ID, and their selected option values.
For Shopify, map those fields from the current product and variant records, then reconcile every row against the public destination page. A feed can make catalog facts available for discovery; acceptance does not guarantee that ChatGPT will show, cite, or recommend a product. See OpenAI’s official product feed specification and commerce setup guide.
A feed is not another product description
OpenAI’s commerce guide describes sharing a structured product feed as the starting point for product discovery integration. The feed provides catalog records that ChatGPT can use to index products, understand attributes, and present current shopping information.
A feed is designed for precise fields, not page layout. It may carry:
- stable item identity
- title and description
- destination URL
- images
- brand and identifiers
- price and availability
- variant attributes
Required discovery fields to map
OpenAI’s stable schema currently lists nine required fields for each discovery row:
| Feed field | Shopify source to verify | Important constraint |
|---|---|---|
item_id |
variant ID or another durable catalog key | unique per item or variant; never recycle it for a different item |
title |
product title plus selected options where relevant | factual and concise |
description |
product or variant description | plain text; no invented claims |
url |
public product destination | stable and variant-selected when possible |
brand |
product vendor or verified brand field | use the real brand, not a placeholder |
seller_name |
merchant identity | use the real seller name |
image_url |
current product or variant image | direct image URL showing the item |
price |
current variant price and currency | major currency units, such as 89.00 CAD |
availability |
current sellable state | use a supported value; use unknown when stock is genuinely unavailable |
This is a mapping checklist, not a claim that every Shopify store has an enabled direct feed. Feed setup, supported markets, Ads, and checkout have separate requirements and must be confirmed with OpenAI.
The Shopify source still matters
For a Shopify merchant, the product record is often the operational source for title, description, variants, inventory, price, and images. Shopify Catalog or another integration may transform that data for an AI channel.
The store owner should ask:
- Which Shopify fields supply the feed?
- How often do price and stock update?
- Which market and currency does each record represent?
- How are variants separated?
- Where can rejected or ineligible records be seen?
Stable identity prevents catalog drift
An item_id should remain stable for the same purchasable item. GTIN and MPN can help identify products when legitimately assigned. A variant that changes item ID on every export can lose continuity.
The destination URL should resolve successfully to the intended public product. Redirecting every market to a generic homepage weakens the connection between the feed record and product evidence.
Source: OpenAI product feed specification.
Represent Shopify variants as separate rows
Do not flatten every size or color into one generic record when price, availability, URL, or image differs. OpenAI’s schema says each variant row should have its own item_id, share a group_id, set listing_has_variations to true, and provide its selected options in variant_dict. Each row carries its own commercial facts.
{
"item_id": "gid-shopify-variant-456",
"group_id": "gid-shopify-product-123",
"listing_has_variations": true,
"variant_dict": { "Color": "Black", "Size": "10" },
"title": "Trail shoe — Black, size 10",
"url": "https://example.com/products/trail-shoe?variant=456",
"price": "89.00 CAD",
"availability": "in_stock"
}
This abbreviated example shows the variant relationship; it omits other required fields and is not a complete upload row. To expose the same selection accurately on a theme, use the Shopify product and variant Liquid guide.
Use a three-source reconciliation table
For one SKU, compare:
| Fact | Shopify admin | Public page | Feed record |
|---|---|---|---|
| item identity | SKU and variant | selected option | stable item_id |
| title | current | current | accurate and concise |
| price | CAD 89 | CAD 89 | CAD 89 |
| availability | available | add to cart works | in stock |
| URL | product handle | canonical URL | same destination |
Descriptions can be formatted differently, but the commercial facts must agree.
What not to do
Do not add invented keywords, fake identifiers, unsupported claims, or a dozen near-duplicate records. Do not assume feed acceptance guarantees a ChatGPT recommendation. Product eligibility and final selection remain platform decisions.
For broader context, read Webpages, product feeds and Shopify Catalog. For an operational check, follow the Shopify price versus page JSON-LD guide and add the feed row as the third comparison source.
Community discussion
Add to the article
Ask a technical question, share a storefront result, or challenge a conclusion with evidence.