Back to Blog
Guides

Structuring Online and In-Store Inventory for Search and AI

Navigation Tags

  • Search OS
  • EC in general

Structuring Online and In-Store Inventory for Search and AI

Category
Guides
Reading Time
7 min read
Topic
Japan EC platform guides for search and AI search

For search engines and AI to read online and in-store inventory correctly, two conditions apply: separate the stock state by channel, and keep the on-screen display and the structured data showing the same value. This article covers how inventory affects AI recommendations, a case of hidden out-of-stock text, per-channel representation, and the connection to store information.

Source URL
searchos.io/en/blog
Copyright
© 2026 Search OS

Products that are out of stock online but in stock at a store are not unusual. Shops ask how to structure inventory information so that search and AI can tell people they can buy nearby.

The answer has two stages. First, represent the stock state separately for each channel. Don't mix online stock with store stock. Second, keep the stock wording visible on screen and the stock value in the structured data always the same. Structured data is a description of a page's content written in a form machines can read. When either of these breaks, search engines stop trusting the inventory information. AI drops the product from its recommendation candidates too.

This article covers how inventory information affects AI recommendations, a real case of hidden out-of-stock text, per-channel representation, the connection to store information, and update operations.

Conclusion: Separate by channel, and match the screen and the structured data values

Situation

On-screen display

Structured data representation

Online in stock

"In stock", "Add to cart"

Offer.availability = InStock

Online out of stock, in stock at store

"Out of stock online. Available at the XX store"

Online Offer is OutOfStock. Hold a separate store Offer that points to the store with availableAtOrFrom

Out of stock online and in store

"Out of stock", "Awaiting restock"

OutOfStock or BackOrder

Taking pre-orders

"Taking pre-orders"

PreOrder

Store pickup only

"Store pickup"

InStoreOnly, or a store Offer only

On-page stock status vs structured data

Breadcrumbs

  • Search OS
  • Guide 01

On-page stock status vs structured data

Matching the on-page wording comes before picking vocabulary

On-page wordingStructured data mapping
In stock onlineOffer.availability = InStock
Not online, in storeOnline: OutOfStock Store Offer via availableAtOrFrom
NeitherOutOfStock or BackOrder
Taking pre-ordersPreOrder
Store pickup onlyInStoreOnly, or store Offer only
POINT
A page whose values differ from the screen is treated as unreliable information

© 2026 Search OS

For the structured data representation, use the Schema.org Offer and ItemAvailability vocabulary. What matters more than the choice of vocabulary is the match with the on-screen wording.

Key idea: AI treats a page whose on-screen wording and structured data values differ as untrustworthy information. In structuring inventory, consistency comes before precision. Compare the "On-screen display" and "Structured data representation" columns above against your own product pages.

How inventory information affects AI recommendations

When AI search recommends a product, whether it can be bought now is a main criterion. A product judged out of stock drops out of the candidates even with a good price and reviews.

The problem is that AI doesn't judge out-of-stock status from what's visible on screen alone. If template-derived "out of stock" text remains in the HTML, the AI reads that text even when an "Add to cart" button is showing on screen. Then it excludes the product. Check by searching the source of a product page that's on sale for the words "out of stock".

Case: Hidden out-of-stock text

This happened at a Korean ecommerce brand with annual revenue of about ₩40 billion (about ¥4 billion). Product pages for items on sale still carried "sold out" text that was only hidden, not deleted. To the human eye, they were normal product pages. But the AI may have read that text and dropped products that were on sale from its recommendation candidates.

Organic purchase revenue +80% in three months

Organic purchase revenue +80% in three months

Korean EC brand with about ₩40 billion in annual revenue. Foundation fixed in three weeks via a separate rendering layer

PeriodRevenueGrowth
Before₩92M
After 3 months₩166M+80%

Source: Search OS case study "How a ₩40 billion EC brand grew organic purchase revenue 80% in three months"

© 2026 Search OS

