schemapilot.
Blog
Implementation

Schema Markup for WooCommerce: The Complete Guide

·7 min read

WooCommerce powers over 35% of all online stores, making it the most popular e-commerce platform on the web. But if you're running a WooCommerce store, there's a good chance your product pages are leaving visibility on the table. The reason: incomplete WooCommerce structured data.

Proper schema markup for WooCommerce gets your products showing rich results in Google — the enhanced listings with prices, star ratings, availability badges, and review counts that stand out from plain blue links. These rich results consistently drive higher click-through rates and more qualified traffic to your store.

This guide covers everything you need to know about WooCommerce schema: what's included out of the box, where the gaps are, and three ways to fix them.

What WooCommerce includes by default

WooCommerce does add basic schema markup to your product pages automatically. Since version 3.0, the WooCommerce structured data output includes JSON-LD with core fields like product name, description, image, price, and availability.

Here's roughly what the default WooCommerce structured data looks like:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Classic Cotton T-Shirt",
  "description": "A comfortable everyday cotton t-shirt.",
  "image": "https://example.com/tshirt.jpg",
  "offers": {
    "@type": "Offer",
    "price": "29.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  }
}

That's a reasonable starting point, but it's incomplete. The default WooCommerce structured data typically misses:

  • aggregateRating — star ratings and review count, even when your products have reviews
  • review — individual review markup
  • brand — manufacturer or brand name
  • sku — product identifier
  • gtin / mpn — barcode and manufacturer part numbers (increasingly important for Google Shopping)
  • Detailed offer properties — like priceValidUntil, itemCondition, and seller information

Google's Rich Results Test will often flag default WooCommerce structured data with "missing recommended fields" warnings. These aren't errors that block rich results entirely, but filling them in significantly improves your chances of getting enhanced product listings.

Google has stated that more complete Product schema increases the likelihood of rich result display. Missing recommended fields like aggregateRating and brand are the most common gaps in WooCommerce structured data.

Option 1: Schema Pilot — AI-powered schema markup for WooCommerce

If you want comprehensive WooCommerce structured data without installing WordPress plugins or writing PHP code, Schema Pilot is built for this.

