How to Prepare a ChatGPT Product Feed for Your Store

Learn which fields the OpenAI product feed needs, how to map them from Shopify or WooCommerce and how to keep prices and stock in sync.

Prepare a ChatGPT product feed by turning your catalogue into complete variant records, then automate delivery through the integration OpenAI approves for your store. Start with eligibility: standard direct uploads target the US, so an Australian catalogue priced in AUD needs an explicitly supported market and currency.

Who Can Submit a Feed

OpenAI accepts direct feeds from approved partners. Merchants on other platforms, including WooCommerce, apply through OpenAI’s merchant sign-up form. The form asks for company details, headquarters country, website and catalogue size. An application enters the onboarding process. It doesn’t create an active feed.

Shopify merchants have a different route. OpenAI’s merchant page says Shopify catalogues are already integrated, with no additional feed application required. Maintain your product data and selling settings in Shopify. Read how ChatGPT shopping uses your products for the discovery process.

OpenAI’s merchant page describes shopping availability for US users. Its upload specification defaults to a US target and requires approval for additional markets and currencies. Australian headquarters, an Australian product URL or an AUD price doesn’t enable Australian distribution. For a direct integration, obtain an onboarding configuration that names your supported market and currency before uploading local prices.

Use OpenAI’s Stable file-upload schema for production, with one record per purchasable item or variant. The Draft schema is for planning. The tables below cover discovery data. Checkout requires a separate integration.

OpenAI fieldStatusWhat to supplyGoogle feed equivalent
item_idRequiredStable item or variant IDid
titleRequiredProduct name with selected varianttitle
descriptionRequiredFactual plain-text descriptiondescription
urlRequiredPublic product pagelink
brandRequiredProduct brandbrand
seller_nameRequiredSeller supplying the itemRegistered merchant name
image_urlRequiredPublic variant imageimage_link
availabilityRequiredAccepted stock statusavailability
priceRequiredAmount plus agreed currencyprice
Additional fieldStatusPurpose
gtin, mpnOptional in OpenAI formatIdentify the trade item or manufacturer’s part
group_id, listing_has_variations, variant_dictConditional for variantsGroup selections under one product
color, size, material, product_categoryOptionalDescribe attributes used in matching
additional_image_urlsOptionalShow additional product views
sale_priceOptionalSupply the active discounted price
conditionOptionalIdentify new, used or refurbished goods

A Google-compatible feed is a separate, confirmed upload profile. Renaming a file doesn’t select it. It also has conditional identifier requirements, and its pre-order value is preorder. OpenAI format uses pre_order.

Mapping Your Catalogue

Build the mapping on a copy of your export. Keep the original store file separate from the OpenAI delivery file. Shopify’s downloadable sample uses the column names below. Older exports can have different names.

Shopify sample columnOpenAI outputTransformation
SKUitem_idUse only if unique and stable
Title plus option valuestitleName the selected variant
DescriptiondescriptionRemove HTML
URL handleurlBuild the public storefront URL
VendorbrandConfirm this is the product brand
Variant BarcodesgtinExtract one valid assigned identifier
Option1 name and Option1 valuevariant_dictMap each option name to its value
Price, Compare-at priceprice, sale_priceApply the active sale relationship
Inventory quantityavailabilityCombine quantity with selling rules
Variant image URL, Product image URLimage_urlPrefer the selected variant image
  1. Create one output record per saleable variant. Carry the parent title and description into rows where Shopify leaves them blank. Skip image-only rows.
  2. Keep a permanent ID for each item. Use a shared parent ID as group_id, set listing_has_variations=true and fill variant_dict for variants.
  3. Map the actual options. A hypothetical navy coat in size M needs those values in its title, options and image. “Coat” alone loses the selected variant.
  4. Validate Global Trade Item Numbers (GTINs). Shopify’s sample barcode cell contains typed, semicolon-separated values. Select one assigned GTIN and preserve leading zeros. Never substitute an internal barcode. See what a GTIN identifies.
  5. Map price in the agreed currency. For an approved AUD feed, append AUD to the decimal amount. Don’t relabel an AUD amount as USD. When a valid comparison price is the regular price, map the lower active Price to sale_price.
  6. Derive stock status from what the customer can buy. Positive sellable stock normally maps to in_stock. Zero stock with sales disabled maps to out_of_stock. Use the store’s actual backorder or pre-order policy for exceptions.

Supply seller_name separately from your store settings. A vendor can be the manufacturer while your store is the seller. For multiple Shopify locations, use the inventory export and selling rules instead of assuming the sample’s single-location quantity is complete.

WooCommerce’s built-in export has Name, Description, SKU, Regular price, Sale price, In stock? and Images. Map these to the same output fields. Obtain the currency from store settings and the public URL from the product record. Variation rows need their parent information and selected attributes.

Missing optional GTINs can be omitted in OpenAI format. Google-compatible identifier rules differ. Keep wider catalogue improvements in your improving your product feed.

Keeping Prices and Stock in Sync

OpenAI recommends at least daily full snapshots. Its onboarding guide recommends a full file each day with updates through the application programming interface (API) during the day. Use the delivery methods enabled for your integration.

Schedule export, transformation and validation before each upload. For file delivery, overwrite the same filename or shard set through Secure File Transfer Protocol (SFTP). Alert the catalogue owner when an export or transfer fails. Retain the last successful delivery time and its product count.

Push price and availability changes when a sale starts, ends or stock runs out. Uploaded sale dates don’t schedule those changes for you. If the feed differs from the store, customers can reach a page with another price or unavailable stock. Compare the selected variant in both records, fix the source mapping and send the corrected data.

In OpenAI format, set is_eligible_search=false to disable discovery at the next processed snapshot. Removing a row by omission can retain its last record for up to 14 days. Google-compatible uploads have different eligibility controls.

Confirming OpenAI Accepts Your Feed

Begin with a sample of around 100 items, as OpenAI’s upload guide recommends. Include a product with variants and an out-of-stock item. Validation must succeed before you automate the full catalogue.

Use Upload History to inspect processing and rejected rows. A received file and an accepted product are different outcomes. Valid rows can continue while malformed rows fail.

SymptomCheckCorrection
Missing required columnOutput headers and every rowSupply the exact supported field
Invalid stock valueSelected upload profileTranslate into that profile’s accepted value
Identifier failureGTIN length and check digitCorrect the assigned identifier
Currency failureConfigured market and currencySend the approved currency’s actual price
Wrong variant displayedID, options and public URLCorrect the variant mapping

After processing, compare accepted item counts with your intended sample. Open the sampled product URLs and compare the selected variant’s price and availability with the processed records. Repeat for the first full snapshot. An accepted feed makes products eligible for discovery. It doesn’t guarantee appearance in a ChatGPT answer.