How to fix lifecycle oos schema not updated on Shopify

Update the `offers.availability` field in your Product schema to `OutOfStock` (or `PreOrder`/`Discontinued`) whenever a product sells out, so Google's data matches your real inventory.

Steps for Shopify

  1. Shopify's default themes (Dawn and most modern themes) generate Product schema automatically from the theme's Liquid code — they read the product's inventory to set availability dynamically.
  2. To verify your theme does this correctly, go to Online Store > Themes > your active theme > Edit code, then open 'snippets/product-schema.liquid' or search within 'sections/main-product.liquid' or 'templates/product.json' for 'availability' or 'InStock'.
  3. Find the Liquid logic that outputs availability. It should check 'product.available' (Shopify's built-in boolean). Correct code looks like: '"availability": "{{ product.available | json }}" ? "https://schema.org/InStock" : "https://schema.org/OutOfStock"'.
  4. If your theme hard-codes 'InStock' instead of using 'product.available', replace that hard-coded string with the conditional Liquid expression above and save.
  5. For a no-code fix, install a schema app such as 'JSON-LD for SEO' or 'Schema Plus for SEO' from the Shopify App Store — these apps generate dynamic availability from live inventory and override the theme's schema.
  6. Validate the fix on a sold-out product URL using Google's Rich Results Test (search.google.com/test/rich-results).
Official Shopify documentation ↗
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Example Product Name",
  "offers": {
    "@type": "Offer",
    "priceCurrency": "USD",
    "price": "49.99",
    "availability": "https://schema.org/OutOfStock",
    "url": "https://example.com/products/example-product"
  }
}

What is lifecycle oos schema not updated?

Product schema (also called structured data or JSON-LD) is a block of machine-readable code embedded in your product pages that tells Google, Bing, and other search engines key details about your products — including price, condition, and availability. The `offers.availability` property specifically signals whether an item is in stock. When a product sells out but the schema still says `InStock`, there is a mismatch between what your code tells search engines and what shoppers actually see on the page.

Google uses your Product schema to power Shopping ads and rich results (the star ratings, prices, and availability labels in search). If Google detects that your schema claims a product is `InStock` when it clearly isn't, it can disapprove that product in Google Merchant Center, suppress your Shopping listings, or penalise your rich results — costing you paid and organic traffic. Beyond search engines, stale availability data erodes shopper trust: someone who clicks expecting an in-stock item and lands on a sold-out page is likely to bounce immediately and not return. Keeping schema in sync with real inventory protects your Shopping feed, your organic product rich results, and your conversion rate.

See the complete Lifecycle oos schema not updated guide for every platform and the full background.

Not sure if your Shopify store has this?

Run a free SEOLZ audit — we’ll find lifecycle oos schema not updated and every other issue across your whole site.

Scan my site free

Fix lifecycle oos schema not updated on another platform