Implement RichRelevance and improve recommendation performance

Since you’ve landed on this page, you’re probably either researching how to implement RichRelevance or looking to know more about the system. We strongly recommend RichRelevance; it’s quite easy to implement, especially when compared with other systems (see section below about difficulty).

However, it’s important to remember that implementing RichRelevance is still a very technical task. Your programmers should have a deep understanding of the databases in your system.

Luckily for you, we’ve helped companies implement RichRelevance, and we can help you with clean, hassle-free implementation as well. Contact us to get started!

Can the marketing department implement RichRelevance themselves?

Absolutely not.

A recommendation system is not easy to implement, and should not be treated as such.

RichRelevance is no different. An implementation of RichRelevance is not just “inserting some scripts” (no matter what the sales person said).

A clean implementation requires a good programmer who knows:

  • The database and how to create queries for it efficiently
  • How to make a backend cron job that imports data
  • Javascript / AJAX
  • Full stack knowledge of the web platform

This usually means more than one person is required to do the implementation. This can either be done internally, or by using a company like us (contact us if interested – we have the necessary experience).

API based recommendations vs. Front end recommendations

From this point, the guide becomes technical. That means if you’re a “marketing person”, you should either contact us so we can help, or send it to a developer.

You should know that the details of an implementation do matter, especially the way things are imported. The result may not be the same if people without RichRelevance experience work on it.

One question we frequently hear on the implementation is: should we implement RichRelevance in the backend (i.e. through a REST api) or directly in the frontend?

RichRelevance itself strongly suggests using the JavaScript solution. This works for them because it makes it really easy to debug, and much simpler to modify on the site.

The IT departments usually don’t like this method, because:

  • RichRelevance is not abstracted into a recommendation layer (unless it’s wrapped in a recommendation.js file). This hardcodes RichRelevance to a great degree.
  • It cannot be serviced through an API to other devices.
  • There is less control over the implementation.

Now, this isn’t an easy decision.

Our experience with RichRelevance is that they don’t assist you with implementation if you go for the backend solution. Their documentation and help is fixed on the frontend solution. A backend implementation can be done, but it’s difficult. It takes extra time, has poor support and is generally not recommended.

Our recommendation is clearly a frontend implementation, wrapped into a custom JavaScript library.

The steps of a RichRelevance implementation

To implement RichRelevance, you need the following parts:

  1. A daily cron job that does the import. This has four files:
    • Product file
    • Category file
    • Product in category file (i.e. which products are in which categories)
    • Product attribution (i.e. extra data about products – all the interesting custom data)
  2. Script references on the website
  3. Custom JavaScript code that handles the recommendations

Steps (1) and (3) are the most time-consuming. The actual time taken is extremely dependent on the company. Some are quick (less than 100 hours for a project) and some take more time than that.

The RichRelevance importer

You need to feed data to RichRelevance before you can use it. This is done using a daily job. As described before, this consists of 4 files which you zip together and upload to their FTP.

We usually suggest the following:

  • Make a console job
  • Make a service project that fetches data from the database (use paging to avoid out-of-memory exceptions)
    • Put this into a text file
    • Do this for all 4 files
    • ZIP them together
    • Upload to the FTP
  • Make a unit test project
  • Deploy the project to an internal server

Showing RichRelevance recommendations: a key decision

When showing recommendations, there is a key decision you have to make.

The way RichRelevance works in the frontend, is through making a request to their service. This returns a JSON array of products. This JSON array has information such as product ID, name, price and so forth.

Now you can decide either to:

  1. Trust the information and render that in a view
  2. Fetch the product from your API/database, and show your own data

Although (1) is faster, (2) is more safe.

It’s important to remember that the importer might be 24 hours old. That means if you change a product cover, price or name, it could take up to 24 hours before the recommendation is updated. This is also a problem if you have unique pricing (subscription customers, coupons or simply unique pricing per customer).

Therefore, we suggest that when you get the JSON array from RichRelevance, you call your own internal API / database, to show the correct data.

However, if you have a really simple system and can live with this, (1) is still faster.

Internal links vs RichRelevance links

The way RichRelevance tracking works is that they respond to the JSON array. This JSON array has a link, which is supposed to be the link of the recommendation.

So if RichRelevance returns 6 products, it has 6 different URLs. If you click one of these URLs, you will be forwarded to the product through a custom RichRelevance link.

This is fine for most customers, but some have concerns about SEO and the branding of showing external links.

In these cases, you have to make an onClick event on the links. Then make an AJAX call your backend, which will then call RichRelevance on the provided RichRelevance URL. This works well for tracking, if you want to host your own URLs instead of using the RichRelevance URLs.

Get more out of RichRelevance

Implementing the basic RichRelevance service gives pretty good recommendations. However, it’s possible to get much more out of RichRelevance.

The first step of enhancing RichRelevance is the attribution feed. With this, you can upload all the data you have about your products. Interesting examples I’ve seen include:

  • Brands
  • Formats (colours, sizes, weight)
  • Profit margins
  • Days to ship

This can lead to some interesting banners with potentially high conversion rates:

  • Banners with products that have a high profit margin only
  • Banners that can be shipped same day
  • Banners with products in the same color only

After implementing the attribution feed, it’s time to get familiar with the dashboard. The great thing about the RichRelevance dashboard is that the marketing department can play around with all the settings. You have to experiment to learn what works for your company!

RichRelevance in newsletters

It’s also possible to get RichRelevance in your newsletter.

This is how it works:

  1. RichRelevance designs the actual look of the products. You cannot do this yourself, so you’ll be stuck with RichRelevance doing the actual design of the recommendations.
  2. You make an image map which basically shows an image from RichRelevance, with a specific link tag that leads to RichRelevance.
  3. Recommendations are cached.

The links you have in newsletters have a long list of variables (get their documentation), but to me the interesting things are:

  • Campaign name: the unique ID of this particular email
  • Date: the date the newsletter is sent
  • UserID: this has to match the user ID you send on every page load in the normal RichRelevance script. By matching it, RichRelevance gives personal recommendations.

A Conclusion on RichRelevance

RichRelevance is a great tool, with a great dashboard for marketing departments.

In addition, it’s also quite simple to implement. However, it DOES require good programmers who understand the technical documentation behind RichRelevance.

We can help with the implementation, and we look forward to working together with you.

My thoughts on video