Black Friday is Nov 27. Shoppers will ask AI what to buy — is your catalog readable?Check yours free
GigaCommerce

The OpenAI Product Feed Spec, Field by Field, With Shopify Mappings

Every field in OpenAI's product feed spec, mapped to the Shopify field or metafield it comes from, and why most Shopify stores never build it. Check your store.

Sujan BhuiyanSujan BhuiyanFounder, GigaCommerce · 14 MIN · GUIDE
Short answer

OpenAI's product feed spec is the schema merchants use to share a catalog with ChatGPT under the Agentic Commerce Protocol: one row per variant, nine required fields (`item_id`, `title`, `description`, `url`, `brand`, `seller_name`, `image_url`, `availability`, `price`), sent as a full snapshot at least daily.

  • Most Shopify merchants should not build it. OpenAI says Shopify and Etsy catalogs are already integrated, with no application or setup required. Shopify Catalog sends your data for you. The spec is for merchants on other stacks, and direct feeds are open only to approved partners.
  • Every required field has a home in Shopify: variant ID, title plus options, description, the product URL with `?variant=`, vendor, store name, variant image, inventory and price. The weak spots are GTINs, product dimensions, material, gender and age group, and review aggregates.
  • Even if you never upload a file, the spec is a free checklist of what ChatGPT can use. Fill the matching Shopify fields (Barcode, category metafields, review metafields, return rules, policies) and Shopify Catalog carries them for you.

The OpenAI product feed spec defines how a merchant sends product data straight to OpenAI so ChatGPT can show it in shopping results. It asks for one row per purchasable variant, with nine required fields and about forty optional ones, delivered as a full catalog snapshot at least once a day. If you sell on Shopify, you almost certainly don't need to build it: OpenAI says Shopify catalogs are already integrated into ChatGPT through Shopify Catalog. But the spec is still the clearest list anyone has published of what ChatGPT can read about a product, so it's worth knowing where each field lives in your admin.

This guide maps each field to the Shopify field, setting or metafield it comes from, and flags where Shopify has no native home. Field rules come from OpenAI's Products spec and Shopify's help center as of October 22, 2026, listed under Sources.

OpenAI product feed
A structured catalog file (or API stream) that a merchant shares with OpenAI so ChatGPT can index its products and show current price and availability. It follows OpenAI's published Products spec and is part of the Agentic Commerce Protocol.
Agentic Commerce Protocol (ACP)
An open standard, developed by OpenAI and Stripe and licensed under Apache 2.0, for how AI agents and businesses exchange product data, checkout sessions and payment tokens. OpenAI says merchants start an ACP integration by sharing a product feed.
Shopify Catalog
Shopify's structured index of merchants' products, which feeds agentic storefronts in AI channels such as ChatGPT, Microsoft Copilot and Google AI Mode. It shares title, description, options, images, price, availability and other key attributes, and updates continuously.

Do Shopify merchants need to build an OpenAI product feed?

No, not if your store is eligible for Shopify's agentic storefronts. OpenAI's shopping help article says product data for Shopify merchants is already integrated into ChatGPT through Shopify Catalog, and no additional work is required from individual merchants. OpenAI's merchant page goes further: if you sell through Shopify or Etsy, your catalog is already integrated, and no additional setup or application is required.

Shopify says the same from its side. Its ChatGPT help page says products are discovered through Shopify Catalog, the channel is active by default for eligible stores, and there are no fees for selling in ChatGPT. You manage it under Sales channels → Agentic, not by exporting a file.

Direct feeds are for everyone else, and access is gated. OpenAI's get-started guide says onboarding product feeds is currently open to approved partners who apply through chatgpt.com/merchants, and that page says applicants join a waitlist. OpenAI's March 24, 2026 announcement also names third-party providers, including Salesforce and Stripe, as delivery paths.

