What is Product structured data?
Product structured data is a block of JSON-LD that describes a product in the schema.org vocabulary: its name, images, identifiers (SKU, GTIN, MPN), brand, and an Offer with price, currency, availability and condition. Search engines use it to show rich results — price, stock status, star ratings, shipping cost and return window directly in the listing — and to match your page to the same product in Google Shopping.
WooCommerce outputs basic Product markup on every product page automatically. It covers the essentials but leaves out details Google increasingly asks for in merchant listings: brand, global identifiers, item condition, shippingDetails and hasMerchantReturnPolicy. This generator builds complete markup for a single product, validates GTIN check digits and prices, and can also produce a woocommerce_structured_data_product filter that adds the store-wide parts to every product.
How to use the WooCommerce Product Schema Generator
- Fill in the product details — or click Sample — including absolute image URLs and a GTIN or MPN. GTINs are checked with the GS1 check-digit algorithm as you type.
- Set the price (a plain number such as
149.00), currency, availability and condition. AddpriceValidUntilfor time-limited sale prices. - Optionally add an aggregate rating (only from real reviews on the page), shipping details and a return policy.
- Copy the script tag or raw JSON, or switch to WooCommerce filter to extend WooCommerce’s own markup, then test the page in Google’s Rich Results Test.
Example
A minimal valid Product with one offer:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trailblazer Waterproof Hiking Boot",
"image": "https://example.com/boot.jpg",
"gtin13": "4006381333931",
"brand": { "@type": "Brand", "name": "Trailblazer" },
"offers": {
"@type": "Offer",
"price": "149.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition"
}
}
</script>WooCommerce and duplicate Product markup
Because WooCommerce (and SEO plugins such as Yoast WooCommerce SEO or Rank Math) already print Product JSON-LD, pasting a second full block creates two Product entities that may disagree. On WooCommerce pages, prefer the filter output: it modifies the existing markup instead of duplicating it. Use the standalone script tag on non-WooCommerce pages, landing pages or when you have disabled the built-in markup.
Checklist for eligible product rich results
- Price and availability in the markup must match the visible page — mismatches are the most common reason for disapproval.
- Use absolute image URLs that Googlebot can crawl and index; several aspect ratios help.
- Provide a GTIN where one exists. Products without one should include brand and MPN.
- Ratings must aggregate genuine reviews displayed on the same page; self-written reviews of your own business are not eligible.
- Combine with an accurate title and description — preview them with the SERP Snippet Preview — and build other types with the Schema Markup Generator.
Frequently Asked Questions
Does WooCommerce add product schema automatically?
Yes. WooCommerce outputs Product JSON-LD with name, URL, description, image, SKU, offers (price, currency, availability, seller) and reviews when they exist. It does not add brand, item condition, shipping details or return policy unless a plugin or the woocommerce_structured_data_product filter does.
Which GTIN property should I use?
Use the property that matches the length: gtin8, gtin12 (UPC-A), gtin13 (EAN-13 and ISBN-13) or gtin14. Google also accepts the generic gtin. The generator picks the right one automatically and rejects numbers with an invalid check digit.
Should the price include the currency symbol?
No. price is a number with a dot as the decimal separator (1299.00), and the currency goes in priceCurrency as an ISO 4217 code such as USD or EUR.
Can I add star ratings without reviews on the page?
No. Google’s review snippet guidelines require that ratings come from real users and are visible on the page that contains the markup. Fabricated or third-party ratings can trigger a manual action that removes rich results for the whole site.
How do I test the markup?
Use Google’s Rich Results Test on the live URL or paste the code, and monitor the Merchant listings and Product snippets reports in Search Console after publishing.