
A product feed can pass validation and still be a poor source for a shopping answer. The item may have a title, price, and image, yet still be too vague for ChatGPT to match it to a specific request. A variant may appear available while its landing page shows a different size, color, or price. A merchant may update inventory, but the feed may remain stale for a day.
ChatGPT product feed optimization addresses those gaps. The goal is not to stuff a feed with keywords or maximize the number of optional fields. It is to give ChatGPT accurate, current, variant-specific facts that help it understand what an item is, when it fits the shopper’s constraints, who sells it, and where the shopper can verify or buy it.
OpenAI’s current Stable file-upload specification defines nine required fields for product discovery. Those fields are the starting contract, not the finish line. This guide explains how to improve the content, identity, freshness, and quality assurance around that contract without claiming that any feed field guarantees placement.
Begin With the Stable Discovery Contract
OpenAI’s Stable product feed reference says merchants should submit one row per purchasable item or variant and include nine required fields: item_id, title, description, url, brand, seller_name, image_url, availability, and price.
Each required field resolves a different type of uncertainty.
| Field | Decision it supports | Optimization priority | High-risk failure |
|---|---|---|---|
item_id | Which exact record is this? | keep it stable and unique | reusing an ID for a different item |
title | What product and variant is offered? | name the product and selected option concisely | using a generic parent title for every variant |
description | What is it, and what does it do? | use factual, discriminating attributes | promotional copy with no useful specifications |
url | Where can the shopper verify or buy it? | deep-link to the matching variant | landing on an unselected or different item |
brand | Who made the product? | match the visible product page | placeholder or inconsistent naming |
seller_name | Who supplies this offer? | use the merchant name users should see | confusing brand and marketplace seller |
image_url | What does this item look like? | show the exact variant | image color or pack size does not match |
availability | Can it be purchased now? | update from the commerce source of truth | stale in-stock status |
price | What does this item cost? | include correct amount and currency | price differs from the destination page |
Do not optimize around the Draft schema unless you are explicitly planning for a future integration. OpenAI labels the Draft version as planning material and says to use Stable for supported file uploads. Build your production pipeline against the documented Stable contract, monitor the changelog, and treat schema migration as an intentional engineering change.
Write Titles and Descriptions for Product Decisions
A good product title identifies the item without turning into a search-query dump. It should include the product name and the selected variant when that distinction affects the offer. “Trail running shoes, black, size 10” is more useful than “Best lightweight outdoor performance footwear.” The first supports identification and comparison; the second is subjective and underspecified.
Descriptions should be factual. OpenAI’s guidance recommends concise copy that helps users understand the product, while the Stable reference suggests keeping descriptions in plain text and within 5,000 characters. Lead with the attributes that change suitability: material, dimensions, capacity, compatibility, included components, intended use, or important exclusions.
Ask whether the description can resolve a real constraint. If a shopper asks for a carry-on that fits a particular size limit, “premium travel essential” contributes nothing. Exterior dimensions, wheel inclusion, weight, and capacity do. If a buyer asks for a charger compatible with a device, connector type, power output, protocol support, and cable inclusion matter more than brand adjectives.
Avoid claims that the product page cannot support. Do not add “waterproof,” “medical grade,” “sustainable,” or “lifetime warranty” merely because the terms may improve relevance. Feed content should match the destination page and the evidence behind the claim.

Model Variants as Purchasable Items
Variant errors are among the fastest ways to lose shopper trust. A result may show a blue image, a black title, a size that is unavailable, and a price from the cheapest option. This can happen when a feed treats a parent product as though it were the purchasable unit.
The Stable specification recommends one row for each purchasable item or variant. Give each selection a unique item_id, use a shared group_id for the parent listing, set listing_has_variations=true, and provide the selected options in variant_dict. Each row should carry the correct title, URL, images, price, and availability for that exact option.
Keep identifiers stable when price, inventory, title, or imagery changes. An item ID is identity, not a version number. Do not place a price in the identifier, and do not recycle a discontinued SKU for a new product. Stable identity makes updates, reconciliation, diagnostics, and performance comparisons possible.
The variant URL should preserve the selection when the shopper arrives. If query parameters or path segments choose the color and size, test that behavior in a logged-out session and on mobile. When the destination silently resets to a default option, feed accuracy is lost at the handoff even if the row itself is correct.
Treat Price and Availability as Operational Data
Titles and descriptions can change slowly. Price and inventory may change every hour. They should come from the system that controls the live offer, not from a content spreadsheet maintained by hand.
OpenAI’s file-upload overview recommends sending a full snapshot at least daily, reusing stable filenames, and replacing the latest shard set. For large catalogs, it recommends deterministic shard assignment and approximately 500,000 items or less per shard. The same guidance notes that omission does not remove a product immediately; the most recently processed record may be retained for up to 14 days. To make an item ineligible on the next processed snapshot, set is_eligible_search=false.
Design freshness controls around business risk:
- Compare feed price and currency against the destination page before delivery.
- Reject or quarantine rows with impossible prices, missing currency, or negative inventory.
- Track the age of the source record and the age of the delivered snapshot.
- Alert when the number of in-stock items changes outside an expected range.
- Verify that discontinued items are disabled rather than left indefinitely as out of stock.
- Record feed processing time so customer support can distinguish propagation delay from a catalog error.
Availability must use a supported value. An explicit unknown state is better than asserting that an item is in stock when the source system cannot confirm it. Missing or unrecognized required availability values can cause a row to be rejected.
Use Images and URLs to Confirm the Same Offer
Product discovery is visual. The primary image should show the item represented by the row, including its relevant color, pattern, size, pack count, or configuration. Use a direct, public HTTPS image URL and avoid overlays that obscure the product. If a variant has its own imagery, do not fall back to a parent image that depicts a different selection.
The landing page, title, description, image, price, and availability should tell one consistent story. Build an automated sample that opens feed URLs and checks the rendered page. Confirm that the canonical product is present, the variant is selected, the price and currency agree, the product can be purchased under the stated availability, and the primary visual matches.
OpenAI’s ChatGPT shopping documentation says product results may include information from merchants and third-party providers, and that prices or shipping updates can take time to appear. It also says merchant rankings may consider factors such as availability, price, quality, and whether the seller is the maker or primary seller. These statements do not create a guaranteed ranking formula. They do explain why consistent offer data and merchant identity matter to the shopping experience.

