---
title: Mandatory item elements
slug: product-recommendations/docs/mandatory-item-elements
docTags: 
createdAt: 2026-07-30T20:41:29.696Z
---

The item portions of an RSS feed contain a number of elements that provide descriptive information for each item or product. The following fields are mandatory for the Optimizely feed. You may request [additional information](docId\:yPbxrI9NeST-slfxGNwS8) to fully optimize the product recommendations.

While the following items are mandatory, you can leave them as an empty string:

- `description`
- `pubDate`
- `imageLink` (not recommended)

## `title`

The item's title is used as the label for the links in the recommendation widget. The `title` value should convey enough information for a user to understand what the link refers to.

For example:

```xml
<title>Developing Feeds with RSS and Atom by Ben Hammersley</title>
```

## `description`

A text description of the item. It is typically a few sentences in length and ideally should be text with no HTML. The descriptions should be able to stand alone and provide enough information so users know what the item is.

For example:

```xml
<description>The Chiodo has the look of a motor sport boot  
with a low-cut design. Waxy finish, grained aniline leather upper  
with abrasion-resistant technical mesh panels.</description>
```

## `pubDate`

The publication date of the item. If your data supports `pubDate`, then you must include it in the feed as it is valuable information when calculating product recommendations. If your data does not support this, you can leave the `pubDate` as an empty string.

For example:

```xml
<pubDate>Fri, 11 Jun 2021 12:00:00 GMT</pubDate>  
<pubDate>Wed, 20 Apr 2022 16:00:00 +0200</pubDate>
```

## `guid`

A value or string that uniquely identifies the item within the site catalog. It serves as an important connector between your data and the Optimizely Product Recommendations engine. The GUIDs you provide in the feed must match those that you are using on your website. There is no established format for a `guid` value, but they must be unique across the data set.

For example:

```xml
<guid>10085600</guid>
```

## `link`

The URL of the item. Typically the content or product details page. The link provides the landing spot on your site for the links in Optimizely Product Recommendations. The value should be the URL for the product details page on your website. Avoid adding parameters to the URL. The URL must match the website.

For example:

```xml
<link>
http://yourdomain.com/some/dir/product
</link>
```

:::hint{type="info"}
**Note**
If you want to include the location attribute, use `p:link` instead. See [Location attribute](docId:6-2faYVmKt9-U5HIzM28X) for more information.
:::

## `p:imageLink`

The link to the image that you want to display with each item. Avoid adding parameters to the URL. The URL must match the website.

For example:

```xml
<p:imageLink>http://yourdomain.com/image/c001.jpg></p:imageLink>
```

## `p:price`

The product’s retail or sale price. This must match the price listed on your website. There are three sub-elements:

- `p:unitPrice` – Defines the product manufacturer's recommended retail price (MRRP) or sale price (if you are not using `p:salePrice`).
- (Optional) `p:salePrice` – Defines the sale price if the product is sold at a different price to that specified in the `p:unitPrice` element. If you do not provide the `p:salePrice`, the field populates with the `p:unitPrice`.
- `p:currency` – Indicates the currency of the prices. If more than one price is required for the same currency (such as prices in Euros for different European countries), you must include the prices as an attribute (see [Variant elements](docId\:yPbxrI9NeST-slfxGNwS8)).

For example:

```xml
<p:price>
  <p:unitPrice>10</p:unitPrice>
  <p:salePrice>8.50</p:salePrice>
  <p:currency>GBP</p:currency>
</p:price>
```

## `category`

Classification of the item, which is used to group items together. This element is a critical piece of information that the majority of algorithms in Product Recommendations utilize, and must match the category structure (breadcrumb) of the website. The `category` element defines the type of product and needs to match the category structure of your website. Use a greater-than symbol (>) to separate category levels. If a product belongs to multiple categories, then specify as shown.

For example:

```xml
<category>
  <![CDATA[Clothes>Mens>Shirts]]>
</category>

<category>
  <![CDATA[Clothes>Mens>Woolen Cardigans]]>
</category>

<category>
  <![CDATA[Clothes>Mens>Winter Wear]]>
</category>
```

## `p:stock`

The number of products available for the item. If you cannot provide a value, you can use the quantity `p:inStock` or add a dummy value. See \[optional elements]\(doc\:optional-item-elements).

For example:

```xml
<p:stock>20</p:stock>
```
