Lifecycle oos schema not updated
Moderate effortFound on 4% of audited stores.
Update the `offers.availability` value in your Product structured data from `InStock` to `OutOfStock` (or `PreOrder`) whenever a product sells out, so Google's records always match your actual inventory.
What it is
Every product page on your store can include hidden structured data (called "Product schema" or "JSON-LD") that tells Google key facts about your item — its price, currency, and whether it is in stock. One field in that data, `offers.availability`, uses a standard vocabulary to signal stock status: `https://schema.org/InStock`, `https://schema.org/OutOfStock`, or `https://schema.org/PreOrder`. When a product sells out but this field is never updated, the schema keeps saying "InStock" even though the real page says "Sold Out." Google sees the contradiction and flags it as misleading data.
Why it matters
Google uses Product schema to power free Shopping listings and rich results. If Google detects that your structured data claims a product is "InStock" when it is actually sold out, it will disapprove those listings — meaning you lose free traffic from Google Shopping for every affected product. Repeated or widespread mismatches can also reduce Google's overall trust in your site's structured data, dragging down the rich-result eligibility of products that genuinely are in stock. Fixing stale availability data keeps your Shopping listings live, protects your click-through rates, and ensures customers who land on a product page aren't misled — reducing bounce rate and potential complaints.
How to fix it
- Audit your out-of-stock products: identify every page where the visible storefront shows 'Sold Out' or 'Out of Stock' but the Product schema still contains `https://schema.org/InStock`.
- Determine how your schema is generated — is it hardcoded in a theme template, output dynamically by your platform, or injected by an app/plugin? Dynamic generation is the correct long-term fix.
- Update the schema template or data source so that the `availability` field reads the live inventory value: output `https://schema.org/OutOfStock` when stock is zero/unavailable, `https://schema.org/PreOrder` if pre-orders are open, and `https://schema.org/InStock` only when units are actually available.
- If your platform or app has a manual override field for availability, remove any hardcoded 'InStock' overrides so the dynamic inventory value is always used.
- Validate the corrected schema on a formerly out-of-stock product using Google's Rich Results Test to confirm the field now reflects the correct value.
- Request re-indexing via Google Search Console (URL Inspection → Request Indexing) for your highest-priority product pages, and monitor the Google Merchant Center 'Diagnostics' tab to confirm disapprovals clear within a few days.
Fix it on your platform
Pick your platform for the exact steps.
How to fix lifecycle oos schema not updated on Shopify
- Shopify's default themes (Dawn and most modern themes) generate Product schema dynamically from the `product` Liquid object, so availability should update automatically when inventory hits zero — but only if the theme's schema template is using `product.available` correctly.
- In your Shopify admin, go to Online Store → Themes → (your active theme) → Actions → Edit Code.
- Open `sections/main-product.liquid` (or `templates/product.json` / `templates/product.liquid` depending on your theme). Search for `schema.org/InStock` or `availability`.
- The availability line should read: `"availability" : "{{ product.available | json }}"` — but the correct pattern is a conditional: if `product.available` output `https://schema.org/InStock`, else `https://schema.org/OutOfStock`.
- Replace any hardcoded `https://schema.org/InStock` string with the Liquid conditional shown in the code snippet below.
- Save the file, then verify with Google's Rich Results Test on a sold-out product URL.
How to fix lifecycle oos schema not updated on Shopify Plus
- Follow the same theme-file steps as Shopify above; Shopify Plus gives you the same Online Store → Themes → Edit Code access.
- If you use a custom storefront (Hydrogen / Headless), update the component that renders JSON-LD for products to derive availability from the Storefront API's `availableForSale` boolean and `quantityAvailable` field.
- For large catalogs, use the Shopify Admin API to bulk-query out-of-stock variants and confirm the theme logic resolves them to `OutOfStock` in the schema output.
How to fix lifecycle oos schema not updated on WooCommerce
- WooCommerce outputs Product schema via its built-in structured data class (`WC_Structured_Data`), which reads live stock status automatically — so the fix is usually ensuring no plugin or snippet is overriding it.
- In your WordPress admin, go to WooCommerce → Settings → Products → Inventory and confirm 'Manage stock' is enabled so WooCommerce knows the true stock status.
- Check for an SEO plugin (Yoast SEO, Rank Math, or Schema Pro) that may be outputting a second Product schema block with a hardcoded availability. Go to the plugin's settings and ensure it reads stock from WooCommerce rather than a static value.
- If you have a custom `woocommerce_structured_data_product` filter in your theme's `functions.php` or a child theme, review and correct it to use `$product->is_in_stock()` for the availability value.
- Use the Yoast SEO Schema tab (if installed) on an out-of-stock product's edit screen to preview the schema output and confirm it says `OutOfStock`.
- Validate with Google's Rich Results Test.
How to fix lifecycle oos schema not updated on BigCommerce
- BigCommerce injects Product schema through its Stencil theme framework. Open your Stencil theme files (locally via Stencil CLI or via the online Theme Editor for supported themes).
- Locate `templates/components/products/product-view.html` (path may vary by theme). Search for `availability` or `InStock`.
- The availability value should use a Handlebars conditional based on the `product.availability` context variable. Replace any hardcoded string with: `{{#if product.availability}}{{product.availability}}{{else}}https://schema.org/OutOfStock{{/if}}` — but confirm the exact variable name in your theme's context.
- BigCommerce also supports overriding schema via the 'Scripts' section in the Control Panel (Storefront → Script Manager) — check for any injected JSON-LD scripts that hardcode `InStock` and remove or fix them.
- Push the updated theme and validate with Google's Rich Results Test on an out-of-stock product.
How to fix lifecycle oos schema not updated on Wix
- Wix automatically generates Product schema for Wix eCommerce stores and updates availability based on your inventory settings — but you must have inventory tracking turned on.
- In the Wix dashboard, go to eCommerce (or Wix Stores) → Products → select a sold-out product → Inventory tab. Ensure 'Track Inventory' is enabled and the stock count is set to 0 (or the product is marked 'Out of Stock').
- If you use Wix Velo (custom code) and have a custom JSON-LD script injecting Product schema, open the relevant page code in Velo and update the availability field to dynamically reference the product's stock status from the Wix Stores API.
- Wix does not allow direct theme-file editing for schema outside of Velo, so there is no template file to edit; rely on correct inventory data and Wix's automatic schema generation.
- After updating inventory, use Google's Rich Results Test to confirm the schema on the product page reflects `OutOfStock`.
How to fix lifecycle oos schema not updated on Squarespace
- Squarespace Commerce automatically outputs Product schema and syncs availability with your inventory settings.
- In your Squarespace admin, go to Commerce (or Selling) → Inventory. Find each sold-out product and confirm its stock quantity is set to 0 or that 'Sold Out' is indicated.
- Navigate to the product's page in the Pages panel, click to edit the product block, and under Inventory set the quantity to 0 and ensure 'Allow purchases when out of stock' is unchecked — this ensures the schema signals `OutOfStock`.
- Squarespace does not expose the JSON-LD template for direct editing; availability in schema is derived purely from inventory data, so correct stock settings are the only lever.
- Validate with Google's Rich Results Test after saving.
How to fix lifecycle oos schema not updated on Webflow
- Webflow Ecommerce generates Product schema, but its automatic schema support is limited. Many Webflow stores add Product JSON-LD via custom embed code blocks.
- In the Webflow Designer, open the product template page (CMS → Products → Product Template). Look for any Embed elements containing JSON-LD (`<script type='application/ld+json'>`).
- If the JSON-LD is in an Embed, update the `availability` field to use a Webflow CMS dynamic binding: bind it to a CMS field that stores the stock status (e.g. a field called 'In Stock' toggle or an 'Availability' option field). You will need to create that CMS field if it does not exist.
- Set up a workflow (manual or via Zapier/Make) to update that CMS availability field whenever a product's stock hits zero.
- For fully custom JSON-LD with dynamic values, use Webflow's Finsweet CMS attributes or a third-party script that pulls live inventory. Validate with Google's Rich Results Test.
How to fix lifecycle oos schema not updated on Adobe Commerce (Magento)
- Adobe Commerce (Magento 2) generates Product schema via the `Magento_ProductAlert` and structured-data modules. The availability is read from the product's `is_saleable` / `isSalable()` method.
- Check whether a third-party SEO extension (e.g. Mageplaza SEO, Mageworx SEO, Amasty SEO) is overriding the schema output. Go to the extension's admin configuration (Stores → Configuration → [Extension Vendor] → SEO) and ensure availability is set to 'Dynamic' rather than a hardcoded value.
- If using a custom theme, locate the schema template — typically in `app/design/frontend/<Vendor>/<theme>/Magento_Catalog/templates/product/structured-data/` or similar. Find the availability condition and ensure it calls `$product->isSalable()` (Magento 2) to output the correct schema.org URL.
- Clear full-page cache after changes: in the admin go to System → Cache Management → Flush Magento Cache.
- Run a crawl or spot-check with Google's Rich Results Test on several out-of-stock product URLs to verify `OutOfStock` is now output.
How to fix lifecycle oos schema not updated on PrestaShop
- PrestaShop outputs Product schema through its theme layer. Open your active theme's `templates/catalog/product.tpl` file (via FTP or the theme editor if available).
- Search for `availability` or `InStock` in the template. The correct Smarty conditional to use is: `{if $product.availability eq 'available'}https://schema.org/InStock{else}https://schema.org/OutOfStock{/if}`.
- Alternatively, install a dedicated SEO module (e.g. SEO Expert, Yoast for PrestaShop) that handles schema dynamically and set availability to read from live stock.
- Clear PrestaShop's smarty cache under Advanced Parameters → Performance → Clear Cache, then validate with Google's Rich Results Test.
How to fix lifecycle oos schema not updated on OpenCart
- OpenCart does not output Product schema by default; it is typically added via an extension (e.g. SEO extensions from the OpenCart marketplace).
- Identify which extension or template file is generating your JSON-LD. Check `catalog/view/theme/<your-theme>/template/product/product.twig` (OpenCart 3) for any `application/ld+json` blocks.
- Update the availability value to use a Twig conditional based on OpenCart's stock status variable: `{% if product.stock_status == 'In Stock' %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}` — adjust the stock_status label to match your store's configured stock status name.
- Clear OpenCart's cache under Admin → Dashboard → (gear icon) → Refresh, then validate with Google's Rich Results Test.
Does your site have this issue?
Run a free SEOLZ scan to find lifecycle oos schema not updated — and every other issue — across your whole site in minutes.
Scan my site freeFrequently asked questions
What is Lifecycle oos schema not updated?
Every product page on your store can include hidden structured data (called "Product schema" or "JSON-LD") that tells Google key facts about your item — its price, currency, and whether it is in stock. One field in that data, `offers.availability`, uses a standard vocabulary to signal stock status: `https://schema.org/InStock`, `https://schema.org/OutOfStock`, or `https://schema.org/PreOrder`. When a product sells out but this field is never updated, the schema keeps saying "InStock" even though the real page says "Sold Out." Google sees the contradiction and flags it as misleading data.
Why does lifecycle oos schema not updated matter?
Google uses Product schema to power free Shopping listings and rich results. If Google detects that your structured data claims a product is "InStock" when it is actually sold out, it will disapprove those listings — meaning you lose free traffic from Google Shopping for every affected product. Repeated or widespread mismatches can also reduce Google's overall trust in your site's structured data, dragging down the rich-result eligibility of products that genuinely are in stock. Fixing stale availability data keeps your Shopping listings live, protects your click-through rates, and ensures customers who land on a product page aren't misled — reducing bounce rate and potential complaints.
How do I fix lifecycle oos schema not updated?
Update the `offers.availability` value in your Product structured data from `InStock` to `OutOfStock` (or `PreOrder`) whenever a product sells out, so Google's records always match your actual inventory.