Your situationHow products reach ChatGPTBuild an OpenAI feed?What to work on instead
Eligible Shopify store, agentic storefronts on (the default)Shopify CatalogNo. OpenAI says no setup or application is neededThe Shopify fields this guide maps, plus Catalog Mapping
Shopify store with ChatGPT's Catalog access turned offOpen-web crawling only, per ShopifyNot documented. OpenAI's pages describe no direct-feed route for an opted-out Shopify storeDecide whether to turn access back on; see turning off agentic storefronts
Shopify store failing Catalog eligibilityOpen web only, if at allNo. Fix eligibility firstWhy products don't show in ChatGPT
Etsy sellerEtsy's integrationNo. OpenAI says no setup is neededYour Etsy listing data
Custom, headless or non-Shopify platformDirect feed, or a provider such as Salesforce or StripeYes, once approvedThis spec, starting with a 100-item sample
Large multi-channel retailerDirect ACP integrationYesFeed plus API updates and promotions
Who should send OpenAI a feed, and who should work on their Shopify data instead (as of October 2026).

How does a direct feed get to OpenAI?

OpenAI recommends the full feed once a day by file upload, then updates through the day by API. Promotions can only be sent by API.

  1. 01

    Apply and wait for approval

    Apply at chatgpt.com/merchants. Direct feeds are open to approved partners; OpenAI says a self-serve merchant platform is being built.

  2. 02

    Validate a small sample

    Start with around 100 items, every required field in every row, and QA the first full snapshot before automating.

  3. 03

    Push full snapshots by SFTP

    A complete export at least daily. OpenAI prefers Parquet (ideally zstd-compressed) and accepts jsonl.gz, csv.gz and tsv.gz, in UTF-8, with stable file names overwritten each run and up to 500,000 items per shard.

  4. 04

    Send intraday changes by API

    PATCH /product_feeds/{id}/products upserts products matched by id. Its schema differs from the file: nested variants, and prices as integers in minor units.

  5. 05

    Remove products deliberately

    A product missing from a snapshot is kept for up to 14 days. To pull one sooner, set is_eligible_search to false.

What are the nine required fields, and where does each come from in Shopify?

A missing or unrecognized availability value rejects the row outright. Elsewhere, OpenAI warns that not every invalid value is rejected, so a bad value can load and still mislead.

OpenAI fieldWhat OpenAI asks forShopify sourceWatch out for
item_idStable ID, unique per item or variant; never reusedThe variant ID (or a SKU, if every variant has a unique one)SKUs are optional in Shopify. Never key on something that changes when you edit a listing
titleProduct name with the variant; aim for 150 characters or fewerProduct title plus the variant's option values"Trail shoe — black, size 10", not the bare product title on every row
descriptionFactual plain text; aim for 5,000 characters or fewerThe product description, with HTML strippedPut the buying facts early. Shopify asks for legal disclosures in the first 6,000 characters
urlProduct page with the variant selected; stablehttps://yourstore.com/products/{handle}?variant={variant ID}Shopify supports ?variant= deep links. Changing a handle breaks the URL
brandBrand as shown on the product pageVendorShopify defines vendor as the manufacturer, wholesaler or other supplier. Resellers may hold the supplier there, not the brand
seller_nameThe seller supplying the offerYour store name as shoppers know itNo placeholders. Keep it identical across rows
image_urlDirect JPEG or PNG link showing this variantThe variant's image, else the first product media itemA lifestyle shot of a different colourway misdescribes the row
availabilityin_stock, out_of_stock, pre_order, backorder or unknownVariant inventory plus the "Continue selling when out of stock" settingOverselling at zero is a choice: map it to backorder or pre_order, whichever is true
priceRegular price as 79.99 USDVariant price, or the compare-at price during a genuine sale (see below)No currency symbols, thousands separators or rounding
OpenAI's required fields mapped to Shopify (file-upload spec, October 2026).

Price and sale price: the one mapping that inverts

Shopify and OpenAI name prices the other way round. In Shopify, Price is what you charge and Compare-at price is the higher original shown beside it. In OpenAI's spec, price is the regular price and sale_price is the current sale price, which must be greater than zero, strictly lower than price and in the same currency, or it's ignored. So during a sale, the compare-at price goes in price and the Shopify price goes in sale_price. Outside a sale, send the Shopify price as price and omit sale_price.

Only do this when the compare-at price is a real regular price. Shopify's Catalog Mapping has its own switch for sending compare-at prices to AI agents. Sale dates don't schedule anything in OpenAI's spec, so update the feed when a sale starts and ends. When AI shopping quotes the wrong price covers what happens when these drift.

How do Shopify variants map to OpenAI's variant fields?