The improvement began by removing this hidden text. The on-screen stock display and the structured data values were also brought into line. After that, product descriptions that existed only in images were converted to text. Watching fetch status in bot logs, product and category pages were improved first. As a result, organic purchase revenue grew about 80% in three months. The starting point of this improvement was consistency in how inventory was represented.

Per-channel representation: separate online from store

The basic structure is a separate Offer for online and for store on the same product. Even for the same sneaker, warehouse stock and the Shibuya store's stock are different shelves.

  1. Online Offer: holds the price, availability, and shipping terms. availability refers to the online stock state.

  2. Store Offer: for each store, holds availability and a reference to the store (availableAtOrFrom). With many stores, narrow it to main stores or a representative expression such as "available at stores".

  3. On-screen display: shows the same content as the two above in wording people can read. Something like "Out of stock online. Available at the XX and YY stores".

Whether per-store stock can be shown on the product page depends on the platform's features. If it can't be shown, don't write per-store stock in the structured data either. Stay at the granularity of "carried in stores". Check that you aren't writing information in the structured data alone that isn't on screen.

Connecting to store information

For store stock to mean anything, search engines and AI first have to know about the store itself.

Element

What to do

Store pages

A URL per store, showing name, address, opening hours, and phone number as visible text

Store structured data

LocalBusiness or Store, representing name, address, and opening hours

Reference from product page to store

The store Offer's availableAtOrFrom points to the store page (or its @id)

Google Business Profile

Keep store information consistent. Leads to "In stock" display in local search

When product pages and store pages reference each other, AI can understand that this product can be bought at this store. Start by checking that store pages carry name, address, and opening hours as visible text.

Update operations: inventory moves

Inventory changes daily. If structured data updates lag, consistency breaks.

Item

Recommendation

When to update structured data

At the same time as the on-screen stock display (generated from the same data source)

sitemap lastmod

Don't update on stock changes. Only when price, description, or specifications change

Verification

Weekly, sample out-of-stock and in-stock products and check that screen and structured data match

Detecting hidden text

After template changes, search for stock-related text inside hidden elements

Stock moves: running the updates

Navigation

  • Search OS
  • Guide 02

Stock moves: running the updates

From the same data source as the page

step_numbertitledescription
1Structured data updatesSame timing as on-page stock (same data source)
2sitemap lastmodNot on stock changes; only on price, copy or spec changes
3VerificationWeekly: sample in-stock and out-of-stock items, confirm they match
4Hidden textAfter template changes, search hidden elements for stock text

© 2026 Search OS

If lastmod updates on stock changes, crawlers stop trusting the update signal. Represent stock in structured data, and limit lastmod to content changes. Check that lastmod doesn't change when stock moves.

Operations for keeping consistency

Inventory structuring is assessed on today's state, not on the day it was designed. The more products, the more stores, and the more often stock moves, the heavier the load. Having people keep checking that screen and structured data match stops being realistic.

Search OS treats maintaining that consistency as an operation. It doesn't change the existing platform. It continuously verifies the match between visible text and structured data on product pages, and detects hidden stock text. It also watches the references to store pages and the operation of the sitemap and lastmod. Bot logs confirm whether search engines and AI crawlers are actually fetching product and store pages. On that basis, the places where discrepancies arise are compiled as fix candidates. You can start by picking one in-stock and one out-of-stock product and comparing the screen with the structured data.

Frequently asked questions

Should I write per-store stock counts in the structured data?

Stock counts (inventoryLevel) can be represented. But it's safer not to write information that isn't shown on screen. The more often a value changes, the higher the risk of a mismatch.

When online stock runs out, should I put the page on noindex?

It's safer not to. If there's store stock, the page has value as information that the product can be bought in store. Represent OutOfStock correctly, and place the store guidance as visible text.

Does inventory structured data appear in rich results?

Google's product rich results can show availability. But the focus of this article isn't rich results; it's consistency as a criterion when AI recommends products.

Related reading

References

The site becomes easier to read

The content becomes clearer

The brand gets discovered in more customer questions

See how Search OS works, starting with the product deck.