Seo product missing stock status

Moderate effort

Found on 31% of audited stores.

Add a visible stock availability label and an `availability` property to your Product structured data so Google can display rich results and shoppers know immediately whether a product is in stock.

What it is

Every product page should tell both shoppers and search engines whether the item is currently in stock, out of stock, or on pre-order. There are two places this needs to happen: (1) a visible on-page label like "In Stock" or "Out of Stock" that any visitor can read, and (2) a machine-readable `availability` value inside the Product structured data (schema.org JSON-LD) that Google reads to power rich results in Search and Shopping. When either piece is missing, the page has "no clear stock availability."

Why it matters

Google's guidelines for Product rich results explicitly require the `availability` field — without it, your product page is ineligible for the enhanced Shopping appearance in Google Search (star ratings, price, availability badge), meaning you lose prominent, high-click-rate real estate to competitors who have it. From a conversion standpoint, shoppers who cannot tell at a glance whether a product is available are more likely to bounce or abandon — especially on mobile. If you sell through Google Merchant Center, mismatched or absent availability data can also trigger feed disapprovals, further suppressing your paid and free listing visibility.

How to fix it

  1. Identify every product page that is missing a visible stock status label (e.g. 'In Stock', 'Out of Stock', 'Pre-order') and add one in a prominent location near the Add-to-Cart button.
  2. Open (or create) the Product JSON-LD structured data block on each product page.
  3. Add the `availability` property using a schema.org value: `https://schema.org/InStock`, `https://schema.org/OutOfStock`, or `https://schema.org/PreOrder`. Map this dynamically to your real-time inventory so it updates automatically.
  4. Ensure the on-page label and the structured-data value always match — Google cross-checks both and will flag inconsistencies.
  5. Test the updated pages with Google's Rich Results Test (search 'Rich Results Test') to confirm the `availability` field is detected and no errors are shown.
  6. Keep your inventory system (or platform stock settings) as the single source of truth so both the label and schema stay current without manual updates.

Fix it on your platform

Pick your platform for the exact steps.

How to fix seo product missing stock status on Shopify
  1. Shopify automatically outputs `availability` in its built-in Product schema IF your theme uses the Online Store 2.0 schema — verify by going to Online Store → Themes → Edit Code, opening `sections/product-template.liquid` or `sections/main-product.liquid`, and searching for `schema.org`.
  2. If your theme injects Product JSON-LD, find the script block (commonly in `snippets/product-schema.liquid` or inside the product section file) and add: `"availability": "{{ product.available | ternary: 'https://schema.org/InStock', 'https://schema.org/OutOfStock' }}"` inside the JSON-LD object.
  3. For the visible label, in `sections/main-product.liquid` (or your product form snippet), add a Liquid conditional near the Add-to-Cart button: `{% if product.available %}<span class="stock-label">In Stock</span>{% else %}<span class="stock-label">Out of Stock</span>{% endif %}`.
  4. Save, preview a product, and validate at the Rich Results Test.
How to fix seo product missing stock status on Shopify Plus
  1. Follow identical steps to Shopify above — Shopify Plus uses the same theme codebase.
  2. If you use a custom storefront (Hydrogen/Headless), add the JSON-LD block in your product page component and pull availability from the Storefront API `availableForSale` boolean, mapping `true` → `https://schema.org/InStock` and `false` → `https://schema.org/OutOfStock`.
  3. For B2B/wholesale storefronts via Shopify Plus, ensure inventory is synced before schema is rendered server-side so the value is always current.
How to fix seo product missing stock status on WooCommerce
  1. Install the free *Rank Math SEO* or *Yoast SEO* plugin (both support WooCommerce Product schema with `availability`).
  2. With Rank Math: go to Rank Math → Titles & Meta → WooCommerce and confirm 'Use WooCommerce Stock Status' is toggled on — Rank Math reads WooCommerce stock and automatically outputs `InStock`/`OutOfStock`/`PreOrder` in the JSON-LD.
  3. With Yoast SEO + Yoast WooCommerce SEO add-on: the plugin auto-maps WooCommerce stock to the schema; confirm stock management is enabled on each product under WooCommerce → Products → Edit Product → Inventory tab → 'Stock status'.
  4. For the visible label, WooCommerce outputs stock status text natively if 'Manage stock' or 'Stock status' is set per product — verify in WooCommerce → Products → Edit → Inventory. Enable 'Display stock availability' in WooCommerce → Settings → Products.
  5. Validate a product URL in the Rich Results Test.