Add Optional Fields Only When They Stay Trustworthy
Optional fields can improve answer quality by adding categories, richer descriptions, variant options, media, seller links, shipping, returns, or reviews. They can also multiply failure modes. OpenAI’s best-practices guidance advises omitting an optional field when the transformation is brittle until the data quality is stable.
Use optional data when it resolves a meaningful shopper question and has a reliable owner. Category paths can improve product understanding when they reflect a consistent taxonomy. Seller policy links can reduce friction when they point to durable, public shipping, return, privacy, or refund pages. Additional media can clarify angles, dimensions, or included parts when the assets apply to the exact variant.
Do not use placeholder values such as null, unknown, or n/a unless the specification explicitly supports the value. An omitted optional field is cleaner than a string that looks like real product data. Preserve leading zeros by treating identifiers as strings. Use UTF-8, valid absolute URLs, and correctly serialized JSON objects when placing structured values inside CSV or TSV cells.
A useful governance rule is simple: every feed field must have a source, an owner, a refresh rule, and a validation rule. If one of those is missing, the field is not production-ready.
Build a Feed QA Scorecard Before Delivery
Schema validation catches formatting problems. It does not prove that the catalog is coherent. Add business-level checks that compare fields across systems.
Score each delivery across five dimensions:
- Completeness: What percentage of rows contain every required field and every strategically important optional field?
- Validity: What percentage conform to the allowed types, enumerations, currencies, and URL rules?
- Consistency: Do titles, variants, images, price, availability, brand, and seller match the destination page?
- Freshness: How old are the source record, generated snapshot, and delivered file?
- Distinctiveness: Do titles and descriptions contain the factual attributes needed to tell similar products apart?
Start onboarding with a small representative sample. OpenAI recommends roughly 100 items, with all required fields present, followed by quality assurance on the first full snapshot. Include simple products, multi-variant products, sale prices, out-of-stock items, marketplace offers, unusual characters, and your largest descriptions. Edge cases are more valuable than 100 nearly identical rows.
Keep the validation report with the delivery. It should show row counts, rejected rows, warnings, price mismatches, broken URLs, image failures, inventory anomalies, and changes from the previous snapshot. A successful upload is an operational event, not proof that every product is correct.
Measure Discovery Without Claiming a Feed Guarantee
OpenAI says product results are selected independently based on relevance to the shopper’s intent and context. A direct feed improves the freshness and completeness of the data available to ChatGPT, but eligibility does not guarantee that a product will display.
Measure performance in layers. First verify ingestion health and row acceptance. Then test representative shopping prompts by category, attribute, use case, price band, and audience. Record whether products appear, whether the right variant and merchant details are shown, and whether claims match the feed and landing page. Finally, measure attributable clicks and conversions.
Add consistent tracking parameters to product URLs if they fit your analytics policy. OpenAI’s best-practices guide gives utm_medium=feed as an example for feed-specific attribution and recommends keeping tracking parameters consistent across snapshots. Do not let those parameters change the canonical product, selected variant, or page behavior.
Topify can be used to organize repeatable shopping prompt tests and monitor product or source visibility over time. Pair that monitoring with feed delivery logs, onsite analytics, and catalog quality data. If visibility falls, determine whether the cause is prompt relevance, an ingestion problem, a freshness failure, an incorrect variant, or wider competitive change before rewriting every title.
Establish Ownership Across Commerce, Content, and Analytics
Product feed optimization fails when it is treated as a one-time SEO export. Commerce operations owns price, stock, and product state. Merchandising owns taxonomy and differentiating attributes. Content teams own factual titles and descriptions. Engineering owns the pipeline, identity, delivery, and alerts. Analytics owns tracking and performance interpretation.
Create a change process for schema updates and field mappings. Version the transformation logic, test it against a fixed catalog sample, and compare output before deployment. Monitor the official Stable specification rather than copying a community template indefinitely. When a new field becomes available, add it only after the source data and quality controls are ready.
The durable advantage is catalog truth. A feed that reflects the real product, real variant, real seller, real price, and real availability gives a shopping system fewer reasons to guess. It also improves paid feeds, marketplace listings, onsite search, support tooling, and every other system that consumes the same product data.
Frequently Asked Questions
What fields are required for ChatGPT product discovery feeds?
OpenAI’s current Stable file-upload specification lists nine required fields: item_id, title, description, url, brand, seller_name, image_url, availability, and price. Requirements can change, so production pipelines should verify the current official specification.
Does submitting a product feed guarantee appearance in ChatGPT?
No. A feed can make product information more accurate and current, but eligibility and successful ingestion do not guarantee display. Relevance to the user’s request and the wider shopping experience still matter.
How often should a ChatGPT product feed be updated?
OpenAI recommends a full snapshot at least daily for file uploads. Merchants with rapidly changing prices or inventory should design a workflow that keeps those fields as current as their approved delivery method allows.
Should every product variant have its own row?
Yes, when the variant is separately purchasable. Give it a unique stable item ID, connect it to the parent group, and provide variant-specific title, URL, image, price, availability, and option values.

