Skip to content

Product Schema Generator and Validator for WooCommerce

Build, check and fix Product JSON-LD for Google rich results. Paste a product URL or your code and copy fixed markup that keeps your real values.

Try

Plain JSON-LD or a full script tag
  • No sign-up or email
  • Evidence behind every result
  • Rules from the official docs
Product schema validator report showing a score, a search preview, rich result eligibility and a list of errors
How it works

How to generate and check product schema

  1. Check a URL or build from scratch

    Paste a single product page URL or the JSON-LD from a staging site. Category pages carry no Product markup. The builder tab writes new markup from a short form.

  2. Read the report from the top

    Errors block the rich result. Recommended fields decide whether you can show in Shopping results. Tips are optional.

  3. Copy the fixed markup

    We keep every value you already have and add the missing fields. Values marked REPLACE are yours to fill in before you publish.

What it checks

What the product schema validator checks

The validator checks two Google rule sets in one pass. The product snippet shows stars and price in search results. The merchant listing feeds Google Shopping.

Every Product block on the page

We read every JSON-LD block on the page, including the combined @graph output from Rank Math and Yoast. Two separate Product blocks get flagged because Google may read the wrong one.

Price and currency format

A price with a currency sign or a thousands comma fails. So does a lowercase currency code. A zero price passes the snippet and fails the merchant listing.

Ratings and reviews

The star rating must sit inside its scale, such as 4.6 out of 5, with a review or rating count beside it. Every review also needs an author name under 100 characters.

Shipping details

WooCommerce never prints shipping details in its markup. We check the destination country, the shipping rate and the delivery time Google asks for.

Return policy

A return policy needs a country, a policy type and the number of days a buyer has to return. One policy on your Organization markup covers the whole store.

Variable products

WooCommerce prints one AggregateOffer for a variable product. Merchant listings need one Offer per variant or a ProductGroup that lists every variant.

What does a product schema generator do?

A product schema generator writes the Product structured data that tells Google a page sells something. It puts the name, price, stock, brand and rating into JSON-LD, a block of code Google reads. Google uses it to show stars and price under your search result.

This tool is also a validator. It reads a live page or pasted code and lists every problem. It then writes a corrected block from your own values.

The builder tab covers new products. Fill in a short form and it writes the full block, shipping and returns included.

What does Google require for product rich results?

Google runs two separate checks on Product markup. The product snippet needs a name plus an offer, a review or a rating. The merchant listing needs a name, an image and an Offer with a currency and a price above zero.

PropertyProduct snippetMerchant listing
nameRequiredRequired
imageOptionalRequired
offersOffer or AggregateOfferRequired as an Offer
offers.priceRequired with offersRequired and above 0
offers.priceCurrencyRecommendedRequired
aggregateRating or reviewOne of offers, review or ratingOptional
brand and gtinOptionalRecommended
shippingDetailsNot usedRecommended
hasMerchantReturnPolicyNot usedRecommended

Pass the first check to get stars and price in search. Pass both to appear in Shopping results.

Two format rules apply to every price. It must be a plain number with a dot for decimals: "1299.00" passes and "$1,299.00" fails. The currency must be a three-letter code in capitals such as USD (the ISO 4217 standard).

What product schema does WooCommerce add by default?

WooCommerce adds Product schema to every product page with no extra plugin. As of WooCommerce 11.2, it prints the name, URL, description, one image, SKU, offer, stock and up to five reviews. It never prints the shipping details, return policy or item condition that merchant listings recommend.

We read the WooCommerce source file that writes this markup. It leaves these gaps on every store that relies on the core output:

  • No shipping or return data: Your shipping settings never reach the markup. WooCommerce prints no shippingDetails or hasMerchantReturnPolicy property.
  • A placeholder price end date: With no sale end date set, WooCommerce fills priceValidUntil with 31 December of next year.
  • No item condition: Merchant listings recommend an itemCondition (new, used or refurbished) on every offer. WooCommerce prints none.
  • Product ID as the SKU: A product with no SKU gets its database number as the SKU.
  • No offer without a price: A product with an empty price prints no offer. Google has no price to show, and the product drops out of merchant listings.

Brand comes only from the built-in Brands feature, added to core in WooCommerce 9.6. Stores that never filled in brands print no brand at all.

One more trap sits outside WooCommerce. Rank Math, Yoast and other SEO plugins can print a second Product block next to the core one. The validator flags the duplicate and names the SEO plugin it finds on the page.

Should variable products use AggregateOffer or ProductGroup?

Use a ProductGroup for variable products. It is a parent entry that lists each variant with its own Offer. Google's product snippet guide says not to describe a set of variants with an AggregateOffer, the type WooCommerce prints for them.

The WooCommerce AggregateOffer carries only a low price, a high price and an offer count. Google cannot see which size or color costs what. Merchant listings do not accept it at all.

