---
title: Product Recommendations - Getting Started
description: Product recommendations with our implementation model requires a few simple tasks
---

[Skip to content](https://doc.sitespect.com/knowledge/product-recommendations-getting-started#main-content)

English

Show submenu for translations

![Monetate-Logo-Full-Color-1](https://doc.sitespect.com/hs-fs/hubfs/Monetate-Logo-Full-Color-1.png?width=340&height=49&name=Monetate-Logo-Full-Color-1.png)

- [A/B Testing](https://www.sitespect.com/testing-and-experimentation/)
- [Personalization](https://www.sitespect.com/personalization-targeting/)
- [Recommendations](https://www.sitespect.com/recommendations/)

Open main navigation

Close main navigation

- [A/B Testing](https://www.sitespect.com/testing-and-experimentation/)
- [Personalization](https://www.sitespect.com/personalization-targeting/)
- [Recommendations](https://www.sitespect.com/recommendations/)
- English
  
  Show submenu for translations

 How can we help you?

- There are no suggestions because the search field is empty.

1. [Knowledge Base](https://doc.sitespect.com/knowledge?hsLang=en)
2. [Build](https://doc.sitespect.com/knowledge/build?hsLang=en)
3. [Recommendations](https://doc.sitespect.com/knowledge/build?hsLang=en#recommendations)

# Product Recommendations - Getting Started

## Product recommendations with our implementation model requires a few simple tasks

![](https://doc.sitespect.com/hubfs/image-png-May-20-2022-01-35-46-71-PM.png)

### Table of Content

[Questionnaire](https://doc.sitespect.com/knowledge/product-recommendations-getting-started#questionnaire)

[Parent Products and Variants](https://doc.sitespect.com/knowledge/product-recommendations-getting-started#parent-products-and-variants)

[Product Identifiers and Categories for Recommendations](https://doc.sitespect.com/knowledge/product-recommendations-getting-started#product-identifiers-categories)

[Setting up a the SiteSpect Data Layer](https://doc.sitespect.com/knowledge/product-recommendations-getting-started#setting-up-data-layer)

[Setting up your Product Feed](https://doc.sitespect.com/knowledge/product-recommendations-getting-started#sync-your-product-feed)

[Loading Historical Data](https://doc.sitespect.com/knowledge/product-recommendations-getting-started#loading-historical-data)<https://doc.sitespect.com/knowledge/product-recommendations-getting-started#api-integration>

### Getting Started

Changing or implementing product recommendation solutions shouldn’t be hard. Our implementation model ensures you’ll have a few simple tasks, while we do the rest.

![](https://doc.sitespect.com/hubfs/image-png-May-20-2022-01-37-18-28-PM.png)

#### **Questionnaire**

Please take a minute to answer these questions as they relate to the recommendations setup. These will help ensure a smooth implementation process:

- Are there different versions of product pages? For example, when coming from email/ad campaigns, or from search, mobile vs desktop.
- Are there any free or add-on products that get added on cart or elsewhere? How are those identified?
- Do you have multiple order confirmation pages, to support different payment options (e.g. Paypal, Credit Card, …)?
- How do we place orders for QA/Validation purposes for the different payment methods?
- Do you have any plans for website replatforming in the coming months (e.g. SPA, PWA, ....)
- Are there multiple subdomains or primary domains?
- Is your site using autocomplete for site search?
- Is your site leveraging product quick view functionality?

**Parent Products and Variants**

SiteSpect suggests producing recommendations at the parent level. This approach typically yields higher quality recommendations, by aggregating user behaviors around parent products, instead of diluting that same data across multiple variants. 

As such, each row in your product feed should represent parent products, and information exposed in your data layer should be aligned with parent products as well.

**Product Identifier used for Recommendations**

Product identifiers are leveraged in the product feed and data layer.

Product ID

- Should be the same in both your product feed and data layer
- Make sure that product identifiers are aligned with parents or variants as described above

#### **Setting up the SiteSpect Data Layer**

This simple data layer identifies key pages and data points needed to produce quality recommendations. Key pages where the data layer is needed are:

- Purchase confirmation page
- Product detail pages
- Quick View (if available)
- Shopping Cart
- Category pages
- Search Results

***NOTE:  If your site makes use of product Quick View functionality, make sure that the ‘category’ value is the same on both category and product detail pages.***

Here is an example of what the data layer looks like for these key pages:

```
<!-- Product Detail Page -->
<script type="text/javascript">
var ssRecsInfo =
{
   'page': {
       'type': 'product',
       'products': [
           {
           'productId': '889987', //should match product feed
           'category': ['sporting goods', 'winter sports', 'snowboarding', 'snowboard boots'] //product's list of categories
           }
       ]
   }
};
</script>

<!-- Product Listing Page -->
<script type="text/javascript">
var ssRecsInfo =
{
   'page': {
       'type': 'category',
       'category': ['sporting goods', 'winter sports', 'snowboarding', 'snowboard boots'] //should match pdp categories
   }
};
</script>

<!-- Cart Page -->
<script type="text/javascript">
var ssRecsInfo =
{
   'page': {
       'type': 'cart',
       'products': [
           {
           'productId': '889987',
           'category': ['sporting goods', 'winter sports', 'snowboarding', 'snowboard boots']
           },
           {
           'productId': '310293',
           'category': ['sporting goods', 'winter sports', 'snowboarding', 'snowboards']
           }
       ]
   }
};
</script>

<!-- Order Confirmation Page -->
<script type="text/javascript">
var ssRecsInfo =
{
   'page': {
       'type': 'confirmation',
       'orderTotal': 246.53,
       'products': [
       {
           'productId': '889987',
           'category': ['sporting goods', 'winter sports', 'snowboarding', 'snowboard boots']
           },
           {
           'productId': '310293',
           'category': ['sporting goods', 'winter sports', 'snowboarding', 'snowboards']
           }
       ]
   }
};
</script>

<!-- Search Results Page -->
<script type="text/javascript">
var ssRecsInfo =
{
   'page': {
       'type': 'search',
       'searchString': 'snowboarding gear'
   }
}
</script>

<!-- Any additional page where we would need to show items complementary to the cart (i.e. homepage) -->
<script type="text/javascript">
var ssRecsInfo =
{
   'page': {
       'type': 'home',
   },
   'cart':{
     'products': [
       {
           'productId': '889987',
           'category': ['sporting goods', 'winter sports', 'snowboarding', 'snowboard boots']
           },
           {
           'productId': '310293',
           'category': ['sporting goods', 'winter sports', 'snowboarding', 'snowboards']
           }
       ]
   }
};
</script>
```

#### **Setting up a Data Layer for a Single Page Application (SPA)**

***NOTE: We recommend leveraging existing web analytics and tag manager logic to construct the SiteSpect recommendations data layer.***

On a virtual page view, update the data layer according to the examples above, and fire this event:

```
window.SS && SS.Require(function(){
    SS.Recs && SS.Recs.sendRecsEvent({action: "page-view"});
});
```

#### **Expose a Unique Customer ID**

You can pass your own customer id to stitch user behaviors across different devices:

```
var ssRecsInfo =
{
   'page': {...},
   'user' : {
       'id' : '12345'
   }
};
```

#### Setting up your Product Feed

***NOTE: If you already produce a Google Merchant feed or similar, we recommend providing a sample to the SiteSpect team as a first step.***

Our specs are loosely based on the *Google Merchant Feed*. If you already produce such a feed, or a similar feed for other purposes, we recommend starting with what you currently have.

A product feed needs to be exposed and refreshed periodically as part of the onboarding process. SiteSpect ingests this feed and refreshes it daily (can be customized if needed).

The feed is used to display recommendations (name, image, link, price, etc) as well as for filtering and boosting purposes.

 

**What products should be included in the feed?**

The feed should include all products that are exposed on the website, including out-of-stock, pre-order, and other availability statuses.

 

**Availability**

You must upload the feed to a publicly available URL location, and update it at a specified frequency. Please communicate the URL location to the SiteSpect team.

 

**Format**

SiteSpect works with the following format:

- Text-based tabular data (eg: tsv, csv, etc.)
- UTF-8 encoded without BOM
- Delimiter: tab (recommended) or custom

 

**Parent vs Child/Variant Items**

SiteSpect suggests producing recommendations at the parent level. As such, each row in your product feed should be at the parent level.

 

**Required Fields**

The recommendation engine requires the following fields:

- Unique Product Identifier 
    - Required.

- - This field needs to match the product identifier (SKU or product id) exposed in the data layer throughout the site, including PDPs and order confirmation page.
- Availability 
    - Required.

- - Values need to be consistent across products.
- Display Properties (up for discussion): 
    - These properties are used to build recommendation templates.
    - Example of fields: 
          - Name
          - Image URL
          - Product URL
          - Ratings/reviews
          - Price
          - Sales Price

- Filtering Properties (up for discussion) 
    - These properties are used to filter recommendations in the UI.
    - Try to align with your website categorization, navigation, and search filtering.
    - A general best practice is to split properties into single dimensions with few values. For example, it's always preferable to have *product\_type* and *usage* as two separate properties, rather than combined under one.
    - For each property, values need to be consistent across products (e.g. two products in the same category should have the same exact category name).

- - For primary categories and dimensions, focus on single values for optimal filtering. For example:  
          - product\_type: shoes

- - For properties that are treated like tags, a list of values is preferred. For example:  
          - product\_style = \["Dress","Men's Clearance","Loafers"\]

- - If your product feed exposes hierarchical properties, talk to your support team.

- - Examples of filter properties: 
          - Primary Category
          - Product Type
          - Usage Type
          - Brand
          - Color
          - Size

#### **Loading Historical Data**

To accelerate the creation of a mature recommendations model, SiteSpect can ingest historical transaction data.

We recommended providing at least 90 days worth of historical transaction data. If seasonality strongly impacts the variety of products available in your catalog, consider including up to 12 months of historical transaction data.

 

**Format**

- Text-based tabular data (eg: tsv, csv, etc.)
- UTF-8 encoded without BOM
- Delimiter: tab (recommended) or custom

 

**Required Fields**

- Unique Product Identifier
- Order or transaction Identifier
  
    - Should be unique to the transaction, and shared by all items in a transaction
- Datetime of transaction
  
    - Epoch timestamp, iso8601, or other standardized date format
- Customer Identifier
  
    - Unique to the same user across multiple transactions

 

**Example**

A sample file can be provided upon request. See excerpt below:

| **order\_id** | **order\_date** | **product\_sku** | **customer\_id** |
| --- | --- | --- | --- |
| 1459357 | 2020-10-06 02:23:41.626 +0000 | 889987 | 601054 |
| 1459357 | 2020-10-06 01:28:38.186 +0000 | 310293 | 601054 |
| 1459447 | 2020-10-06 02:03:06.760 +0000 | 254286 | 601123 |
| 1459962 | 2020-10-06 04:41:01.084 +0000 | 544465 | 601025 |
| 1459994 | 2020-10-06 04:27:11.998 +0000 | 579289 | 601020 |
| 1460013 | 2020-10-06 04:27:11.997 +0000 | 707648 | 601142 |
| 1460021 | 2020-10-06 04:38:13.635 +0000 | 351857 | 601037 |
| 1460025 | 2020-10-06 03:44:29.461 +0000 | 425677 | 601036 |
| 1460032 | 2020-10-06 08:55:01.913 +0000 | 831919 | 601043 |
| 1460032 | 2020-10-06 04:38:13.772 +0000 | 321012 | 601043 |

 

![](https://lh4.googleusercontent.com/PHDUoL-lAdffVh3WbnM7x_h3CPyKhe3fwli6HQBvwSCEyPcjTaRHoQ7jIe3EhkIaW7uuEklrhmlD3Zt7hzRbT6ZV8Wy2hqenSk4jVLK8PxZ64l_BttQLIEF2YAmmDJu8pIRWRIX4kWuNGOYIfA)

 

- [Get Started](https://doc.sitespect.com/knowledge/get-started?hsLang=en#main-content)

    - [SiteSpect Support](https://doc.sitespect.com/knowledge/get-started?hsLang=en#sitespect-support)
    - [Overview Information](https://doc.sitespect.com/knowledge/get-started?hsLang=en#overview-information)
    - [Intro to SiteSpect](https://doc.sitespect.com/knowledge/get-started?hsLang=en#intro-to-sitespect)
    - [Account Setup](https://doc.sitespect.com/knowledge/get-started?hsLang=en#account-setup)
    - [Artificial Intelligence](https://doc.sitespect.com/knowledge/get-started?hsLang=en#artificial-intelligence)
- [Dashboard](https://doc.sitespect.com/knowledge/dashboard?hsLang=en)
- [Build](https://doc.sitespect.com/knowledge/build?hsLang=en#main-content)

    - [Setting Up a Campaign](https://doc.sitespect.com/knowledge/build?hsLang=en#setting-up-a-campaign)
    - [Create a Client-Side Campaign](https://doc.sitespect.com/knowledge/build?hsLang=en#create-a-client-side-campaign)
    - [Create a Server-Side Campaign](https://doc.sitespect.com/knowledge/build?hsLang=en#create-a-server-side-campaign)
    - [Metrics](https://doc.sitespect.com/knowledge/build?hsLang=en#metrics)
    - [Audiences](https://doc.sitespect.com/knowledge/build?hsLang=en#audiences)
    - [Triggers](https://doc.sitespect.com/knowledge/build?hsLang=en#triggers)
    - [Variations](https://doc.sitespect.com/knowledge/build?hsLang=en#variations)
    - [Traffic Management](https://doc.sitespect.com/knowledge/build?hsLang=en#traffic-management)
    - [Preview](https://doc.sitespect.com/knowledge/build?hsLang=en#preview)
    - [Factors](https://doc.sitespect.com/knowledge/build?hsLang=en#factors)
    - [Advanced Settings](https://doc.sitespect.com/knowledge/build?hsLang=en#advanced-settings)
    - [Omnichannel](https://doc.sitespect.com/knowledge/build?hsLang=en#omnichannel)
    - [Regular Expressions (Regex)](https://doc.sitespect.com/knowledge/build?hsLang=en#regular-expressions-regex)
    - [WATTS](https://doc.sitespect.com/knowledge/build?hsLang=en#watts)
    - [Recommendations](https://doc.sitespect.com/knowledge/build?hsLang=en#recommendations)
- [Monitor](https://doc.sitespect.com/knowledge/monitor?hsLang=en)
- [Analyze](https://doc.sitespect.com/knowledge/analyze?hsLang=en#main-content)

    - [Data Export and Integration](https://doc.sitespect.com/knowledge/analyze?hsLang=en#data-export-and-integration)
    - [SiteSpect Reports](https://doc.sitespect.com/knowledge/analyze?hsLang=en#sitespect-reports)
- [Site](https://doc.sitespect.com/knowledge/site?hsLang=en#main-content)

    - [Tools](https://doc.sitespect.com/knowledge/site?hsLang=en#tools)
    - [Configuration](https://doc.sitespect.com/knowledge/site?hsLang=en#configuration)
- [Developers](https://doc.sitespect.com/knowledge/developers?hsLang=en#main-content)

    - [API Reference](https://doc.sitespect.com/knowledge/developers?hsLang=en#api-reference)
    - [Code Samples](https://doc.sitespect.com/knowledge/developers?hsLang=en#code-samples)
    - [Tips & Tricks](https://doc.sitespect.com/knowledge/developers?hsLang=en#tips-tricks)
- [Mobile](https://doc.sitespect.com/knowledge/mobile?hsLang=en)
- [Implementation, Deployment, and Security](https://doc.sitespect.com/knowledge/implementation-deployment-and-security?hsLang=en#main-content)

    - [How does SiteSpect work with CDNs?](https://doc.sitespect.com/knowledge/implementation-deployment-and-security?hsLang=en#how-does-sitespect-work-with-cdns)
    - [Single Tenant Implementations](https://doc.sitespect.com/knowledge/implementation-deployment-and-security?hsLang=en#single-tenant-implementations)
    - [Security Features](https://doc.sitespect.com/knowledge/implementation-deployment-and-security?hsLang=en#security-features)
    - [Deployment and Implementation Overview](https://doc.sitespect.com/knowledge/implementation-deployment-and-security?hsLang=en#deployment-and-implementation-overview)
    - [SiteSpect Engine & Admin API](https://doc.sitespect.com/knowledge/implementation-deployment-and-security?hsLang=en#sitespect-engine-admin-api)
- [Third-Party Integration](https://doc.sitespect.com/knowledge/third-party-integration?hsLang=en#main-content)

    - [Google](https://doc.sitespect.com/knowledge/third-party-integration?hsLang=en#google)
    - [Zuko](https://doc.sitespect.com/knowledge/third-party-integration?hsLang=en#zuko)
- [Troubleshooting](https://doc.sitespect.com/knowledge/troubleshooting?hsLang=en)
- [Releases](https://doc.sitespect.com/knowledge/releases?hsLang=en#main-content)

    - [Superfresh](https://doc.sitespect.com/knowledge/releases?hsLang=en#superfresh)
- [Feedback](https://doc.sitespect.com/knowledge/feedback?hsLang=en)

- [A/B Testing](https://www.sitespect.com/testing-and-experimentation/)
- [Personalization](https://www.sitespect.com/personalization-targeting/)
- [Recommendations](https://www.sitespect.com/recommendations/)

[![Monetate-Logo-Full-Color-1](https://doc.sitespect.com/hs-fs/hubfs/Monetate-Logo-Full-Color-1.png?width=200&height=29&name=Monetate-Logo-Full-Color-1.png "Monetate-Logo-Full-Color-1")](http://monetate.com)

<https://www.facebook.com/> <https://www.twitter.com/> <https://www.instagram.com/> <https://podcasts.apple.com/> [mailto:email@email.com](mailto:email@email.com)

Copyright © 2026, Monetate