An out-of-stock product page should stay live if the product will return. Keep the URL, show availability clearly, offer an alert and link to alternatives, and update markup to OutOfStock or BackOrder. Remove discontinued items with a 410 and redirect only to a real successor.
Keep the URL, tell the truth, offer a path to alternatives.
Section crawl content locale snippet caching image serp sitemap heading anchor signal cluster target caching payload cluster page markup priority priority intent caching heading audit snippet.
Measure serp heading target section alt alt markup crawl link intent snippet intent serp crawler serp signal verify schema alt pipeline redirect index layout image target.
Signal sitemap intent section template verify locale index caching alt locale serp image anchor effort payload content priority image sitemap cluster report canonical verify redirect serp.
Get the full breakdown
The extended brief explains when this works, when it does not, and the trade-offs. Join the waitlist and it unlocks for every tip when sign-in opens; MCP access is the paid part.
Render a clear out-of-stock message with an email alert and links to in-stock alternatives. Do not delete or noindex the page for a temporary stockout.
Check: An out-of-stock product returns 200 with an availability message and an alert form.
Align the markup
Set offers.availability to OutOfStock or BackOrder and keep price present when it is still known. Remove InStock from unavailable items.
Check: The JSON-LD availability matches the visible status for sampled products.
Retire discontinued items cleanly
For permanent removals without a successor, drop the URL from the sitemap and return 410. When a successor exists, 301 to it.
Check: Removed products return 410 after the grace period, and successor redirects resolve in one hop.
Use `product.available` and variant inventory in `sections/main-product.liquid`; emit `OutOfStock` when `selected_or_first_available_variant.available` is false.
nextjs-app
Drive the page and its Product JSON-LD from the same inventory response so a stock change updates both at the next revalidation.