Product Schema Generator
Generate Product JSON-LD with price, availability, shipping and returns: the fields Google uses for merchant listings.
Your details
Paste this into your product template, or check it in Google's Rich Results Test
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Organic Cotton Crew Tee",
"description": "Midweight crew neck t-shirt in 100% organic cotton. Pre-shrunk, relaxed fit.",
"image": "https://example.com/images/crew-tee-front.jpg",
"sku": "HC-TEE-001",
"brand": {
"@type": "Brand",
"name": "Harbour & Co"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/organic-cotton-crew-tee",
"price": "34.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": 0,
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 0,
"maxValue": 1,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 2,
"maxValue": 5,
"unitCode": "DAY"
}
}
},
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
}
}
</script>Most Shopify themes and many WooCommerce plugins already output Product markup. Check the page source for an existing Product block first so you don't publish two conflicting ones.
What product schema does
Product structured data tells Google the facts about a product in a format it can read reliably: name, price, currency, stock, shipping cost, delivery time and return policy. With it, your products can show those details directly in search results and in Google's shopping experiences.
| Field | Why it matters |
|---|---|
name, image, offers.price, offers.priceCurrency | Needed for merchant listing results at all |
availability | Shows In stock / Out of stock in results |
shippingDetails | Lets Google show shipping cost and delivery time |
hasMerchantReturnPolicy | Shows the return window, e.g. “30-day returns” |
gtin, brand, sku | Helps Google match your product to the right listings |
aggregateRating | Star ratings, only when the reviews are shown on the page |
Adding it to Shopify or WooCommerce
- 01
Check what's already there
View the product page's source and search for
"@type": "Product". Most Shopify themes and WooCommerce itself already output some product markup, often without shipping and return details. - 02
Shopify
Either extend the markup in your theme's product section (look for the
structured_datafilter or an existing JSON-LD block), or use this output as the reference for what's missing. - 03
WooCommerce
WooCommerce outputs basic Product data. SEO plugins can add more, or you can add a JSON-LD block to the single product template.
- 04
Test it
Paste the product URL into Google's Rich Results Test, then watch the Merchant listings report in Search Console for errors across all products.
For a whole catalogue, don't paste static JSON-LD into each product. Use this output as the template and have your theme fill in each product's values.
Questions people ask
Will schema get me star ratings?
Only if genuine reviews for that product are visible on the page. Marking up ratings shoppers can't see breaks Google's policy and can lead to a manual action.
Do I need shipping and return markup if I use Merchant Center?
Merchant Center settings can cover shipping and returns for Shopping ads and free listings. Adding them to the page as well keeps the details consistent everywhere Google shows your product.
What if I have variants?
Each variant with its own price or GTIN can have its own Offer. For size and colour families, Google also supports ProductGroup markup.
Is JSON-LD better than microdata?
Google accepts both, but recommends JSON-LD because it's separate from your HTML and easier to maintain.
Related tools
Last reviewed 29 September 2026.
Sources: Google: Merchant listing structured data · Schema.org: Product
