All 20 Schema Pro sections
WooCommerce
With WooCommerce active, a Product schema reads straight from each product: price, currency, stock status, SKU, brand, GTIN, the sale end date, the average rating and the review count. Leave those fields empty and they fill in by themselves; they also appear by name in the source selector, so there are no meta keys to look up.
The quickest way to set this up is a Product schema aimed at All Products. The setup offers one, and Tools → Integrations → WooCommerce has an Add a Product schema button whenever no active Product schema covers your products.
A product sold in variations is marked up with each variation's own price (see Variable products below), or, with that switched off, as a price range: lowest price, highest price and the number of variations. A product on back-order is marked up as on back-order, not in stock.
WooCommerce outputs its own Product markup. Two Product blocks on one page send search engines conflicting signals, so only one should be in charge. With Schema Pro handles products chosen — the default — WooCommerce's own block is switched off on each product one of your Product schemas covers, and on those products only. A product no Product schema covers keeps WooCommerce's markup, so switching the plugin on never leaves a product with none.
Our Product markup carries what WooCommerce's did, so nothing is lost when it takes over: the five newest rated reviews, the seller (your site identity), the struck-through price of a product on sale, and a price-valid-until date. The struck-through price is added only when the price comes from WooCommerce; a price typed into the schema is left as you typed it.
A product on sale is marked up the way Google's merchant listings ask: the old price with priceType StrikethroughPrice (Google accepts the older ListPrice only for a transition period), the sale's start as validFrom when it has a start date, and its end as priceValidUntil, both with the time and your site's time zone, such as 2026-10-31T23:59:59+01:00. WooCommerce ends a sale at 23:59:59 on its last day, on your site's clock. A product not on sale is dated to the end of next year, as WooCommerce's own markup does. That includes a product whose sale is booked for a later date, since the price shown today changes when the sale starts, and one whose sale has just ended. A Price valid until typed into the schema is used as typed. The schema editor's checks warn when a typed Price valid until is before the sale starts, and the Search Preview shows when the sale ends, such as "Sale ends 31 October 2026 at 23:59", in your site's date and time formats.
You can hand every product back to WooCommerce under Tools → Integrations → WooCommerce. If you do, check a product page's source afterwards and confirm a Product block is present.
Variable products#
Tools → Integrations → WooCommerce → Mark up each variation of a variable product.
Google's merchant listings need each product's own price, and a price range is not one. With this ticked, a variable product is marked up the way Google's product variants documentation describes: one ProductGroup for the product, holding each variation as a product of its own.
- The group carries the product's name, description, image, brand, reviews and rating, its address without any variation chosen, its SKU (or its ID when it has none) as the group's ID, and which attributes the variations differ by. Colour, size, material and pattern are recognised by their names in English, Spanish and French, such as Colour, Talla or Taille.
- Each variation carries its own name, its own SKU (or its ID when it has none), its own GTIN when it has one (never the parent's), its image, and an offer with its own price, currency, stock status and a link that opens the product page with that variation already chosen. A variation on sale also carries its regular price, struck through, and when its sale starts and ends, with the time and time zone. Its name is the one WooCommerce gives it, such as "Tee - Red, S"; for a product with three or more attributes, where WooCommerce names every variation after the product alone, the variation's choices are added the same way.
- The variations are the ones WooCommerce offers on the page: out-of-stock ones are left out when your shop hides out-of-stock items, and disabled or unpriced ones are always left out.
A variable product keeps its price range instead, and the schema editor's checks say why, when:
- a variation is set to Any for one of the attributes, because no link opens the page with that variation chosen, and Google asks for one per variant;
- it has more than 30 variations, which is where WooCommerce stops printing every variation into the page. Google sets no maximum. A developer can raise the number with the
trsch_product_group_limitfilter, and map an attribute with other names withtrsch_variant_property(answering color, size, material or pattern); - its price is typed into the schema rather than read from WooCommerce: a typed price stays one offer at that price.
While Let WooCommerce handle products is chosen, WooCommerce's own product markup is used and this option has no effect.
Simple products are marked up exactly as before.
New installs have this ticked. A shop that had Schema Pro before keeps its price ranges until it chooses, and the Dashboard offers it once there is a Product schema over your products and a published variable product: Mark up each variation ticks it, Not now leaves it off, and either can be changed here later. Saving this panel without ticking it does not answer the offer. Changing it empties the stored markup and asks your page cache to empty itself, so the next visit gets the new markup.
To see what Google reads from a product page, paste its address into Google's Rich Results Test, which lists the rich results it finds and anything it reports as a problem. The schema editor's Search Preview shows the lowest to the highest of the variations' prices.
Breadcrumbs on a shop#
WooCommerce outputs breadcrumb markup of its own wherever it shows a breadcrumb. On the shop, product category and product pages, Schema Pro's breadcrumb follows WooCommerce's trail — Home, the product's category, the product — so the markup matches the breadcrumb visitors see, and WooCommerce's copy is removed so there is one breadcrumb per page. With Breadcrumb markup off, or left to an SEO plugin, WooCommerce's is left alone. Tools → Integrations says which applies.
Still stuck? Ask the developers who wrote it. We aim to reply within one business day.