Where availability belongs
Put availability inside Offer, not as an arbitrary string on Product.
Common values
Typical Schema.org values include InStock, OutOfStock, PreOrder and LimitedAvailability.
Use canonical URLs
Use the full Schema.org enumeration URL, for example https://schema.org/InStock.
Synchronize state
When inventory changes, update both the visible page and structured data.
Do not infer
A delivery message or a disabled button is not always enough to infer a stock state reliably.
Variants
If variants have different availability, model the relevant offers rather than collapsing conflicting states.
Validation
Check the Offer relationship and compare the status against the actual page.
Frequently asked questions
Can structured data always be improved to 100% automatically?
Only when the required data actually exists in the JSON-LD or on the page.
Should every possible Schema.org property be added?
No. A smaller set of accurate properties is better than irrelevant values.