skip to Main Content

One of the Persoo pillars is the “affinity to value” value.


Affinity expresses, how much is the visitor interacting with the specific values. If the affinity for the field “Color” contains values {“blue”: 17, “green”: 5, “white”: 2}, then it clearly states, that the visitor was interacting with “blue” the most). The profile contains two fields in the affinity section, “histogram” (= the affinity weight) and “lastAccess” (= timestamp of the last interaction with the value):

  • Weight is given by each interaction with that value, whether it is using it in a filter (color=green) or seeing a product with that value.
  • LastAccess is the timestamp of the last moment the visitor interacted with the given value.
  • shortTerm, longTerm differ only with the speed of decrease of the values. Short term Affinity will be generally relevant only to the last few sessions done in the last few days.

Note: The Weight value is decreasing with time. This is done to reflect the fact, that what the visitor was interested today is more important than what he was interested a month ago.

Important note: If you want to work with those statistics regularly, remember that if you export the profiles, these Affinities are not updated anymore. Therefore a month-old export will not be reliable regarding the current visitor preferences.

Basic object types, for which Persoo calculates Affinity by default:

  • product – product ID
  • productType – e.g. “tv” regardless if it’s “3D tv”, “UHD tv” or other.
  • category – category ID
  • section – ID of the category in the first level of Hierarchy
  • subSection – ID of the category in the second level of Hierarchy
  • subSubSection – ID of the category in the third level of Hierarchy
  • brand – product brand
  • pathname – part of URL path without parameters
  • hostname – the domain part of URL, e.g.
  • priceLevel – price level of the products viewed by the visitor
  • and more, such as marketingChannel, dayInWeek, dayPart, hour,…

These Affinities can be found in the db.* part of the Visitor Profile.

  • affinityTo<value> (e.g.. db.affinityToProduct, db.affinityToBrand,…)
    • _impression is a separate weight for products that were displayed in a specific Scenario
    • It’s possible to record Affinity for custom values by adding them in the Settings – Event processing – Preferences to

For calculating affinities for custom variables, add the desired field name in the Settings – Debugger – eventProcessing – preferencesToFields.

How to influence Affinity increase at Events?

Any Event containing field, for which Affinity is calculated, increases Affinity by 1. If you want to change this to make some events more important, send an event like this:

This increases the Affinity for Brand: Adidas and categoryID: t-shirts by 3. Other Affinities remain unchanged.

If you want this changed only through Persoo Administration, you can adjust it in Settings – Event processing – Preprocessing javascript.


Preferences are calculated from Affinities. There can be a max of 3 values in Preferences. The Affinity to a value has to be significantly higher than to other values. In the first example, the Preference will be created, whereas in the other, it will not:

affinity example

Example of a profile with preferences:


Back To Top
×Close search