Table of Contents
Product JSON-LD Dictionary: 25 Essential Properties for Schema.org Product
Looking for a clear explanation of Product JSON-LD properties such as mpn, gtin13, brand, sku, or availability?
This page explains the most useful Product structured data properties with simple definitions, practical examples, and common mistakes to avoid.
JSON-LD is the format recommended by Google for structured data, especially on product pages, and the properties covered below are based on Google Search Central, Merchant Center, and Schema.org documentation.
What is Product JSON-LD?
Product JSON-LD is a structured data format used to describe a product page in a machine-readable way inside the HTML of a webpage.
Google recommends this format to help its systems identify important information such as the product name, brand, price, availability, and reviews.
On ecommerce pages, the most common types are Product, Offer, AggregateRating, and Review.
Google also states that product snippets require at least one of the following: offers, review, or aggregateRating.
Product JSON-LD properties you should know
Below are some of the most useful structured data properties for a well-marked-up WordPress or WooCommerce product page.
Some properties describe the product itself, while others belong to the commercial offer shown on the page.
| Property | Purpose |
|---|---|
name |
Product name |
brand |
Product brand |
mpn |
Manufacturer part number |
gtin13 |
13-digit global trade item number |
sku |
Merchant-specific stock identifier |
offers |
Commercial offer block |
availability |
Stock status |
itemCondition |
Condition of the product |
@context
Definition: identifies the vocabulary used, usually https://schema.org/.
Why it matters: it helps search engines interpret the structured data correctly.
"@context": "https://schema.org/"
@type
Definition: specifies the type of item being described, in this case Product.
Why it matters: Google can distinguish a product page from other types of content.
"@type": "Product"
name
Definition: the name of the product shown to users.
Best practice: keep it identical to the visible main title of the product page.
"name": "Nike Air Zoom Running Shoes"
description
Definition: a short description of the product.
Best practice: write a clear description that matches the visible page content and helps users understand the item.
"description": "Lightweight running shoes with responsive cushioning for daily training."
image
Definition: one or more URLs pointing to product images.
Best practice: use real, accessible images that match the exact product or variant displayed on the page.
"image": [
"https://www.example.com/images/air-zoom-front.jpg",
"https://www.example.com/images/air-zoom-side.jpg"
]
brand
Definition: the product brand, often provided as a Brand object.
Best practice: do not confuse the product brand with the name of your store.
"brand": {
"@type": "Brand",
"name": "Nike"
}
sku
Definition: your internal stock keeping unit.
Best practice: use it for your catalog management, but do not treat it as a GTIN or MPN substitute.
"sku": "NK-AZ-42-BLK"
mpn
Definition: manufacturer part number.
Best practice: only use a real manufacturer-provided part number and never invent one.
"mpn": "AIRZOOM-447-B"
gtin13
Definition: a 13-digit global product identifier, commonly used as EAN-13 in many markets.
Best practice: use it only when you have a valid official identifier.
"gtin13": "3001234567892"
gtin
Definition: a more generic property for GTIN identifiers.
Best practice: use a consistent strategy if you choose between gtin and gtin13.
"gtin": "00012345600012"
category
Definition: the main category of the product.
Best practice: use it to clarify product context without stuffing unnecessary extra labels.
"category": "Sports Shoes"
color
Definition: the color of the product or selected variant.
Best practice: make sure it matches the exact visible or selected variation on the page.
"color": "Black"
size
Definition: the product size.
Best practice: especially useful for shoes, apparel, and variable products.
"size": "42"
material
Definition: the main material or composition of the product.
Best practice: helpful for technical descriptions and products where material affects purchase decisions.
"material": "Breathable mesh and rubber sole"
pattern
Definition: the product pattern, such as solid, striped, or floral.
Best practice: especially relevant for fashion, textiles, and decorative items.
"pattern": "Solid"
weight
Definition: the weight of the product.
Best practice: use a QuantitativeValue object with a numeric value and a clear unit.
"weight": {
"@type": "QuantitativeValue",
"value": 0.85,
"unitText": "kg"
}
width, height, depth
Definition: the physical dimensions of the product.
Best practice: always include a unit when adding technical dimensions.
"width": {
"@type": "QuantitativeValue",
"value": 32,
"unitText": "cm"
},
"height": {
"@type": "QuantitativeValue",
"value": 12,
"unitText": "cm"
},
"depth": {
"@type": "QuantitativeValue",
"value": 18,
"unitText": "cm"
}
audience
Definition: the target audience for the product.
Best practice: useful for catalogs where age or gender is part of the product definition.
"audience": {
"@type": "PeopleAudience",
"suggestedGender": "male",
"suggestedMinAge": 18
}
offers
Definition: the object that contains the commercial offer information.
Best practice: on a product page that sells an item online, this is often one of the most important parts of the markup.
"offers": {
"@type": "Offer",
"price": "129.90",
"priceCurrency": "EUR"
}
price
Definition: the product price within the offer.
Best practice: the structured data price must match the visible price on the page.
"price": "129.90"
priceCurrency
Definition: the price currency in ISO 4217 format.
Best practice: use codes like EUR, USD, or TND, not full currency names.
"priceCurrency": "EUR"
availability
Definition: the stock availability of the product offer.
Best practice: use standardized values such as https://schema.org/InStock or https://schema.org/OutOfStock.
"availability": "https://schema.org/InStock"
https://schema.org/InStockhttps://schema.org/OutOfStockhttps://schema.org/PreOrderhttps://schema.org/BackOrderhttps://schema.org/LimitedAvailability
itemCondition
Definition: the condition of the product at the time of sale.
Best practice: specify whether the item is new, used, or refurbished with a standardized value.
"itemCondition": "https://schema.org/NewCondition"
priceValidUntil
Definition: the date until which the price remains valid.
Best practice: especially useful for promotions or temporary pricing.
"priceValidUntil": "2026-12-31"
url
Definition: the URL of the product page or offer.
Best practice: use the canonical URL of the exact product or visible variant.
"url": "https://www.example.com/nike-air-zoom-running-shoes"
seller
Definition: the seller of the product offer.
Best practice: identify the organization or person actually selling the product.
"seller": {
"@type": "Organization",
"name": "My Store"
}
aggregateRating
Definition: the average rating based on customer reviews.
Best practice: only use this property if the ratings and review counts are real and visible on the page.
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "128"
}
review
Definition: an individual review of the product.
Best practice: structured reviews should reflect authentic, visible review content on the page.
"review": {
"@type": "Review",
"author": {
"@type": "Person",
"name": "Sam"
},
"reviewRating": {
"@type": "Rating",
"ratingValue": "5"
},
"reviewBody": "Very comfortable shoes with excellent cushioning."
}
Full Product JSON-LD example
Here is a full example combining several important Product and Offer properties.
You can use it as a starting point before replacing the sample data with your real product information.
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Nike Air Zoom Running Shoes",
"description": "Lightweight running shoes with responsive cushioning for daily training.",
"image": [
"https://www.example.com/images/air-zoom-front.jpg",
"https://www.example.com/images/air-zoom-side.jpg"
],
"brand": {
"@type": "Brand",
"name": "Nike"
},
"sku": "NK-AZ-42-BLK",
"mpn": "AIRZOOM-447-B",
"gtin13": "3001234567892",
"category": "Sports Shoes",
"color": "Black",
"size": "42",
"material": "Breathable mesh and rubber sole",
"pattern": "Solid",
"weight": {
"@type": "QuantitativeValue",
"value": 0.85,
"unitText": "kg"
},
"audience": {
"@type": "PeopleAudience",
"suggestedGender": "male",
"suggestedMinAge": 18
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "128"
},
"offers": {
"@type": "Offer",
"url": "https://www.example.com/nike-air-zoom-running-shoes",
"price": "129.90",
"priceCurrency": "EUR",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": {
"@type": "Organization",
"name": "My Store"
}
}
}
Product JSON-LD FAQ
What is the difference between SKU, MPN, and GTIN?
SKU is an internal identifier created by the merchant, MPN is a manufacturer part number, and GTIN is a globally standardized product identifier.
In practice, all three can exist together, but they do not serve the same purpose.
Should I use gtin13 or gtin?
If you know your identifier is specifically a 13-digit code, gtin13 makes sense.
If you work with GTINs in different lengths, gtin may be more flexible.
Can I invent an MPN or GTIN if I do not have one?
No. You should never invent product identifiers.
If you do not have a real GTIN or MPN, it is better to leave the property out than to add incorrect data.
Which values should I use for availability?
The most common values are https://schema.org/InStock, https://schema.org/OutOfStock, https://schema.org/PreOrder, and https://schema.org/BackOrder.
The important part is to use a value that matches the actual stock status shown on the page.
Is Product structured data enough to get a rich result?
Not automatically. Structured data helps Google understand the page, but rich result eligibility also depends on content quality, compliance with guidelines, and valid markup.
Do the structured data values need to be visible on the page?
Structured data should match the content actually shown to users.
For FAQ content in particular, Google says the questions and answers should be visible on the page, even if they are shown inside expandable sections.
How can I validate my Product JSON-LD markup?
After implementation, test the page with Google’s Rich Results Test and review enhancement reports in Google Search Console.
That is the best way to find critical errors and improve your markup quality.

