In beta, with limited placesOpen to everyone in Q1 2027

↑↓ to move · Enter to open · Esc to close

Catalog and entities

What are a product's price and availability signals?

Price and availability signals are the data a store uses to declare what a product costs and whether it can be bought: the price with its currency, the sale price and the stock, published at once on the product page, in structured data and in feeds. Search engines and assistants compare those copies, and they are only worth anything if they match and are up to date.

Written by
Reviewed by
Published 8 min read
Takeaway:

Key takeaways

  • A product's price and availability live in several copies at once: the product page, the markup, the Merchant Center feed and the ChatGPT feed.
  • Google compares your feed's price with the one on the page or in the markup; if they differ it can reject the product, and many mismatches can lead to a suspended account.
  • Google reads the price in the HTML your server returns: a price that JavaScript adds after the page loads throws an error.
  • You do not mark a product as out of stock to stop advertising it: Merchant Center has an attribute for pausing it.
  • ChatGPT takes availability and price into account, among other factors, when it ranks the stores that sell the same product.

This is not about how to set prices or how much stock to hold, but about how they get stated. A single product has one price and one stock status, but your store publishes them in several places at once: on the product page the customer sees, in that page's structured data and in every product feed you send out. Each copy is a signal, and whoever reads it does not always read the same one. It matters because these are the data that change most (every markdown, every sale, every restock) and the ones checked most: Google and the assistants compare the copies against each other, and a difference can be enough for a product to stop showing.

How it works

The four usual copies say the same thing in different formats:

Copy Price Availability
The page As a person reads it: "$29.90" As a person reads it: "In stock", "Last few left"
The markup, in the offer price and priceCurrency A single vocabulary value, such as https://schema.org/InStock
The Google Merchant Center feed price, with the currency in_stock, out_of_stock, preorder or backorder
The ChatGPT feed price, the regular price, and sale_price in_stock, out_of_stock, pre_order, backorder or unknown

In the markup, the offer is the Offer type. For merchant listings, Google requires a price greater than zero and the currency as an ISO 4217 code, and asks for a single availability value.⁠[1]Google Search Central. Merchant listing (Product, Offer) structured data The Merchant Center specification asks that the price match the one on the page, in the structured data and in checkout, and that availability match the page, checkout and the markup; and it adds that an out-of-stock product has to keep showing its price visibly on the page.⁠[2]Google Merchant Center Help. Product data specification OpenAI's feed makes availability mandatory on every row: if it is missing or is not one of its values, the row is rejected. The sale price has to be greater than zero, lower than the regular price and in the same currency, and OpenAI asks you to update the feed when a sale starts or ends and when a product sells out or comes back in stock.⁠[3]OpenAI, commerce documentation. Product feed specification: products

Google compares the copies. Its crawler, Googlebot, visits your product pages and compares your feed's price with the one on the page or in the markup. If it finds a difference, the product can be rejected, and Google warns it can lead to the account being suspended. It reads the HTML your server returns: if the price is added with JavaScript after the page loads, that throws an error. When you fix it, it recrawls the rejected products within hours or days.⁠[4]Google Merchant Center Help. How to fix: Mismatched product price Availability works the same way: the feed value and the page value have to match, and too many products with the wrong availability can also lead to suspension.⁠[5]Google Merchant Center Help. How to fix: Mismatched product availability

The most common cause is the clock. Google lists as frequent causes the time gap between what you change on the site and what reaches Merchant Center, incorrect markup, a different price for bots than for people and, during sales, start and end dates or a time zone set wrong on the sale price.⁠[4]Google Merchant Center Help. How to fix: Mismatched product price That is why it recommends syncing feed uploads with store changes or, if you change prices and stock often, turning on automatic updates.⁠[5]Google Merchant Center Help. How to fix: Mismatched product availability Those updates use your page's structured data to correct the price, sale price, availability and condition of the product in Merchant Center, but they do not replace an up-to-date feed, they may not work with products whose price or availability changes more than once a day and, if they detect a difference, they may reject the product instead of updating it.⁠[6]Google Merchant Center Help. About automations for price, availability and condition

The markup has to arrive on time too. Google warns that product markup generated with JavaScript can make Shopping crawls less frequent and less reliable, a problem for anything that changes fast, like price and availability.⁠[7]Google Search Central. Generate structured data with JavaScript