Here's how it works with WooCommerce:

  1. Sign up and add your WooCommerce store as a website in Schema Pilot
  2. AI scans your product pages and generates complete Product schema with all recommended fields — name, description, image, offers, aggregateRating, brand, SKU, and more
  3. Deploy via embed script — paste a single line of JavaScript into your WordPress header (via your theme's header.php, a plugin like Insert Headers and Footers, or your child theme). The script loads your schema automatically.
  4. Category pages, blog posts, and about pages get schema too — Schema Pilot doesn't stop at products. It generates BreadcrumbList, Organization, Article, and WebSite schema for your entire store.

Schema Pilot works alongside WooCommerce's existing structured data without creating conflicts or duplicates. The embed script is lightweight (under 1KB) and loads asynchronously, so it won't affect your store's page speed. Unlike manual schema markup for WooCommerce approaches, there's no configuration per product — the AI handles it.

The auto-rescanning feature is particularly useful for WooCommerce stores. When you add new products, change prices, or update inventory, Schema Pilot's scheduled rescans detect the changes and update your WooCommerce structured data automatically. You don't have to remember to regenerate anything.

Free plan: 1 site, 30 page scans — enough to cover your key product pages and test the results.

Stop writing schema markup by hand

Schema Pilot scans your pages, generates valid JSON-LD, and serves it automatically. No code changes required.

Option 2: WooCommerce schema plugins

Several WordPress plugins extend the default WooCommerce structured data output. These schema markup for WooCommerce plugins integrate directly into the WordPress admin.

Yoast WooCommerce SEO

Yoast's WooCommerce add-on (requires Yoast SEO Premium) enhances the default WooCommerce structured data by adding brand, manufacturer, GTIN fields, and improving the product schema output. It pulls data from custom fields you fill in on each product's edit screen.

Pros: Tight integration with Yoast SEO, familiar interface, handles variable products well. Cons: Requires both Yoast SEO Premium and the WooCommerce add-on (paid), manual data entry per product.

Rank Math (WooCommerce integration)

Rank Math's free version includes WooCommerce schema support out of the box. It automatically enhances the WooCommerce structured data and provides fields for brand, GTIN, and other identifiers directly in the product editor.

Pros: Free WooCommerce schema features, includes schema validation, supports variable products. Cons: Can conflict with WooCommerce's built-in structured data if not configured to replace it.

Schema Pro / JEEP for WooCommerce

Dedicated schema plugins like Schema Pro and JSON-LD for WooCommerce focus specifically on WooCommerce structured data. They offer granular control over which fields are output and can map WooCommerce product data to schema properties automatically.

Pros: Focused tooling, fine-grained control. Cons: Yet another plugin to maintain, some are premium-only.

If you use a schema plugin alongside WooCommerce's built-in structured data, make sure one of them is disabled for Product schema. Duplicate WooCommerce structured data on the same page is a common issue that confuses Google's parser.

Option 3: Custom code with WooCommerce hooks

For developers who want full control over their WooCommerce structured data, WooCommerce provides hooks to modify or extend the built-in schema output. The primary hook is woocommerce_structured_data_product, which fires when WooCommerce generates Product JSON-LD. This is the most flexible way to customize schema markup for WooCommerce at the code level.

Adding brand information

add_filter( 'woocommerce_structured_data_product', 'add_brand_to_schema', 10, 2 );

function add_brand_to_schema( $markup, $product ) {
    // Pull brand from a custom field or product attribute
    $brand = $product->get_attribute( 'brand' );

    if ( $brand ) {
        $markup['brand'] = array(
            '@type' => 'Brand',
            'name'  => $brand,
        );
    }

    return $markup;
}

Adding GTIN and SKU

add_filter( 'woocommerce_structured_data_product', 'add_identifiers_to_schema', 10, 2 );

function add_identifiers_to_schema( $markup, $product ) {
    $gtin = get_post_meta( $product->get_id(), '_gtin', true );

    if ( $gtin ) {
        $markup['gtin'] = $gtin;
    }

    if ( $product->get_sku() ) {
        $markup['sku'] = $product->get_sku();
    }

    return $markup;
}

Adding aggregate ratings

add_filter( 'woocommerce_structured_data_product', 'add_aggregate_rating', 10, 2 );

function add_aggregate_rating( $markup, $product ) {
    if ( $product->get_review_count() > 0 ) {
        $markup['aggregateRating'] = array(
            '@type'       => 'AggregateRating',
            'ratingValue' => $product->get_average_rating(),
            'reviewCount' => $product->get_review_count(),
        );
    }

    return $markup;
}

Place this code in your child theme's functions.php or a site-specific plugin. Never edit WooCommerce core files directly — your changes will be lost on the next update.

The custom code approach gives you full control over your WooCommerce structured data output, but it requires ongoing maintenance. Every WooCommerce update, theme change, or product data structure change may require code adjustments. For stores with hundreds of products, manually managing schema markup for WooCommerce through code can become time-consuming.

Free Product Schema Generator

Goods and services with offers and reviews. Generate valid JSON-LD in seconds.

Essential schema properties for WooCommerce products

Whether you use a plugin, custom code, or Schema Pilot, here are the Product schema properties that matter most for complete WooCommerce structured data and rich results:

PropertyRequired / RecommendedWhat It Does
nameRequiredProduct title
imageRequiredProduct image URL(s)
descriptionRecommendedProduct description
offersRequiredPrice, currency, availability
offers.priceRequiredNumeric price value
offers.priceCurrencyRequiredCurrency code (USD, GBP, EUR)
offers.availabilityRequiredInStock, OutOfStock, PreOrder
offers.priceValidUntilRecommendedExpiry date for the price
offers.itemConditionRecommendedNewCondition, UsedCondition, etc.
aggregateRatingRecommendedAverage star rating + review count
reviewRecommendedIndividual customer reviews
brandRecommendedBrand or manufacturer name
skuRecommendedProduct SKU
gtinRecommendedUPC, EAN, or ISBN barcode
mpnRecommendedManufacturer part number

A complete WooCommerce schema implementation with all these WooCommerce structured data fields looks like this:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Classic Cotton T-Shirt",
  "description": "A comfortable everyday cotton t-shirt in 100% organic cotton.",
  "image": [
    "https://example.com/tshirt-front.jpg",
    "https://example.com/tshirt-back.jpg"
  ],
  "brand": {
    "@type": "Brand",
    "name": "Example Apparel"
  },
  "sku": "CT-001",
  "gtin": "0123456789012",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "142"
  },
  "review": {
    "@type": "Review",
    "author": { "@type": "Person", "name": "Jane D." },
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5"
    },
    "reviewBody": "Best t-shirt I've owned. Soft fabric and true to size."
  },
  "offers": {
    "@type": "Offer",
    "price": "29.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "priceValidUntil": "2026-12-31",
    "seller": {
      "@type": "Organization",
      "name": "Example Store"
    }
  }
}

