# Product feeds and merchant listings for AI shopping

> What product feeds do for AI shopping, the Google and OpenAI feed programs, keeping feed, page and structured data in agreement, and how often to update.

By Ghost Agent Lab · Readability · https://ghostagentlab.com/articles/product-feeds-ai-shopping/

## Key takeaways

- A product feed gives a shopping platform your whole catalog at once, but it adds to your product pages rather than replacing them.
- Google Merchant Center and OpenAI's product feed for ChatGPT both have public documentation, and OpenAI's program is open to approved partners.
- Google requires feed price and availability to match the landing page, structured data and checkout, so generate all three from one product record.
- Send a full feed at least daily and push price and stock changes when they happen, since dates in a feed don't schedule changes for you.
- This week, compare price and stock for five products across your feed, page JSON-LD and visible page, and fix the first mismatch at its source.

A product feed hands your whole catalog to a shopping platform in one file, instead of leaving it to read your pages one by one. Google has run merchant feeds for years, and OpenAI now documents a product feed for ChatGPT. This guide explains what feeds do, the two programs with public documentation today, how to keep feed, page and structured data saying the same thing, and how often to update.

## What a product feed is

A product feed is a structured list of everything you sell: one row per product or variant, with its title, description, link, image, price, availability and identifiers. You send it to a platform on a schedule, as a file upload or through an API, and the platform uses it to show your products in its shopping results.

Feeds and product pages do different jobs:

- **The feed** gives a platform the whole catalog at once, in a format it defined, without crawling thousands of pages.
- **Your product pages** are what assistants fetch when a shopper asks about one product, what browser agents act on when they add to cart, and what the shopper sees when they click through.

So a feed adds to your pages; it doesn't replace them. And because the platform sees both, they have to agree.

**Three copies of the same facts**

- **Product feed:** Sent to Google, OpenAI or other platforms
- **Structured data:** Product JSON-LD in the page HTML
- **Visible page:** What shoppers and browser agents read

**One product, three sources.** Price, stock and identifiers live in all three, and platforms compare them.

## Two feed programs you can read about today

Many AI shopping features are new, and not all of them publish how merchants take part. Two programs have official, public documentation:

|  | Google Merchant Center | OpenAI product feeds for ChatGPT |
| --- | --- | --- |
| **What it feeds** | Shopping ads and free listings on Google | Product discovery in ChatGPT, as part of the Agentic Commerce Protocol, with separate requirements for ads and checkout |
| **Who can join** | Merchants with a Merchant Center account | Approved partners; OpenAI's docs link to an application form |
| **How you send it** | Product data sources (files or the Merchant API); Google can also update price, availability and condition from your structured data | A full snapshot file over SFTP, or an API; OpenAI generally recommends the full file once a day plus updates through the API during the day |
| **Core fields** | Defined in the Merchant Center product data specification | Nine required fields: item ID, title, description, URL, brand, seller name, image URL, availability and price |

