Blog
Wild & Free Tools

Product Schema Markup Generator for E-commerce

Last updated: April 2026 9 min read

Table of Contents

  1. What product schema unlocks
  2. Required fields
  3. Product offer states
  4. Shopify product schema
  5. WooCommerce product schema
  6. Validating and monitoring
  7. Frequently Asked Questions

Product schema is what gets you the rich results e-commerce sites compete for: price, star rating, stock availability, and review count showing directly in Google search. Without it, your product page is just a blue link. With it, you stand out from competitors and pull more clicks from the same search position. Our free generator builds valid Product JSON-LD with every field Google supports.

What Product Schema Actually Unlocks

Product schema feeds Google's product rich results. When implemented correctly, your search snippet can include: the product image as a thumbnail, the price in your currency, the in-stock or out-of-stock status, an aggregate review star rating with review count, and your brand name. All of this appears below the title in Google search and in the Shopping tab.

The impact is measurable. E-commerce sites that add Product schema properly tend to see 20-40% higher click-through rates on product page search results. The reason: rich results take up more space and look more credible than a plain text snippet. The same ranking position becomes worth more clicks.

Beyond standard search, Product schema also feeds Google Shopping, Google Lens results, the Shopping graph, and AI shopping assistants like Gemini and ChatGPT Search. Adding the schema is one of the highest-leverage SEO moves an e-commerce site can make.

Required vs. Recommended Product Schema Fields

Google requires: name, image, offers (with price and priceCurrency). That's the minimum. Anything less and the schema won't qualify for product rich results.

Strongly recommended: brand, sku, gtin (UPC/EAN/ISBN), description, aggregateRating, review, and offers.availability. Each one of these unlocks more rich result features:

The generator includes fields for all of these. Fill in what you have for each product. Don't fake reviews — Google's spam team has gotten very aggressive about fake aggregateRating values, and pages that lie get hit hard.

Setting the Right availability and Price Validity

The availability field uses schema.org URL constants, not free text. The valid values are:

For sale prices, always include priceValidUntil with a date in YYYY-MM-DD format. This tells Google when the sale ends. Without it, Google may keep showing the sale price after the sale is over, which leads to user complaints and Google losing trust in your data.

If your product has multiple variants (sizes, colors), use AggregateOffer with lowPrice and highPrice instead of a single Offer. The generator handles both patterns — pick the one that matches your product type.

Sell Custom Apparel — We Handle Printing & Free Shipping

Adding Product Schema to Shopify (Without an App)

Shopify's default themes ship with some Product schema baked in, but it's often incomplete or outdated. Most stores benefit from adding their own. Here's how without installing an app:

Open the theme code editor and find templates/product.liquid (or sections/product-template.liquid in newer themes). Paste your JSON-LD inside a script tag, using Liquid variables for the dynamic fields:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "{{ product.title | escape }}",
  "image": "{{ product.featured_image | img_url: 'master' }}",
  "description": "{{ product.description | strip_html | escape }}",
  "sku": "{{ product.selected_or_first_available_variant.sku }}",
  "brand": { "@type": "Brand", "name": "{{ product.vendor }}" },
  "offers": {
    "@type": "Offer",
    "price": "{{ product.price | money_without_currency }}",
    "priceCurrency": "{{ shop.currency }}",
    "availability": "https://schema.org/{% if product.available %}InStock{% else %}OutOfStock{% endif %}",
    "url": "{{ shop.url }}{{ product.url }}"
  }
}
</script>

Use the generator to build your initial structure with placeholder values, then swap in the Liquid variables. This is much cleaner than adding a paid SEO app and more flexible.

WooCommerce: When the Default Schema Isn't Enough

WooCommerce outputs basic Product schema by default. The problem: it usually misses brand, gtin, priceValidUntil, and proper availability handling. You can override or extend it.

The cleanest approach is to add a child theme function that injects your custom JSON-LD into the head of single product pages. Use the generator to build the JSON template, then in your child theme functions.php, write a function hooked into wp_head that outputs the JSON with PHP variables pulling from the WooCommerce product object.

If PHP isn't your thing, plugins like Yoast SEO Premium, Rank Math, and the Schema & Structured Data for WP plugin will do this for you — but they add weight and lock you into their patterns. For a single-product or small store, hand-coding once is faster and lighter than installing yet another plugin.

Validating Product Schema and Catching Errors Early

Run the Rich Results Test on every new product page before launch. It'll tell you exactly which Product fields are missing or malformed. Pay attention to warnings, not just errors — warnings often mean the schema validates but Google won't use it for rich results.

Set up the Merchant Listings report in Google Search Console (under Enhancements). This monitors every product page on your site and flags errors as Google crawls them. Common issues that show up: missing aggregateRating, missing brand, prices in the wrong format, image URLs that 404.

One pattern that catches many stores: Google flags products with reviews but no review schema, or schema with reviews but no visible reviews on the page. Both must exist together. If you're using a third-party review tool that loads reviews via JavaScript after page load, Google may not see them. Either render reviews server-side or include them in the initial HTML.

Try It Free — No Signup Required

Runs 100% in your browser. No data is collected, stored, or sent anywhere.

Open Free Schema Markup Generator

Frequently Asked Questions

Will product schema get me into Google Shopping?

It helps Google understand your products, but Google Shopping listings (the Shopping tab) require either a Google Merchant Center feed or the new free product listings feature. Schema markup makes you eligible for organic Shopping graph results — the products that appear inline in regular Google search.

Can I add aggregateRating without real reviews?

No. Google explicitly prohibits fake ratings. If caught, your entire site can lose rich results eligibility. Only add aggregateRating if you have a genuine review system collecting real customer reviews and the reviews are visible on the product page.

What's the difference between Product and AggregateOffer?

Product is the parent — every product page gets one Product block. Inside it, you put either a single Offer (one price, one variant) or an AggregateOffer (multiple variants with a price range). Use AggregateOffer when you sell sizes, colors, or other variants from the same product page.

Does Shopify need additional product schema if it already has some?

Usually yes. Shopify's default schema is minimal. Most stores benefit from adding brand, gtin, aggregateRating, and a more complete description. Replace or extend the default — don't leave both running, that creates duplicate schema and confuses Google.

How long until Product schema affects my rankings?

Google needs to recrawl your pages, parse the new schema, and decide whether to show rich results. That typically takes 1-4 weeks depending on how often Google crawls your site. Rich results may appear before rankings change — track CTR in Search Console for the first signal of impact.

Does Product schema work for digital products and services?

Yes for digital products like ebooks, software, courses — use Product as the @type. For services (consulting, classes, subscriptions), use Service or specialized types like Course instead. Product is for things you can sell as discrete units.

Launch Your Own Clothing Brand — No Inventory, No Risk