Product Schema Markup Generator for E-commerce
Table of Contents
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:
- aggregateRating + reviewCount — gets you the star rating display
- availability — gets you the "In stock" or "Out of stock" badge
- brand — connects your product to brand searches
- gtin — connects your product to Google's product graph (used by Shopping and Lens)
- priceValidUntil — required if your price is a sale; without it Google may show the old price
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:
- https://schema.org/InStock — for products you have
- https://schema.org/OutOfStock — sold out, may restock
- https://schema.org/PreOrder — accepting pre-orders
- https://schema.org/BackOrder — orderable but not shipped immediately
- https://schema.org/Discontinued — permanently unavailable
- https://schema.org/LimitedAvailability — low stock
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 ShippingAdding 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 GeneratorFrequently 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.