OpenAI wants a separate row for every purchasable selection, tied together by a parent ID. Shopify's product-and-variant model maps onto it cleanly:

  • `group_id` ← the Shopify product ID. Every variant row shares it, and it must differ from each row's item_id.
  • `listing_has_variations` ← true on every variant row of a product that has options.
  • `variant_dict` ← the variant's option names and values, such as {"color":"Black","size":"10"}. Use the same option names across the group, and no duplicate combinations.
  • Single-variant products ← send one row without the three fields above. A group_id that equals item_id doesn't create a group.
  • `offer_id` ← optional. If you use it, never put the price inside the ID.

Group only variants of the same product as presented on your site; each row carries its own price, availability, URL and images. Shopify Catalog solves the same grouping question with Combined Listings or Catalog Mapping. Our guide to variant data that doesn't confuse AI agents covers the structure in detail.

GTIN and MPN

gtin is optional but strict: exactly 8, 12, 13 or 14 digits with a valid check digit, no spaces or dashes, leading zeros kept. In Shopify it comes from the variant's Barcode. Shopify lets you add up to 20 barcodes per variant and type them (GTIN, UPC, EAN, ISBN, ASIN, or Custom, which takes any value up to 255 characters), so filter to real GTINs before export. An ISBN-10 isn't accepted; send the ISBN-13. Shopify also reserves standard metafields for UPC (facts.upc), EAN (facts.ean) and ISBN (facts.isbn) if an app writes them there.

mpn has no native Shopify field. Keep it in a product or variant metafield if the manufacturer assigns one. OpenAI is explicit: submit it with brand, and don't invent a value to stand in for a missing GTIN. Your SKU is not an MPN unless you're the manufacturer and they're the same thing.

Which optional fields matter, and where do they live in Shopify?

None are required, but they're the facts shoppers filter and compare on. OpenAI says optional fields can improve answer quality, and to leave one out if it needs brittle transforms.

OpenAI fieldAllowed valuesShopify sourceGap or catch
product_categoryBroad-to-specific path separated by >Product category (Shopify Standard Product Taxonomy)Shopify's category path already uses this shape
conditionnew, refurbished, usedThe Condition category metafield, where your category has itOmitted may be read as new. Always send used or refurbished
color, sizeFree text, consistent with the imageVariant options; Color and Size category metafieldsWhen size separates variants, use variant_dict
materialPrincipal materialsMaterial or Fabric category metafieldOften trapped in description prose. Move it to the field
gendermale, female, unisexTarget gender category metafieldMap Shopify's values to OpenAI's three
age_groupnewborn, infant, toddler, kids, adultAge group category metafieldA product attribute, not a purchase-age limit
dimensionsAt least two of length, width, height, plus unitNo native field; use a custom metafieldShopify's packed size is package dimensions, which OpenAI excludes
weight + item_weight_unitPositive net weight; g, kg, oz, lbVariant weightShopify's weight drives shipping rates. Send net weight, not packed
additional_image_urlsArray, or comma-separated in CSVRemaining product mediaPercent-encode commas inside URLs as %2C
seller_urlStorefront or seller pageYour store's home pageOne value for the whole feed
shipping_priceNon-negative money; omitted means unknownNo per-product shipping price field in ShopifySend it only if one charge is true for the item. Omitted means unknown; zero means free
accepts_returns, return_deadline_in_daysBoolean; positive whole daysReturn rules under Settings → Policies (14, 30, 90 days or custom)Final-sale products: false and no window
return_policyPublic policy URL/policies/refund-policyA URL doesn't set accepts_returns for you
review_count, star_ratingCount; 0–5 to two decimalsreviews.rating_count and reviews.rating metafields from your review appProduct reviews only. Rescale if your app's scale isn't 0–5
OpenAI's optional item, media, fulfillment, returns and review fields mapped to Shopify.

Category metafields are the attributes of Shopify's Standard Product Taxonomy, and which ones appear depends on the category you assign. Where one doesn't apply, omit the OpenAI field: the spec says to leave unknown optional values out rather than send placeholders. The product attribute schema design guide covers how to decide which attributes each category needs.

Fields that need setup on OpenAI's side

Some columns do nothing in a standard upload. marketplace_seller, size_system, store review fields, accepts_exchanges, is_digital and the shipping tuple all need an integration configured to carry them, and market columns (target_countries, store_country) don't change the default: standard uploads target the US.