OpenAI presents the feed as the first step of an Agentic Commerce Protocol integration. The feed covers discovery; checkout through ChatGPT is a separate integration that has to be enabled on its own. For how ACP compares with other protocols, see [agentic commerce protocols explained](https://ghostagentlab.com/articles/agentic-commerce-protocols/).

> **Ask your platform first.** Most e-commerce platforms have a feed app or built-in channel for Google. For newer AI programs, ask your platform or feed tool whether it supports them and which fields it fills in. [Questions to ask your e-commerce platform](https://ghostagentlab.com/blog/questions-to-ask-your-ecommerce-platform/) has a list.

## Keep feed, page and structured data in agreement

Google's [product data specification](https://support.google.com/merchants/answer/7052112) is explicit. Availability must match your landing page, checkout pages and structured data. Price and currency must match your landing page, structured data and checkout. If an item is out of stock, the price must still be clearly visible on the page. Titles and descriptions should match the landing page too.

The reason is trust. A shopper who sees $49 in a listing and $59 on the page feels misled, and so does the platform that showed the listing. AI agents add a second risk: an assistant that quotes your feed price and then finds a different one on the page has to decide which to believe, and may leave you out.

Mismatches usually come from timing or from different systems:

- **A sale starts on the site** but the feed only refreshes overnight.
- **Stock sells out** and the page updates, but the feed still says in stock.
- **The structured data is hard-coded in the theme** and shows the regular price while the page shows the sale price.
- **The feed uses a different variant** from the one the link opens, so the price is for size S and the page defaults to size XL.

**Out of step:**

- ✗ Feed: $49, in stock
- ✗ Structured data: $59, in stock
- ✗ Page: $49, sold out

**In agreement:**

- ✓ Feed: $49, in stock
- ✓ Structured data: $49, InStock
- ✓ Page: $49, add to cart works

**Which one is true?** When the three sources disagree, a platform or agent has to guess, and you lose the benefit of the doubt.

The fix is to generate all three from the same product record. Feed apps and themes that read live product data stay in step; hand-maintained spreadsheets and hard-coded markup drift. For the structured data side, see [product data that AI shopping agents can read](https://ghostagentlab.com/articles/structured-data-ai-shopping-agents/) and [prices AI agents can read](https://ghostagentlab.com/articles/machine-readable-prices/). Identifiers belong in all three as well: see [product identifiers for AI shopping agents](https://ghostagentlab.com/articles/product-identifiers-gtin-mpn/).

## How often to update

Both programs say the same thing in different words: send changes when they happen, not only on a fixed schedule.

- **OpenAI** recommends a full snapshot at least daily ([file upload overview](https://developers.openai.com/commerce/specs/file-upload/overview)). Its [products spec](https://developers.openai.com/commerce/specs/file-upload/products) says to update the feed when a sale starts or ends and to update availability when an item sells out or comes back. Dates in the feed don't schedule changes for you. A product left out of later snapshots is kept for up to 14 days before it drops, so use the search eligibility flag when something must come down at the next processing.
- **Google** can correct price, availability and condition from your structured data with its [automatic updates](https://support.google.com/merchants/answer/12157888), but says these are for sporadic problems, not a replacement for regular feed updates. If you expect prices or stock to change frequently, it points merchants to the Merchant API.

1. **Daily:** **Full snapshot.** The whole catalog, overwriting yesterday's file
2. **When it happens:** **Price changes.** Sales starting and ending, through an API if offered
3. **When it happens:** **Stock changes.** Sold out and back in stock, as they occur

**A rhythm that keeps feeds honest.** A daily full file, plus prompt updates for the two facts that change fastest.

## Availability values that mean the same thing

Each system has its own words for stock status. Map them once, so "backorder" in your platform becomes the matching value everywhere:

| Situation | Schema.org (page) | Google feed | OpenAI feed |
| --- | --- | --- | --- |
| Ready to ship | `InStock` | `in_stock` | `in_stock` |
| Sold out | `OutOfStock` | `out_of_stock` | `out_of_stock` |
| Not released yet, taking orders | `PreOrder` | `preorder` | `pre_order` |
| Temporarily out, taking orders | `BackOrder` | `backorder` | `backorder` |

Google asks for an availability date whenever you use `preorder` or `backorder`, and wants that date shown on the landing page too. OpenAI uses `pre_order` for an item offered before release and `backorder` for one temporarily awaiting stock. Its feed also accepts `unknown` when stock status really isn't available, and rejects a row with no availability at all.

## What AgentScore checks

AgentScore doesn't see your feeds; they go straight from you to each platform. It checks the page side of the agreement. The Readability check "Product pages give price and stock in a form agents can read" (3 points) opens a product page and reads its Product JSON-LD. It passes when the offer gives a price, a currency and availability, warns when one is missing or the data is only added by JavaScript, and fails when there's no product data at all. The related check "Prices are in the page HTML" (2 points) looks for prices in the HTML before JavaScript runs.

Passing both means the page half is readable. Whether it matches your feed is something only you can check, using the steps below or the product issues Merchant Center reports.

## Where to start

> **A feed agreement spot check:**
>
> 1. Pick five products: a bestseller, one on sale, one sold out, one with variants and one recently changed.
> 2. For each, write down the price and stock in your feed (export it from Merchant Center or your feed app), in the page's JSON-LD (view source, search for "offers"), and on the visible page.
> 3. Note every mismatch and trace where each value comes from: the platform, a feed app, the theme or a spreadsheet.
> 4. Check when your feed refreshes and whether sales and sell-outs trigger an update.
> 5. If you want to appear in ChatGPT shopping, read OpenAI's feed spec with your platform or feed vendor and ask whether they support it.

Feeds are one way assistants learn about your products; [how AI assistants choose products and stores](https://ghostagentlab.com/articles/how-ai-assistants-choose-products/) covers the rest. This week, run the five-product spot check and fix the first mismatch you find at its source.

## Sources and further reading

- [Product data specification](https://support.google.com/merchants/answer/7052112) (Google Merchant Center Help)
- [Allow Merchant Center to update product information automatically](https://support.google.com/merchants/answer/12157888) (Google Merchant Center Help)
- [Agentic Commerce: Get started](https://developers.openai.com/commerce/guides/get-started) (OpenAI)
- [Agentic Commerce: Products (file upload)](https://developers.openai.com/commerce/specs/file-upload/products) (OpenAI)
- [Agentic Commerce: File upload overview](https://developers.openai.com/commerce/specs/file-upload/overview) (OpenAI)