How to fix seo product missing stock status on BigCommerce
  1. BigCommerce injects Product structured data automatically via its Stencil theme engine. To ensure `availability` is included, go to Storefront → Themes → Edit Theme Files (Advanced Editor) and locate `templates/pages/product.html`.
  2. Search for the `<script type="application/ld+json">` block. If `availability` is absent, add it inside the JSON object: `"availability": "{{#if product.stock_level}}https://schema.org/InStock{{else}}https://schema.org/OutOfStock{{/if}}"`.
  3. For the visible label, edit the same product template to output stock text using Handlebars: `{{#if product.stock_level}}<span>In Stock</span>{{else}}<span>Out of Stock</span>{{/if}}`.
  4. Alternatively install the *SEO Doctor* or *JSON-LD for SEO* app from the BigCommerce App Marketplace, which handles availability mapping automatically.
  5. Validate with Rich Results Test after publishing.
How to fix seo product missing stock status on Wix
  1. Wix automatically adds Product structured data on Wix Stores product pages, including availability, when products have stock management enabled.
  2. Go to your Wix Dashboard → Wix Stores → Products → click a product → scroll to *Inventory* → set 'Track Inventory' to ON and ensure the stock quantity is entered correctly so Wix can set `InStock` or `OutOfStock` automatically.
  3. For products where you do NOT track inventory, set the *In Stock* toggle manually in the same Inventory panel.
  4. To add a custom visible label, use the Wix Editor to open the product page, add a Text element near the Add to Cart button, and use Wix Velo (code panel) to dynamically set the text: `$w('#stockLabel').text = product.inStock ? 'In Stock' : 'Out of Stock';`
  5. Publish and validate the product page in the Rich Results Test.
How to fix seo product missing stock status on Squarespace
  1. Squarespace (version 7.1 Commerce) outputs Product structured data automatically but the `availability` field depends on your inventory settings.
  2. Go to your Squarespace Dashboard → Commerce → Inventory → select a product → ensure 'Track inventory' is on and quantity is set, OR set the product to 'In Stock' manually if you don't track inventory.
  3. Squarespace does not allow direct JSON-LD editing natively. To inject a custom or supplementary JSON-LD block, go to Pages → select the product page → Page Settings (gear icon) → Advanced → Code Injection, and paste a complete `<script type='application/ld+json'>` block (see Generic HTML snippet below) that reflects the correct availability.
  4. For a visible stock label, add a Text block near your product description using the page editor and update it manually, or use a Code Block with a static HTML label. Dynamic labels require a custom developer integration.
  5. Validate the page in the Rich Results Test.
How to fix seo product missing stock status on Webflow
  1. Webflow's Ecommerce product template does not auto-generate Product JSON-LD with `availability`. You must add it manually.
  2. Open the Webflow Designer → navigate to the CMS/Ecommerce Product Template page → in the Page Settings (gear icon at top-right) → Custom Code tab → paste your JSON-LD `<script>` block in the *Before </body> tag* field.
  3. Use Webflow's CMS dynamic embed: inside the Product template, add an *Embed* element and write the JSON-LD using Webflow's dynamic field bindings — bind `availability` to a custom field or use a conditional based on the product's 'Inventory Tracking' status.
  4. For a visible label, add a Conditional Visibility text element to the product template: create a text element reading 'In Stock', set its Conditional Visibility to show only when the inventory field `> 0`; duplicate it for 'Out of Stock' with the inverse condition.
  5. Publish and validate in the Rich Results Test.
