> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pureclarity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Product Recommender Model

> Model available for use in the Templates, and also returned by PureClarity in server-side requests.

Model available for use in the Templates, and also returned by PureClarity in server-side requests.

<Note>
  Any custom attributes sent in the feed will be available in the Template and returned in the server-side model. Access it using the same name that was provided in the feed.
</Note>

## Properties

<ParamField body="title" type="string">
  The title of the recommender
</ParamField>

<ParamField body="type" type="string">
  set to recommender-product
</ParamField>

<ParamField body="items" type="array">
  The products to show in the recommender

  Each product object contains:
</ParamField>

### Product Item Properties

<ParamField body="items[].Id" type="string">
  The unique product Id
</ParamField>

<ParamField body="items[].Sku" type="string">
  The product sku
</ParamField>

<ParamField body="items[].Title" type="string">
  The product title
</ParamField>

<ParamField body="items[].Link" type="string">
  The url to the product
</ParamField>

<ParamField body="items[].Image" type="string">
  The url to the main product image
</ParamField>

<ParamField body="items[].ImageOverlay" type="string">
  The url to the overlay product image
</ParamField>

<ParamField body="items[].AllImages" type="array">
  Array of urls to the product images
</ParamField>

<ParamField body="items[].Description" type="string">
  The description of the product
</ParamField>

<ParamField body="items[].Categories" type="array">
  An array of category IDs that the product is associated with
</ParamField>

<ParamField body="items[].SearchTags" type="array">
  Search tags if provided in the feed
</ParamField>

<ParamField body="items[].AssociatedSkus" type="array">
  Child/Variant skus of the product, if provided in the feed
</ParamField>

<ParamField body="items[].AssociatedIds" type="array">
  Child/Variant ids of the product, if provided in the feed
</ParamField>

<ParamField body="items[].Brand" type="object">
  A brand object that is associated with the product. Only available if a brand Id was sent in the product feed that has associated brand data in the brand feed
</ParamField>

<ParamField body="items[].Price" type="number">
  The product price for the user/account
</ParamField>

<ParamField body="items[].DisplayPrice" type="string">
  The formatted price with currency for the product (e.g. \$19.00)
</ParamField>

<ParamField body="items[].WasPrice" type="number">
  The previous price for the product
</ParamField>

<ParamField body="items[].DisplayWasPrice" type="string">
  The formatted was price with currency for the product (e.g. \$19.00)
</ParamField>

<ParamField body="items[].CurrencySymbol" type="string">
  The currency symbol for this products price
</ParamField>

<ParamField body="items[].SavingPrice" type="number">
  The saving on the product, taken as the difference between Price and SalePrice
</ParamField>

<ParamField body="items[].SavingDisplayPrice" type="string">
  The formatted saving price with current for the product (e.g. \$19.00)
</ParamField>

<ParamField body="items[].SavingPercent" type="string">
  Percentage saving for the product, between Price and SalePrice. Fixed to 0 dp
</ParamField>

<ParamField body="items[].OnOffer" type="boolean">
  True if the product is currently on offer. Set by the OnOffer property in the product feed model
</ParamField>

<ParamField body="items[].NewArrival" type="boolean">
  True if the product is new to the store. Set by the NewArrival property in the product feed model
</ParamField>

<ParamField body="items[].clickEvt" type="string">
  The JavaScript function to be executed on mouse down over the product element

  **Important:** This is required to track when users click through on a product. If this is omitted then reporting will be inaccurate
</ParamField>

<ParamField body="html" type="string">
  \[Serverside mode only] The html rendered version based on the Template
</ParamField>

## Example

```json theme={null}
{
  "title": "Recommended for You",
  "type": "recommender-product",
  "items": [
    {
      "Id": "P41923",
      "Sku": "SKU-123",
      "Title": "Example Product",
      "Link": "https://example.com/products/example-product",
      "Image": "https://example.com/images/product.jpg",
      "Description": "A great product description",
      "Categories": ["3841", "3842"],
      "Price": 29.99,
      "DisplayPrice": "$29.99",
      "WasPrice": 39.99,
      "DisplayWasPrice": "$39.99",
      "CurrencySymbol": "$",
      "SavingPrice": 10.00,
      "SavingDisplayPrice": "$10.00",
      "SavingPercent": "25",
      "OnOffer": true,
      "NewArrival": false,
      "clickEvt": "_pc('track','click',{zoneid:'PDP01',campaignid:'123',id:'P41923'})"
    }
  ],
  "html": "<div class='pc-recommender'>...</div>"
}
```
