--- title: Catalog product data slug: m53g7119 canonical_url: https://docs.coveo.com/en/m53g7119/ collection: coveo-for-commerce source_format: adoc --- # Catalog product data Products are searchable [items](https://docs.coveo.com/en/pa8f6515/). In a [catalog entity](https://docs.coveo.com/en/3143/) without [variants](https://docs.coveo.com/en/mc7f0326/), products are also purchasable items. > **Tip** > > In a catalog entity that contains variants, customers will purchase variant items, which represent specific sellable versions of the products. > However, if your catalog entity exclusively includes items of the `product` [catalog object](https://docs.coveo.com/en/ncig0154/), customers will purchase `product` items, not variants. > See [Catalog variant data and product groupings](https://docs.coveo.com/en/m53g0506/) to learn more about variants. Here's an example of a JSON representation of a product named `Coveo Soccer Shoes - Red`, which includes generic information such as its description, image, and price. ```json { "documentId": "product://001-red", <1> "FileExtension": ".html", "ec_name": "Coveo Soccer Shoes - Red", "model": "Authentic", "ec_brand": "Coveo", "ec_description": "

The astonishing, the original, and always relevant Coveo style.

", "color": ["Red"], "ec_item_group_id": "001", "ec_product_id": "001-red", <2> "ec_images": ["https://myimagegallery?productid"], "gender": "Men", "price_dict": { <3> "": "28.00", "store1": "28.00", "store2": "30.00" }, "ec_category": "Apparel;Apparel|Footwear;Apparel|Footwear|Soccer Cleats", <4> "objecttype": "Product" <5> } ``` <1> The value of the `documentId` [metadata](https://docs.coveo.com/en/218/) is the unique identifier of your item in the [index](https://docs.coveo.com/en/204/) and will also serve as the item's `uri` field value. This value must be a valid URL with a proper URI prefix, such as `product://`, or any other scheme that fits your [catalog data](https://docs.coveo.com/en/obcf0333/). The URL format ensures that the `documentId` is recognized as a valid URI, which is essential for [updating](https://docs.coveo.com/en/p4eb0515/) the item's information in the index. <2> `ec_product_id` is the unique identifier of your product. Depending on your [catalog configuration](https://docs.coveo.com/en/3139#catalog-configuration), this [metadata](https://docs.coveo.com/en/218/) may have a different label. > **Note** > > To train [Coveo Machine Learning (Coveo ML)](https://docs.coveo.com/en/188/) [models](https://docs.coveo.com/en/1012/), this [metadata](https://docs.coveo.com/en/218/) can't contain the `#` character. <3> The `price_dict` is a [dictionary field](https://docs.coveo.com/en/2036/) that can be used in an environment where products need to have different prices (for example, when the price is based on location or seasonal pricing) for a single item, instead of sending a single price value. > **Note** > > If your product's price is static, you can store the product's price in a single _price_ field (for example, `ec_price`). <4> The `ec_category` metadata is used to define the category of your product. If your product belongs to multiple categories, or to define a hierarchy of categories, you must define them in a single string, using the following delimiters: * To define multi-value categories, use `;`. * To define a hierarchy of categories, use `|`. For example, if your product belongs to multiple categories and hierarchies, you can define them as follows: `"ec_category": "Apparel;Apparel|Footwear;Apparel|Footwear|Soccer Cleats"` <5> The `objecttype` metadata is crucial, as it will be used to identify the item as a product in the [index](https://docs.coveo.com/en/204/). When defining your product data, we highly recommend using the [standard fields](https://docs.coveo.com/en/n73f0502#standard-commerce-fields) for storing related data (for example, using `ec`-prefixed fields, such as `ec_price`). This will simplify the [mapping](https://docs.coveo.com/en/n8of7021/) process later on. > **Leading practice** > > In your catalog content, avoid using the same field name that you intend to use as [facets](https://docs.coveo.com/en/198/), on different types of items. > For example, if you're defining the `color` at a product level, then you shouldn't define the `color` at the variant level. > If you must include a field at both levels, prefix it with `product` and `variant` (e.g, `productcolor`, `variantcolor`) so that they're different in the index.