How to fix seo product missing stock status on Adobe Commerce (Magento)
  1. Adobe Commerce outputs Product structured data via the `Magento_Catalog` module. The availability field is included by default, but verify it is present by checking `app/code/Magento/Catalog/view/frontend/templates/product/view/structured_data.phtml` (or the equivalent in your theme's override path under `app/design/frontend/<Vendor>/<Theme>/Magento_Catalog/templates/`).
  2. Ensure each product has stock management enabled: Admin → Catalog → Products → Edit Product → Sources (MSI) or the legacy Stock section — set 'Manage Stock' to Yes and update quantity so the system can output `InStock`/`OutOfStock` correctly.
  3. To add or fix the `availability` output in the template, locate the `<script type='application/ld+json'>` block and ensure it contains: `"availability": "<?php echo $block->getAvailability(); ?>"` — or use a plugin/preference on `Magento\Catalog\Block\Product\View` to expose a `getAvailability()` method.
  4. For the visible label, the default Magento theme outputs stock availability text near the price area via `app/design/frontend/.../Magento_Catalog/templates/product/view/form.phtml` — verify the `<div class='stock'>` block is present and not hidden by your theme's CSS.
  5. Clear cache (bin/magento cache:flush), then validate in the Rich Results Test.
How to fix seo product missing stock status on Magento Open Source
  1. Follow the same steps as Adobe Commerce above — the structured data template and admin inventory paths are identical in Magento Open Source.
  2. If using a third-party theme (e.g. Luma child, Porto, Amasty), check whether the theme overrides `Magento_Catalog/templates/product/view/structured_data.phtml` and ensure `availability` is preserved in that override.
  3. Install the free *MageWorx SEO Suite* or *Amasty SEO Toolkit* extension if you need a UI-driven way to control structured data fields including `availability` without editing PHP templates.
How to fix seo product missing stock status on PrestaShop
  1. PrestaShop 1.7+ includes basic Product structured data, but `availability` is often absent or incomplete.
  2. Go to Modules → search for *SEO Expert* or install *JSON-LD – Structured Data* from PrestaShop Addons Marketplace — these modules inject a full Product schema including `availability` mapped to your real stock.
  3. Alternatively, edit your theme's `product.tpl` file (found in `/themes/<your-theme>/templates/catalog/product.tpl`) and add a JSON-LD script block using Smarty conditionals: `{if $product.availability == 'available'}https://schema.org/InStock{else}https://schema.org/OutOfStock{/if}`.
  4. Ensure each product has 'Manage stock' enabled in Catalog → Products → Edit → Quantities tab.
  5. Validate in the Rich Results Test after clearing PrestaShop's cache (Advanced Parameters → Performance → Clear cache).
How to fix seo product missing stock status on OpenCart
  1. OpenCart does not include Product JSON-LD by default. Install an extension such as *JSON-LD Structured Data* from the OpenCart Marketplace to auto-generate schema including `availability` from your inventory.
  2. After installing, configure the extension to map 'In Stock' (quantity > 0) → `https://schema.org/InStock` and 'Out of Stock' → `https://schema.org/OutOfStock`.
  3. For a manual implementation, edit `catalog/view/theme/<your-theme>/template/product/product.twig` and add the JSON-LD script block (see Generic HTML snippet), using Twig variables to pull stock status.
  4. Validate in the Rich Results Test.
How to fix seo product missing stock status on Next.js (Headless)
  1. Fetch stock status from your commerce API (e.g. availableForSale, stockLevel, or inventoryQuantity) inside the page's data-fetching layer — `generateStaticParams` + `generateMetadata` (App Router) or `getStaticProps`/`getServerSideProps` (Pages Router).
  2. Map the raw stock value to the correct schema.org URL string: `https://schema.org/InStock`, `https://schema.org/OutOfStock`, or `https://schema.org/PreOrder`, and store it alongside the product props.
  3. In the Product page component, render a visible stock-status badge (e.g. 'In Stock' / 'Out of Stock') in the JSX so both users and crawlers see it in the HTML — do NOT rely on client-only state alone.
  4. Inject a JSON-LD `<Script>` block (using `next/script` with `type='application/ld+json'`) that includes the `offers.availability` property set to the mapped schema.org URL.
  5. For App Router projects, place the `<Script>` inside the page Server Component (app/products/[slug]/page.tsx) so it is part of the SSR payload; for Pages Router, place it inside `<Head>` or directly in the component return.
  6. Validate the structured data with Google's Rich Results Test (https://search.google.com/test/rich-results) to confirm `availability` appears correctly in the parsed output.
How to fix seo product missing stock status on Elementor
  1. Open Elementor Editor for your product page template: go to WordPress Admin → Templates → Theme Builder (or 'My Templates'), locate your Single Product template, and click Edit with Elementor.
  2. Add a visible stock status label: click the '+' to add a widget in the product content area, search for the 'Text Editor' or 'Shortcode' widget, drag it below your product price, and enter a dynamic stock label. Use Elementor's Dynamic Tags (the database icon in the widget content field) → WooCommerce → Product Stock Status to pull in the live in-stock/out-of-stock value. Style it with a green/red colour via the widget's Style tab so shoppers see it immediately.
  3. Inject the `availability` property into your Product structured data: in Elementor Pro go to the template's Page Settings (gear icon, bottom-left) → Advanced → Custom Code (or use WordPress Admin → Elementor → Custom Code → Add New), set Location to 'Head' or 'Body – End', and add a JSON-LD `<script>` block that includes `"availability": "https://schema.org/InStock"` (or `OutOfStock`) inside the `@type: Product` object. Use a PHP/WooCommerce conditional such as `$product->is_in_stock() ? 'InStock' : 'OutOfStock'` wrapped in `wp_enqueue_scripts` if adding via a child-theme functions.php, OR use Elementor's Custom Code shortcode with dynamic output.
  4. If your theme/plugin already outputs Product schema (e.g. WooCommerce's default JSON-LD), avoid duplicating it: instead, filter and modify the existing schema by adding this snippet to your child theme's `functions.php`: `add_filter('woocommerce_structured_data_product', function($markup, $product){ $markup['offers']['availability'] = 'https://schema.org/' . ($product->is_in_stock() ? 'InStock' : 'OutOfStock'); return $markup; }, 10, 2);` — this ensures the `availability` field is always present.
  5. Save and publish the Elementor template, then visit a live product page and use Google's Rich Results Test (https://search.google.com/test/rich-results) to paste the URL and confirm the Product schema now includes a valid `availability` property with no errors.
  6. Repeat for any other Single Product templates in Elementor Theme Builder (e.g. sale items, pre-order products) and update the availability value accordingly (e.g. `PreOrder`, `OutOfStock`).
How to fix seo product missing stock status on Gatsby
  1. Open your product page template (e.g. src/templates/product.jsx or src/pages/products/{handle}.jsx). This is where both the Head export and the rendered JSX live.
  2. Import Gatsby's Head API export (named `Head`) alongside your page component. Inside the `Head` export, build a JSON-LD <script> tag that includes the `offers.availability` property mapped from your CMS/commerce stock field (e.g. `availableForSale`, `stockStatus`, `quantityAvailable`).
  3. Map your commerce platform's stock value to the correct schema.org URL: `https://schema.org/InStock`, `https://schema.org/OutOfStock`, or `https://schema.org/PreOrder`. Never hard-code a single value — derive it dynamically from the page's data prop.
  4. In the page component's JSX, render a visible stock-status label (e.g. a <span> or <p>) so shoppers and assistive technologies can read the availability without relying solely on structured data. Style it with a clear colour convention (green for in-stock, red for out-of-stock).
  5. Run `gatsby build && gatsby serve` and validate the JSON-LD output with Google's Rich Results Test (https://search.google.com/test/rich-results) to confirm the `availability` field is present and resolves to a valid schema.org URL.
  6. If your stock data is not yet fetched in the GraphQL page query, extend the query to include the relevant availability field (e.g. `availableForSale` from Shopify Storefront API or equivalent) so the Head export always receives live data.

Does your site have this issue?

Run a free SEOLZ scan to find seo product missing stock status — and every other issue — across your whole site in minutes.

Scan my site free

Frequently asked questions

What is Seo product missing stock status?

Every product page should tell both shoppers and search engines whether the item is currently in stock, out of stock, or on pre-order. There are two places this needs to happen: (1) a visible on-page label like "In Stock" or "Out of Stock" that any visitor can read, and (2) a machine-readable `availability` value inside the Product structured data (schema.org JSON-LD) that Google reads to power rich results in Search and Shopping. When either piece is missing, the page has "no clear stock availability."

Why does seo product missing stock status matter?

Google's guidelines for Product rich results explicitly require the `availability` field — without it, your product page is ineligible for the enhanced Shopping appearance in Google Search (star ratings, price, availability badge), meaning you lose prominent, high-click-rate real estate to competitors who have it. From a conversion standpoint, shoppers who cannot tell at a glance whether a product is available are more likely to bounce or abandon — especially on mobile. If you sell through Google Merchant Center, mismatched or absent availability data can also trigger feed disapprovals, further suppressing your paid and free listing visibility.

How do I fix seo product missing stock status?

Add a visible stock availability label and an `availability` property to your Product structured data so Google can display rich results and shoppers know immediately whether a product is in stock.

Related SEO issues