Beyond products: schema for other WooCommerce pages

Your WooCommerce store has more pages than just products. Complete WooCommerce schema coverage means adding structured data to every important page type, not just product listings.

Shop and category pages

Category and shop pages can use CollectionPage or ItemList WooCommerce schema to help Google understand the relationship between your product listings. This supports breadcrumb-style display in search and can improve how Google crawls your product catalog.

Blog and content pages

If your WooCommerce store has a blog (and it should for SEO), use Article schema on blog posts. This enables Top Stories eligibility and clearer content classification in search.

About and contact pages

Your about page should carry Organization schema with your business details — name, logo, contact info, social profiles. This feeds Google's Knowledge Graph and can trigger knowledge panel displays for brand searches.

Sitewide schema

Every page should include WebSite and BreadcrumbList schema. WebSite schema enables the sitelinks search box in Google, while BreadcrumbList creates clean, navigable URL paths in search results instead of raw URLs.

Free Product Schema Generator

Goods and services with offers and reviews. Generate valid JSON-LD in seconds.

Testing and common issues

Once you've implemented schema markup for WooCommerce, validate your WooCommerce structured data before assuming everything works.

How to test

  1. Google Rich Results Test (search.google.com/test/rich-results) — paste a product URL and check for valid Product markup with no errors
  2. Schema Markup Validator (validator.schema.org) — validates against the full Schema.org spec, catching issues Google's tool might miss
  3. Google Search Console — the Enhancements section shows Product rich result status across your entire site, including errors and warnings at scale

Common issues

Duplicate WooCommerce structured data. The most frequent WooCommerce schema problem. If you install a schema plugin but forget to disable WooCommerce's built-in structured data, Google sees two conflicting Product blocks on the same page. Fix this by either removing WooCommerce's default output (via the woocommerce_structured_data_product hook returning an empty array) or configuring your plugin to replace rather than supplement the default.

Missing required fields on variable products. WooCommerce variable products need an offers array with multiple Offer entries — one per variation — each with its own price and availability. Some schema implementations only output the parent product price, which may not match what's actually displayed on the page. Google penalizes mismatches between visible content and schema data.

Price mismatches during sales. When you run WooCommerce sales, your schema must reflect the sale price, not the regular price. WooCommerce's built-in schema handles this correctly, but custom implementations sometimes cache the regular price.

Missing reviews despite having them. WooCommerce stores the review data, but not all WooCommerce structured data implementations pull it into the schema output. If your products have reviews, verify that aggregateRating and review properties appear in the JSON-LD output.

After deploying WooCommerce schema changes, wait a few days before checking Google Search Console for rich result status. Google needs time to recrawl and reprocess your pages. Use the URL Inspection tool to request re-indexing for your most important product pages.

Get your WooCommerce schema markup right

WooCommerce structured data doesn't have to be complicated. The default schema gets you partway there, and with any of the three approaches above — Schema Pilot for automated AI-driven schema, a dedicated plugin, or custom PHP code — you can fill the gaps and start earning product rich results.

The key is completeness. Google rewards product listings with detailed, accurate schema markup for WooCommerce that includes pricing, availability, ratings, brand, and identifiers. The more properties you provide, the better your chances of standing out in search results.

Start by testing your current WooCommerce structured data with Google's Rich Results Test. Identify the gaps, pick the schema markup for WooCommerce approach that fits your workflow, and implement. The difference in search visibility is worth the effort.

Related posts

Stop leaving rich results on the table

Every page without schema markup is a missed opportunity for clicks. Schema Pilot handles the entire process — scanning, generating, validating, and serving structured data — so you don't have to.