• Resolved jh

    (@jethrohazelhurst)


    Hi there,

    I want to report a structural inconsistency in WooCommerce’s schema output for variable products –

    WooCommerce outputs structured data (JSON-LD) only at the parent product level, and will show:

    "availability": "https://schema.org/InStock"

    This is as long as any variation is in stock – even if the specific variation being viewed is out of stock.

    Why this is a problem:

    Each WooCommerce variation currently can have its own:

    • GTIN
    • SKU
    • price
    • stock level
    • variation-specific URL

    This essentially makes each variation a distinct product, which is correct and aligns with Google’s requirements.

    However, the schema does not reflect this variation-level detail, and instead reports the parent as “InStock” for all variations.

    Impact when using Google for WooCommerce

    We sync our product feed via the Google for WooCommerce plugin, which correctly sends each variation to Merchant Center with:

    • its own GTIN
    • its own stock status
    • its own URL

    But Google is detecting a schema mismatch for variations that are out of stock, because the on-page structured data says “InStock” while the feed correctly says “out_of_stock”.

    As a result, Google overrides the feed data and marks these variations as in stock, causing problems as you can imagine:

    • Out-of-stock variations being shown in ads
    • Wasted ad spend sending users to pages with no purchasable product
    • Loss of trust

    This has a direct financial impact.

    The root cause seems to be that WooCommerce has no variation-level schema output, even though variation-level data exists and is correctly used by the Google for WooCommerce feed.

    This inconsistency means any store using GTINs correctly for variations will run into the same problem.

    Request:

    Can WooCommerce confirm whether variation-level structured data is planned, or if there is a recommended method to:

    • disable the parent-level schema, and/or
    • output correct variation-level schema for each variation URL?

    This would bring schema behavior in line with the existing capabilities for variation GTINs, SKUs, stock levels, and URLs.

    Thank you.

    Jethro

    • This topic was modified 6 months ago by jh.
Viewing 2 replies - 1 through 2 (of 2 total)
  • Sai (woo-hc)

    (@saivutukuru)

    Hi @jethrohazelhurst ,

    Thanks for the detailed explanation. This is very clearly outlined.

    WooCommerce currently outputs structured data only at the parent product level. Even though variations have unique SKUs, GTINs, prices, URLs, and stock statuses, WooCommerce does not generate variation-level schema by default. Because of that, Google may detect a mismatch between the on-page schema (“InStock”) and the variation-level data sent by the Google for WooCommerce feed.

    To take a closer look, could you please share a System Status Report?
    You can get a System Status Report by going to WooCommerce > Status > Get system report, then paste it into https://pastebin.com or https://gist.github.com

    Additionally, please share:

    1. A link to a product where a specific variation is out of stock.
    2. Whether any schema/SEO plugins are active.
    3. Whether variations generate distinct URLs in your setup.

    Once we have this, we can check whether the issue is due to WooCommerce core schema behavior, a theme override, or a plugin conflict, and recommend the correct approach to align your variation-level schema.

    Plugin Support Feten L. a11n

    (@fetenlakhal)

    Hi there,

    We haven’t heard back in a bit, so I’ll go ahead and mark this as resolved for now. If you’d like to pick things back up later, we’re just a message away!

Viewing 2 replies - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.