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.
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
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
- Pick a product that is on sale or low on stock and write down what a customer sees on the page.
- 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
- 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
- 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
- Check every row of your ChatGPT feed: availability has to be one of the accepted values, and
unknownonly when you really do not know.[3]OpenAI, commerce documentation. Product feed specification: products
Related concept: Offer
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] Google Search Central. Merchant listing (Product, Offer) structured data. Accessed . ↑
- [2] Google Merchant Center Help. Product data specification. Accessed . ↑
- [3] OpenAI, commerce documentation. Product feed specification: products. Accessed . ↑ ↑ ↑
- [4] Google Merchant Center Help. How to fix: Mismatched product price. Accessed . ↑ ↑ ↑ ↑ ↑
- [5] Google Merchant Center Help. How to fix: Mismatched product availability. Accessed . ↑ ↑ ↑ ↑
- [6] Google Merchant Center Help. About automations for price, availability and condition. Accessed . ↑ ↑
- [7] Google Search Central. Generate structured data with JavaScript. Accessed . ↑ ↑
- [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.
Related terms
Offer
What the Schema.org Offer type is, how to write price, currency and availability, what Google requires, and how Offer differs from AggregateOffer.
Return policy
What a return policy is for an online store, what it should include, and what Google, Merchant Center and ChatGPT read from it.
B2B ecommerce
What B2B ecommerce is, what sets it apart from a B2C store (per-customer pricing, minimum orders, login access) and what Google and AI agents see of it.
UGC
What UGC (user-generated content) is in a store: customer reviews, photos and questions, how Google and ChatGPT read it and how to moderate it.
OfferShippingDetails
What OfferShippingDetails is, what Google asks for to show shipping cost and delivery time, when to use it versus a store-wide policy and how to check it.
Merchant listings
What Google's merchant listings are, where they appear, which Product and Offer markup they need and how to check whether your product page is eligible.
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.