Assistants use it too. When several merchants sell the same product, ChatGPT ranks them taking into account availability, price, quality and whether they are the manufacturer or the primary seller. OpenAI acknowledges that when a merchant changes its price or shipping terms, it can take a while to show up in what the user sees.⁠[8]OpenAI, help center. Shopping with ChatGPT Search

In a store

A shirt goes on sale on Monday at 9:00. At 11:00, the store checks its four copies. This is a fictitious example: the store, the product, the prices and the times are invented to show where the difference appears.

Copy, at 11:00 (fictitious example) Price Availability Does it match the page?
The page $29.90 In stock It is the reference
The page's markup 29.90 USD InStock Yes
The Merchant Center feed $39.90, no sale_price in_stock No: the price is the pre-sale one
The ChatGPT feed $39.90 Empty No: the price is the old one, and a row with no availability is rejected

Two takeaways. The page and the markup are fine, and there is still a problem: the Merchant Center feed goes out once a day and does not yet know about the sale, so if Google crawls the page that morning it will find two different prices.⁠[4]Google Merchant Center Help. How to fix: Mismatched product price The fix is not to touch the page but the feed: send the sale price with its start and end dates, or let automatic updates correct it if the price does not change more than once a day.⁠[6]Google Merchant Center Help. About automations for price, availability and condition The second: in the ChatGPT feed, empty availability is not a warning, it is a rejected row.⁠[3]OpenAI, commerce documentation. Product feed specification: products

Warning:

What people often get wrong

Marking a product as out of stock to stop advertising it. If the page says there is stock, that creates exactly the mismatch Google punishes. Merchant Center asks you not to use out_of_stock to pause a product: that is what the pause attribute is for, for a maximum of 14 days, and the excluded destination attribute if it is for longer.⁠[5]Google Merchant Center Help. How to fix: Mismatched product availability

How to check it

  1. Pick a product that is on sale or low on stock and write down what a customer sees on the page.
  2. Open the page's source code, not the browser inspector, and look for the markup's price and availability. If they only show up in the inspector, JavaScript is adding them after load.⁠[4]Google Merchant Center Help. How to fix: Mismatched product price⁠[7]Google Search Central. Generate structured data with JavaScript
  3. Go to Merchant Center, to Products, to the Needs attention tab, and filter by the mismatched price and availability issues.⁠[5]Google Merchant Center Help. How to fix: Mismatched product availability
  4. If you use a sale price, check its start and end dates and the time zone: an error there shows a wrong price even if everything else is right.⁠[4]Google Merchant Center Help. How to fix: Mismatched product price
  5. Check every row of your ChatGPT feed: availability has to be one of the accepted values, and unknown only when you really do not know.⁠[3]OpenAI, commerce documentation. Product feed specification: products

Offer is just one of the copies: the one in the page's markup, with its price, its currency and its availability. Price and availability signals are the whole set, and the problem is usually not inside any one copy but between them: a perfect offer in the markup is no use if the feed says a different price. When a copy that was right stops matching over time, the name for it is data drift.

To go further, the catalog and entities reading path orders the rest of the terms, and the entry on return policy covers the other sales conditions that search engines and assistants read.

Synonyms

English
price and availability, price and availability signals
Español
precio y existencias, datos de precio y disponibilidad

Sources

  1. [1] Google Search Central. Merchant listing (Product, Offer) structured data. Accessed . ↑
  2. [2] Google Merchant Center Help. Product data specification. Accessed . ↑
  3. [3] OpenAI, commerce documentation. Product feed specification: products. Accessed . ↑ ↑ ↑
  4. [4] Google Merchant Center Help. How to fix: Mismatched product price. Accessed . ↑ ↑ ↑ ↑ ↑
  5. [5] Google Merchant Center Help. How to fix: Mismatched product availability. Accessed . ↑ ↑ ↑ ↑
  6. [6] Google Merchant Center Help. About automations for price, availability and condition. Accessed . ↑ ↑
  7. [7] Google Search Central. Generate structured data with JavaScript. Accessed . ↑ ↑
  8. [8] OpenAI, help center. Shopping with ChatGPT Search. Accessed . ↑

Change history

  • First English version.

This definition is published under CC BY 4.0. Reuse this definition freely, crediting Clione with a link to this page.

Make your catalog easy for bots to read

Clione fills every product page with what bots read best: the JSON-LD graph with its structured data, the meta description and the FAQs. You review and press Push; then we check your live store so it all stays published.