What do the search, checkout and ads flags do?

The spec carries three opt-in flags, and each is independent of the others:

  • `is_eligible_search` defaults to true. Setting it to false removes the item from search and also disables checkout for it. OpenAI notes eligibility doesn't guarantee display.
  • `is_eligible_checkout` defaults to disabled and only works when checkout is separately enabled for your integration. It also calls for seller_privacy_policy and seller_tos (on Shopify, /policies/privacy-policy and /policies/terms-of-service).
  • `is_ads_eligible` is for ChatGPT ads, off unless your feed sets an Ads default, and has no effect on organic search. See ChatGPT ads for ecommerce.

Read the checkout flag in context. Since March 24, 2026, OpenAI lets merchants use their own checkout while it focuses on product discovery, and its merchant page says shoppers go to your site or app by default, with no fees on those purchases. What happened to Instant Checkout walks through the timeline. For a Shopify store the question doesn't arise: on ChatGPT, agentic storefronts send the purchase to your own online store checkout.

What breaks an OpenAI feed most often?

OpenAI names three common ingestion failures: missing required fields, outdated or non-spec field names, and malformed values. They usually come from these habits:

  • Prices in the wrong shape. $79.99 and 79.99 don't match the money format. It has to be 79.99 USD.
  • Placeholder strings. null or n/a in an optional field is worse than leaving it empty. Only availability accepts unknown.
  • Identifiers stored as numbers. Spreadsheets can strip leading zeros from GTINs and IDs. Keep identifiers as strings.
  • Legacy column names. Old aliases such as sku for item_id still load, but send one name per value, and migrate old Custom_variant1_category pairs to variant_dict.
  • Stale snapshots. OpenAI says to update the feed whenever price or availability changes, not only on the daily run.

How do I make my Shopify data feed-ready without building a feed?

Treat the spec as a field audit for Shopify Catalog, which carries what your admin holds. Catalog Mapping, under Sales channels → Agentic → Sources → Shopify Catalog → Review product data mapping, lets you choose where title, description and category come from (product fields, metafields or metaobject references) and how variants group.

  1. 01

    Fix the required nine first

    Every variant needs a title with its options, a real description, an image, a vendor that holds the brand, a price above 0 and accurate stock. The title, image and price also decide Shopify Catalog eligibility.

  2. 02

    Assign a product category to everything

    The category unlocks category metafields (color, size, material, target gender, age group, condition), the same facts OpenAI's optional fields ask for.

  3. 03

    Clean up barcodes

    Set each real GTIN with the right barcode type and check digit. Leave Custom-type internal codes out of anything you call a GTIN.

  4. 04

    Set return rules and policies

    Configure the return window and final-sale exceptions under Settings → Policies, and complete the refund, privacy and terms pages. ChatGPT via Shopify requires all three policies.

  5. 05

    Connect reviews to standard metafields

    Make sure your review app writes reviews.rating and reviews.rating_count, so the aggregate exists as data and not only as a theme widget.

  6. 06

    Map anything custom

    If material, dimensions or grouping live in custom metafields or tags, use Catalog Mapping where it supports the field, and keep the value in a structured field rather than prose.

The catalog enrichment for AI playbook sets the order of work for a large catalog. For how this route compares with Google Merchant Center, Microsoft and Perplexity, start with the AI shopping channels guide.

See what ChatGPT can read about your productsThe free AI Channel Eligibility Check reads your public product data, policies, robots.txt and structured data, and lists the admin-only checks to finish yourself.Run the eligibility check

If you'd rather hand over the catalog work, from category metafields to GTIN cleanup and Catalog Mapping, that's what Agentic Commerce Setup covers for Shopify stores.

FAQ

What is the OpenAI product feed spec?

It's OpenAI's published schema for sharing a product catalog with ChatGPT. Each row is one purchasable item or variant, with nine required fields (ID, title, description, URL, brand, seller name, image, availability and price) and optional fields for variants, attributes, shipping, returns, reviews, ads and checkout. It's delivered as a daily full snapshot by SFTP, with API updates.

Do I need an OpenAI product feed if I use Shopify?

Not if your store is eligible for agentic storefronts. OpenAI says Shopify catalogs are already integrated into ChatGPT through Shopify Catalog, with no setup or application required, and Shopify says the ChatGPT channel is active by default for eligible stores. Your work is the product data in your Shopify admin, which Catalog sends for you.