In a ProductGroup, each variant sits under hasVariant with its own price, SKU and stock. The variesBy property says what changes between them, such as size or color.

WooCommerce core has no setting for this. Your SEO plugin or a code filter has to print it. If Shopping traffic matters, variable products are the first thing to fix.

How do you fix product schema in WooCommerce?

Fix product schema in WooCommerce in three steps from least to most work. Fill in the product data WooCommerce already prints and use your SEO plugin for store-wide fields. A code filter then covers whatever is left, such as shipping details on every offer.

  • Fill in the data: Add brands, GTINs and sale end dates in the product editor. WooCommerce prints them once they exist.
  • Use your SEO plugin: Rank Math and Yoast can add store-level fields. If your SEO plugin and WooCommerce both print a Product block, switch one off.
  • Filter the core output: The woocommerce_structured_data_product and woocommerce_structured_data_product_offer filters let a developer add any field to every product at once.

Shipping and returns do not have to repeat on every product. Google reads the sources in a fixed order.

Settings in Merchant Center or Search Console come first. Product markup comes second and a store-wide policy on your Organization markup comes last.

If you already send a product feed, those settings may cover you. Our guide on how to set up a Google Shopping feed for WooCommerce walks through it.

Why do product rich results not show in Google?

Product rich results stay hidden when the markup breaks a rule or when the page covers more than one product. Valid markup only makes a page eligible for them. Google still decides whether to show stars and price on each search.

  • Markup on a category page: Google supports product rich results on pages about a single product.
  • Prices that differ: A currency plugin can change the price on screen and leave the old one in the code.
  • A past priceValidUntil: Google may stop showing the price when that date has passed.
  • Incomplete ratings: Google drops a rating with no review count and a review with no author name.

Schema is one part of product SEO. Our WooCommerce SEO guide covers the titles, speed and links that decide where the page ranks.

How is this different from Google's Rich Results Test?

Google's Rich Results Test says whether a page qualifies but suggests no fixes. The Schema.org validator checks vocabulary only and ignores Google's rules. This product schema validator names the WooCommerce cause of each problem and its fix, with corrected JSON-LD to copy.

Use this tool to find and fix the problems. Run the Rich Results Test once as the final check.

After launch, the Product snippets and Merchant listings reports in Search Console show how Google reads every product in your store.

Sources

More free tools

More free tools for WordPress sites

FAQ

Product schema questions

What store owners ask most about Product structured data and rich results.

Ask us a question

Yes. You can check URLs, validate pasted JSON-LD and build new markup with no account and no email. A fair-use limit of 120 checks an hour per visitor keeps it fast for everyone.

Yes. WooCommerce prints Product markup on every product page with no extra plugin. It covers the name, price, stock, SKU and reviews.

It leaves out shipping details, the return policy and item condition. Merchant listings recommend all three.

Set your return policy in Merchant Center or Search Console, or add one MerchantReturnPolicy to your Organization markup. The fixed markup from this tool also includes one on the offer, ready to edit.

The same goes for "Missing field shippingDetails". Both are warnings that affect Shopping results only, and product snippets ignore them.

The priceValidUntil field tells Google the date a price stops being valid. It is recommended and never required.

You can ignore the warning for regular prices. When you run a sale, set a real sale end date in WooCommerce.

No plugin is needed for the basics because WooCommerce prints them. An SEO plugin or a small code filter helps with the fields core skips. Use one source for the Product block and switch the others off.

JSON-LD can sit in the head or the body, as long as it is in the HTML Google receives. Google reads markup that JavaScript adds after load less reliably. This tool only sees markup in the page source.

Yes. The checks follow Google's rules and work for any platform, including Shopify and custom stores. The WooCommerce notes appear only when we spot WooCommerce output on the page.

Our server fetches the public page or reads your pasted code to run the check. The report and the markup it found stay cached for 6 hours and then expire. We keep no account or history.

Want product schema fixed on every product?

The product schema generator shows what is missing. Our WooCommerce SEO team sets up product schema, shipping and return policies across your whole store. We confirm it in Search Console before we hand it over.

Support within hours A real person replies
14-day money back Fair terms
Always compatible Latest WP and Woo
Custom builds Made for your store

Why store owners pick us

What comes with every plugin you buy.

  • 26 premium WooCommerce plugins
  • 500+ five-star reviews
  • Served in 158+ countries
  • Elite Author on Envato
  • HPOS and latest Woo ready
  • Support that replies in hours
Pedro Lima, DevDiggers customer Kareem Al Samman, DevDiggers customer Valentina Dancheva, DevDiggers customer Diego Lopes, DevDiggers customer 5 star rating from 500+ reviews

Trusted worldwide

Store owners in 158+ countries run on DevDiggers.

Alan, DevDiggers customer Shiyanthan M, DevDiggers customer Pawel Pytasz, DevDiggers customer Marius, DevDiggers customer

Proven on Envato

Elite Author with $125,000+ in sales.