Document Properties
Last Modified
Added to KB
Public Access
Doc Type
Guidelines, Concepts & Cookbooks
ICM 7.10
Concept - Recommendation

Table of Contents

Product Version


Product To Version



Recommendations are products that are presented as an additional offer. They may occur on any page in an online store. You often find them on product (detail) pages and on the shopping cart page. Recommendations are often located at the bottom of the page and are introduced with headings like "You might also be interested in", "Customers Who Bought This Item Also Bought" or "What Other Items Do Customers Buy After Viewing This Item?". These kinds of recommendations are based on product(s)-to-product(s) recommendations. This means, the user gets recommendations for products in relation to one or more other products. There are some other recommendation options, like search recommendations (based on a search term), category recommendations (category-to-products) and recommendations without direct input parameter, e.g. "Top Sellers".

There are two ways to provide recommendations for products:

  • Static links:
    This means that a recommendation product is directly linked to another product. If one of the products is viewed, the recommendation product will be displayed. This is useful if you want to recommend, e.g., a mouse, a keyboard and a monitor for every notebook you have in the store. These kinds of recommendations are handled with product and category links within the Intershop 7 system. They are not in the scope of this documentation.
  • Dynamic links:
    The second way is used by bigger online stores like Amazon, HP, eBay and so on. In this case, the recommended products are determined dynamically based on the behavior of users in the online store. This can be achieved by using a recommendation engine. This approach is explained in detail below.

To provide recommendations that are based on the user behavior, recommendation engines observe all actions in an online shop (like product A viewed, product B ordered etc.) and store this information to compute relevant recommendation products at the end. For this observation, recommendation engines use events that are provided by Business Tracking events. Every engine should have a TrackingEventHandler that is registered to one or more events in which the engine is interested. Different engines may use different events. Requests are used to fetch recommended products from the recommendation engine. In most cases, one or more products are used as input parameter(s), and the output is a list of recommended products that are computed from the input.

Both artifacts are described in detail in the following sections.



There are Java interfaces for all events that are supported. An implementation of a recommendation engine has to implement Java classes for these events that implement these event interfaces. These event classes normally extend an abstract superclass that contains some common logic for this recommendation engine implementation. If an event class is created for a concrete recommendation engine implementation, this event can be selected in the back office of the engine.

Business Tracking

As mentioned before, the recommendation component uses events from the business tracking to evaluate the storefront behavior.

In this context, two different topics have to be considered:

  • First, the collection and evaluation of storefront events with a TrackingEventHandler.
  • Second, an integration of tracking related data is possible through TrackingSFI(Tracking Storefront integration).

Both aspects are explained below.


The adapter cartridge for a recommendation engine should provide an implementation of a TrackingEventHandler that is registered to receive storefront events. The TrackingEventHandler evaluates those events, and depending on the type of event it stores additional information in a data container to maintain information about the event. The events themselves are lost after being consumed. E.g., if a ProductAddToBasket event is received, the handler stores the product ID (SKU) and the quantity in this container. The data container is provided to the storefront components via TrackingSFI interface.

More information about TrackingEventHandlers can be found in the section TrackingEventHandler of Concept - Business Tracking and in the Cookbook - Business Tracking.


The TrackingSFI(long name: TrackingStorefrontIntegration) interface allows all registered services to integrate a header and a footer template into the DefaultPageStructure template, which is the base template for all pages. Both templates can be provided by the TrackingSFI implementation using the fixed names "MainFrameHeader" and "MainFrameFooter" as template IDs. The header template is normally used to add your JavaScript code or includes at the end of the HTML header section. The footer template usually contains the code to send the events to the recommendation engine.



In accordance to event interfaces, there are also Java interfaces for all requests that are supported. An implementation of a recommendation engine has to define Java classes for all requests that are declared in the implemented request interfaces. These request classes normally extend the same abstract superclass as do event classes. This superclass may contain some common logic for this recommendation engine implementation. If a request class is created for a specific recommendation engine implementation, this request can be selected in the back office of the engine.

Storefront Integration/Components

As mentioned above, the TrackingSFI interface is used for events to integrate the event templates into the storefront. This way only works with events; the integration of requests works completely different. Requests need CMS components that include the request templates.

At the moment, there are two default CMS components for recommendations regarding product-to-products-recommendations:

  • used on the product detail page, and
  • used on the shopping basket/cart page.

To use these components, they have to be added to the storefront pages. For information about doing so, see the Recipe: Including Recommendation Components In the Storefront in the Cookbook - Recommendation.


The information provided in the Knowledge Base may not be applicable to all systems and situations. Intershop Communications will not be liable to any party for any direct or indirect damages resulting from the use of the Customer Support section of the Intershop Corporate Web site, including, without limitation, any lost profits, business interruption, loss of programs or other data on your information handling system.

Customer Support
Knowledge Base
Product Resources