# Product schema: the Schema.org Product type explained

> What the Schema.org Product type is, which properties it carries, what Google requires for product snippets and merchant listings, and how to check it.

URL: https://clione.ai/glossary/product-schema/
Lang: en

When someone searches for "product schema", they want to know what goes in the [structured data](/glossary/structured-data/) of a [product page](/glossary/product-page/), and the answer starts with a type: Product, from [Schema.org](/glossary/schema-org/). It is not the product in your platform or a row in your [product feed](/glossary/product-feed/); it is **the markup node that tells a search engine which item is on the page**. Its name is a vocabulary term, not a plain word. It matters because it is the first thing Google reads to decide whether your [product page](/glossary/product-page/) can qualify for [rich results](/glossary/rich-results/), with its price, availability or ratings.

## How it works

Schema.org defines Product as any product or service that is offered, and gives examples as different as a pair of shoes, a concert ticket, a car rental or a haircut. It hangs directly from `Thing`, the root type.[^schema-org-product] Its properties fall into four families a store recognizes right away:

- **Identity**: `name`, `description`, `image` and `brand`.
- **Identifiers**: `sku` (the store's reference number), and the standard codes such as `gtin`, `gtin13` or `mpn`. They have their own entries: [SKU](/glossary/sku/), [GTIN](/glossary/gtin/) and [MPN](/glossary/mpn/).
- **Features**: `color`, `material` or `size`, among many others.
- **Relationships**: `offers`, which leads to the offer with the price; `aggregateRating` and `review`, for ratings; `isVariantOf` and `inProductGroupWithID`, for variants; and `hasMerchantReturnPolicy`, for the [return policy](/glossary/return-policy/).[^schema-org-product]

The `offers` property is what separates what the item **is** from the terms on which it is **sold**: Schema.org describes it as an offer to provide the item, for example to sell it, rent it or give away tickets.[^schema-org-product] The price, the currency and the availability live in that offer, the [Offer](/glossary/offer-schema/) type, not in the product.

Google uses Product for two different experiences. **Product snippets** are for pages where you cannot buy directly, such as an editorial review, and let you detail the rating with pros and cons. **[Merchant listings](/glossary/merchant-listings/)** are for pages where the customer buys from you, and they allow more detail, such as clothing sizes, shipping and returns.[^google-product] What each one requires at minimum is not the same:

| What Google requires | Product snippet                                                                             | Merchant listing                                                                                                                                                     |
| -------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Page                 | No direct purchase                                                                          | Direct purchase from you                                                                                                                                             |
| Required properties  | `name` and at least one of `review`, `aggregateRating` or `offers`[^google-product-snippet] | `name`, `image` and `offers`[^google-merchant-listing]                                                                                                               |
| Offer                | `Offer` or `AggregateOffer`                                                                 | `Offer` only, with a price above zero[^google-merchant-listing] |

A product with sizes or colors is not described as a single node. Google asks for a [`ProductGroup`](/glossary/productgroup/) that groups the variants, with `hasVariant` for each one, `variesBy` for what changes between them (the size or the color) and `productGroupID` for the reference of the parent product. Each variant is a Product with its own offer, and **each one needs a unique identifier, such as `sku` or `gtin`**.[^google-product-variants]

And one recommendation that changes the strategy: Google says that providing structured data on the page **and also** a feed in [Google Merchant Center](/glossary/google-merchant-center/) maximizes your chances of showing up and helps it understand and verify the data.[^google-product]

## In a store

Every property of the node has to be something you can point at on the page. **Fictional example**: a linen shirt from a made-up store, with what the page shows and where it goes in the node.

| What the page shows                               | Product property                       | Rule                                                                                                                                              |
| ------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Title "Calella linen shirt, blue"                 | `name`                                 | Required in both Google experiences                                                                                                               |
| Main photo                                        | `image`                                | Required for merchant listings                                                                                                                    |
| Brand Calella                                     | `brand`                                | Marked because it is visible                                                                                                                      |
| "Ref. CAL-BL" and the barcode                     | `sku`, `gtin13`                        | One per variant if there are sizes                                                                                                                |
| Fabric: linen                                     | `material`                             | Only if the page says so                                                                                                                          |
| Size selector                                     | `ProductGroup` with `hasVariant`       | Each size, its own Product and its own offer |
| No [customer reviews](/glossary/product-reviews/) | Neither `aggregateRating` nor `review` | What is not visible is not marked                                                                                                                 |

The last row is the one most argued about. If the page shows no ratings, the node carries none: Google asks you not to mark up content the reader cannot see and for the data to be a faithful representation of the page.[^google-sd-policies] It is the same rule Clione follows: the ratings it adds to the Product node come from the store's own reviews, and a product with no reviews gets none.


Believing that a correct Product node is enough to qualify for a merchant listing. Without `image` or without an offer with a price above zero it is not enough: those are requirements Google sets for that experience, and a node can be correct for the vocabulary without meeting them.[^google-merchant-listing] And if the page does not let you buy, what applies is the product snippet, not the merchant listing.[^google-product]


## How to check it

1. **Run the URL of a product page through the [Rich Results Test](/glossary/rich-results-test/).** It tells you which kinds of rich result it finds and with what errors or suggestions.[^rich-results-test]
2. **Look in the node for the three required properties** of a merchant listing: `name`, `image` and `offers`.[^google-merchant-listing]
3. **Point to each property on the visible page.** One you cannot find on screen is either surplus or missing from the page.[^google-sd-policies]
4. **If the product has variants, check that each one has its own `sku` or `gtin`** and that it is not repeated between sizes or colors.[^google-product-variants]

## Related concept: Offer

Product and Offer get confused because they travel together, but they answer different questions. **Product says what the item is; Offer says on what terms it is sold**: the price, the currency, the availability. Schema.org defines the offer as an offer to transfer some rights to an item or to provide a service, for example selling tickets or renting a movie.[^schema-org-offer] For merchant listings Google requires that the offer be yours: the merchant has to be the one selling the product.[^google-merchant-listing]

To keep going, [the structured data reading path](/learn/structured-data/) puts the other terms in order, and the guide to [auditing the structured data of a product page](/guides/audit-product-page-structured-data/) walks through a product page property by property.