Who can send a direct product feed to OpenAI?

OpenAI says onboarding product feeds is currently open to approved partners, who apply at chatgpt.com/merchants and join a waitlist. OpenAI also says it supports delivery through third-party providers such as Salesforce and Stripe, and is building a self-serve merchant platform. Shopify and Etsy sellers don't need to apply.

Is GTIN required in the OpenAI product feed?

No. `gtin` is optional, but if you send it, it must be exactly 8, 12, 13 or 14 digits with a valid check digit and no spaces or dashes. In Shopify it comes from the variant's Barcode field. Don't invent an MPN to replace a missing GTIN; OpenAI's spec says so explicitly.

How often should an OpenAI product feed update?

OpenAI asks for a full snapshot at least daily, overwriting the same file names, and recommends sending changes during the day through its API. It also says to update the feed whenever prices or availability change. Products left out of later snapshots expire within 14 days unless you set is_eligible_search to false.

Does the product feed let customers check out inside ChatGPT?

Not on its own. The checkout flag is off by default and only works when checkout is enabled for your integration, which OpenAI says is separate from the feed. Since March 24, 2026, OpenAI lets merchants use their own checkout, and its merchant page says shoppers go to your site or app by default.

Sources

  1. 1.Products (product feed specification) · OpenAIRequired feed fields; GTIN optional; keep price and availability current
  2. 2.File upload overview · OpenAI DevelopersDaily full snapshots over SFTP, file formats, common ingestion failures
  3. 3.Get started (Agentic Commerce) · OpenAI DevelopersFeeds open to approved partners; daily file plus API updates
  4. 4.Best practices (product feeds) · OpenAI DevelopersWhich optional fields improve answers
  5. 5.Products API · OpenAI DevelopersUpserts matched by id, nested variants, prices in minor units
  6. 6.Shopping with ChatGPT Search · OpenAI Help CenterHow ChatGPT picks products: provider metadata, Shopify Catalog, direct feeds; results aren't ads
  7. 7.Power product discovery in ChatGPT (merchants) · OpenAIShopify and Etsy catalogs need no application; shoppers go to the merchant's site by default
  8. 8.Powering product discovery in ChatGPT · OpenAIMarch 24, 2026: merchants' own checkout replaces Instant Checkout
  9. 9.Agentic Commerce Protocol · Agentic Commerce Protocol (OpenAI and Stripe)Open standard under Apache 2.0, developed by Stripe and OpenAI
  10. 10.Selling on ChatGPT · Shopify Help CenterProducts reach ChatGPT through Shopify Catalog; checkout on your store; no ChatGPT fees
  11. 11.Shopify Catalog Mapping · Shopify Help CenterTitle, description and category sources; variant grouping; compare-at price
  12. 12.Requirements for Shopify Catalog · Shopify Help CenterStarter plan or higher; no Plus requirement for AI channels
  13. 13.Product details page · Shopify Help CenterPrice vs compare-at, barcode types, vendor, weight
  14. 14.Category metafields · Shopify Help CenterCategory attributes from the Standard Product Taxonomy
  15. 15.List of standard metafield definitions · Shopify.devReview rating and count, UPC, EAN and ISBN metafields
  16. 16.Adding store policies · Shopify Help CenterPolicy page URLs the feed's policy fields point to
Free check

Can AI channels list your products?

Every product in your public feed against Shopify Catalog's rules, plus robots.txt, policies and product data. About 20 seconds.

Run the eligibility check
The operator's briefOne email a week on what shippedPlatform changes from Shopify, Amazon, OpenAI and Google, and what to do about each.Subscribe
Sujan Bhuiyan
Sujan BhuiyanFounder, GigaCommerce

Founder of GigaCommerce, part of Gigaverse. Works with mid-market Shopify and Amazon merchants on agentic commerce installs, AI-ready catalogs, and Commerce GEO.

LinkedIn
Cite this articleBhuiyan, S. (2026, Oct 22). The OpenAI Product Feed Spec, Field by Field, With Shopify Mappings. GigaCommerce Insights. gigacommerce.co/insights/ai-channels/openai-product-feed-spec-shopify
The operator's brief · weekly

One email a week. What shipped, and what to do about it.

No spam. Unsubscribe in one click.