If you want your products to show up in ChatGPT’s shopping and discovery experiences, you’ll need to set up a product feed that matches OpenAI’s official spec. Don’t worry — while the spec looks technical, once you break it down, it’s not too different from filling in a structured spreadsheet about your products.
This post walks through what a product feed is, why it matters, and exactly what information to include.
1. What’s a Product Feed?
Think of a product feed as a structured catalog. Each row is a product, each column is an attribute like ID, title, price, or image. OpenAI uses this feed to understand what you sell and how to display it inside ChatGPT.
If your feed is complete and accurate, your products are more discoverable, and customers can even buy them directly inside ChatGPT (if you enable checkout).
2. Why This Matters
Discoverability: Without a proper feed, ChatGPT won’t know your products exist.
Better Shopping Experience: More details = richer displays. Products with images, reviews, and variants stand out.
Eligibility for Checkout: If you want in-app checkout, certain fields (like price, shipping, and inventory) must be filled.
Control: You decide what gets surfaced (via flags like
enable_search
andenable_checkout
).
3. What Information Goes in the Product Feed
Your product feed is basically a structured spreadsheet where each product has a row and each attribute (ID, title, price, etc.) is a column. OpenAI’s spec defines exactly what you can include, what’s required, and how to format it.
Here’s a breakdown of the most important fields, combining the official spec details with plain-English explanations and examples.
3.1 OpenAI Flags (control visibility & checkout)
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
enable_search |
Required | Set to true to allow ChatGPT to surface the product in search. |
true |
Lower-case string |
enable_checkout |
Required (see note) | Allows direct purchase inside ChatGPT. Requires enable_search = true . |
false |
Lower-case string |
3.2 Basic Product Data
Attribute | Required? | What it Means | Example | Notes / Validation |
---|---|---|---|---|
id |
Required | Merchant product ID (unique) | SKU12345 |
Max 100 chars; stable over time |
gtin |
Recommended | Universal product identifier (UPC/EAN/ISBN) | 123456789543 |
8–14 digits; no dashes/spaces |
mpn |
Required if no GTIN | Manufacturer part number | MPN-9876 |
Required if gtin missing; max 70 chars |
title |
Required | Product title | Men's Trail Running Shoes Black |
Max 150 chars; avoid ALL CAPS |
description |
Required | Full product description (plain text) | Waterproof trail shoe with cushioned sole… |
Max 5,000 chars; plain text only |
link |
Required | Product detail page URL | https://example.com/product/SKU12345 |
Must resolve HTTP 200; HTTPS preferred |
3.3 Item Information & Classification
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
condition |
Required | Product condition (new , refurbished , used ) |
new |
Lower-case string |
product_category |
Required | Category path (taxonomy) | Apparel & Accessories > Shoes |
Use '>' separator |
brand |
Required (most cases) | Product brand | OpenAI |
Max 70 chars; exceptions: movies/books/music |
material |
Required | Primary material(s) | Leather |
Max 100 chars |
dimensions |
Optional | Overall dimensions LxWxH unit |
12x8x5 in |
Units required |
length |
Optional | Dimension length | 10 mm |
Provide all three if using individual fields |
width |
Optional | Dimension width | 10 mm |
Units required |
height |
Optional | Dimension height | 10 mm |
Units required |
weight |
Required | Product weight | 1.5 lb |
Positive number with unit |
age_group |
Optional | Target demographic (e.g., adult ) |
adult |
Lower-case string |
3.4 Media
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
image_link |
Required | Main product image URL | https://example.com/image1.jpg |
JPEG/PNG; HTTPS preferred |
additional_image_link |
Optional | Extra images (array or CSV) | https://example.com/image2.jpg,https://... |
Comma-separated or array |
video_link |
Optional | Product video URL | https://youtu.be/12345 |
Must be publicly accessible |
model_3d_link |
Optional | 3D model (GLB/GLTF preferred) | https://example.com/model.glb |
GLB/GLTF preferred |
3.5 Pricing & Promotions
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
price |
Required | Regular price (value + ISO currency) | 79.99 USD |
Must include currency code |
applicable_taxes_fees |
Optional | Additional taxes/fees | 7 USD |
Number + currency |
sale_price |
Optional | Discounted price | 59.99 USD |
Must be ≤ price |
sale_price_effective_date |
Optional (if sale_price) | Sale start/end (ISO 8601) | 2025-07-01 / 2025-07-15 |
Start must precede end |
unit_pricing_measure / base_measure |
Optional | Unit price & base measure | 16 oz / 1 oz |
Both fields required together |
pricing_trend |
Optional | Human-readable pricing trend | Lowest price in 6 months |
Max 80 chars |
3.6 Availability & Inventory
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
availability |
Required | in_stock , out_of_stock , preorder |
in_stock |
Lower-case string |
availability_date |
Required if preorder |
When product will be available | 2025-12-01 |
Must be future date if preorder |
inventory_quantity |
Required | Units available | 25 |
Non-negative integer |
expiration_date |
Optional | Remove product after date | 2025-12-01 |
Must be future date |
pickup_method |
Optional | Pickup options (in_store , reserve , not_supported ) |
in_store |
Lower-case string |
pickup_sla |
Optional | Pickup SLA (e.g., 1 day ) |
1 day |
Requires pickup_method |
3.7 Variants
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
item_group_id |
Required if variants exist | Parent/variant group ID | SHOE123GROUP |
Max 70 chars |
item_group_title |
Optional | Canonical group title | Men's Trail Running Shoes |
Max 150 chars |
color |
Recommended | Variant color | Blue |
Max 40 chars |
size |
Recommended | Variant size | 10 |
Max 20 chars |
size_system |
Recommended | Size system (country code) | US |
2-letter code |
gender |
Recommended | male , female , unisex |
male |
Lower-case string |
offer_id |
Recommended | Unique offer per variant | SKU12345-Blue-79.99 |
Unique within feed |
Custom_variant1_category |
Optional | Custom variant dimension 1 | Size_Type |
e.g., Petite/Tall |
Custom_variant1_option |
Optional | Option under custom variant 1 | Petite |
— |
Custom_variant2_category |
Optional | Custom variant dimension 2 | Wood_Type |
— |
Custom_variant2_option |
Optional | Option under custom variant 2 | Oak |
— |
Custom_variant3_category |
Optional | Custom variant dimension 3 | Cap_Type |
— |
Custom_variant3_option |
Optional | Option under custom variant 3 | Snapback |
— |
3.8 Shipping & Returns
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
shipping |
Required where applicable (checkout) | Format country:region:service_class:price |
US:CA:Overnight:16.00 USD |
Multiple entries allowed; use colon separators |
delivery_estimate |
Optional | Estimated arrival date | 2025-08-12 |
Must be future date |
3.9 Merchant info
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
seller_name |
Required / Display | Seller or store name | Example Store |
Max 70 chars |
seller_url |
Required | Seller storefront or page URL | https://example.com/store |
HTTPS preferred |
seller_privacy_policy |
Required if checkout | Seller privacy policy URL | https://example.com/privacy |
Required if enable_checkout=true |
seller_tos |
Required if checkout | Seller terms of service URL | https://example.com/terms |
Required if enable_checkout=true |
4.0 Returns
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
return_policy |
Required | URL to return policy | https://example.com/returns |
HTTPS preferred |
return_window |
Required | Days allowed for return | 30 |
Positive integer |
4.1 Performance Signals
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
popularity_score |
Recommended | Popularity indicator (0–5 or merchant-defined) | 4.7 |
0–5 scale or merchant-defined |
return_rate |
Recommended | Historical return rate (percentage) | 2% |
0–100% |
4.2 Compliance
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
warning / warning_url |
Recommended for checkout | Product disclaimers or warnings | Contains lithium battery or https://... |
If URL, must resolve HTTP 200 |
age_restriction |
Recommended | Minimum purchase age | 21 |
Positive integer |
4.3 Reviews Q&A
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
product_review_count |
Recommended | Number of product reviews | 254 |
Non-negative integer |
product_review_rating |
Recommended | Average product rating (0–5) | 4.6 |
0–5 scale |
store_review_count |
Optional | Number of store/brand reviews | 2000 |
Non-negative integer |
store_review_rating |
Optional | Average store rating (0–5) | 4.8 |
0–5 scale |
q_and_a |
Recommended | FAQ or Q&A content | Q: Is this waterproof? A: Yes |
Plain text |
raw_review_data |
Recommended | Raw review payload (JSON blob) | {"reviews":[...}] |
May include JSON blob |
4.4 Related products
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
related_product_id |
Recommended | Associated product IDs (comma-separated) | SKU67890,SKU67891 |
Comma-separated list allowed |
relationship_type |
Recommended | Relationship types (enum) | often_bought_with |
e.g., part_of_set , accessory , etc. |
4.5 Geo tagging
Attribute | Required? | What it Means | Example | Notes |
---|---|---|---|---|
geo_price |
Recommended | Region-specific price | 79.99 USD (California) |
Must include ISO 4217 currency |
geo_availability |
Recommended | Region-specific availability | in_stock (TX), out_of_stock (NY) |
Regions should be valid ISO 3166 codes |
Takeaway: Fill out every required field, but don’t stop there. The more “recommended” and “optional” fields you supply (reviews, categories, images, variants), the better ChatGPT can showcase your products.
4. Best Practices
Keep data fresh: Update inventory, pricing, and availability regularly.
Use real product images: Don’t rely on placeholders or logos.
Include rich attributes: Size, color, material, reviews — these help your products stand out.
Test your feed: Validate links, check that product pages load, and confirm formatting (especially dates and prices).
5. Wrapping Up
Making your product feed discoverable in ChatGPT is mostly about being structured and complete. Once your feed is properly set up, ChatGPT can surface your products more effectively and even enable direct checkout.
If you treat the feed like your storefront window — clear, detailed, and accurate — you’ll be better positioned to capture attention in this new shopping channel.
»» You can find more detailed information via OpenAI’s developer website