Dynamic Yield affinity-based personalization enables you to translate user interactions with your products (product views, purchases) and engagement into simple preference scores to your product catalog attributes. This score can help you present product recommendations and promotions based on user preferences. For example, recommend pink products to users whose favorite color is pink, or target the new shoe collection promotion to users who are interested in shoes.
Inferred vs. explicit affinity
Dynamic Yield creates and updates every user's affinity profile in real time, based on historical engagement signals that are collected and analyzed, as well as real-time behavior and preferences exhibited during the current session. While the profile calculations rely primarily on the user's exhibited engagement patterns and behavior (product and category views, cart and wishlist additions, purchases, and so on), the profile can also be informed by personal information that is volunteered explicitly by each user during online experiences (zero-party data). This includes filling out surveys and questionnaires, subscribing to loyalty clubs, or simply expressing preferences by hitting a "like" button. Because these represent high-certainty affinity information that can be relied on for personalization, Dynamic Yield offers out-of-the-box templates tailored especially for the collection of this data, like the Affinity Onboarding Questionnaire and Product Finder.
Selecting attributes to add to your user affinity profile
- Click Assets in the top navigation and click Data Feeds.
- Click the View Feed icon in the Product Feed row.
- Select the attributes from the Affinity Profile Attributes dropdown, and then click Save.
Pro tip: Best practices
While your product feed includes many attributes, we recommend that you focus on up to 4 attributes that best characterize your users. That said, we do support up to 10 attributes. A good rule of thumb: If there are more than 50 different values for this attribute, it's probably not a good attribute to use.
How it works
Step 1: Collection
For each engagement type, Dynamic Yield collects all the product attribute values that the user interacted with. We start collecting product interaction from the first product or category pageview, add to cart, or purchase. In the context of a single visitor, we can imagine the following table:
Attribute: |
Color |
Style |
Gender |
Price Range |
||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Value: |
green |
red |
blue |
T |
tank |
cami |
Men |
Women |
Boys |
Girls |
<$50 |
>$50 |
Product view |
4 |
6 |
2 |
12 |
0 |
0 |
12 |
0 |
0 |
0 |
12 |
0 |
Add to cart |
1 |
1 |
0 |
2 |
0 |
0 |
2 |
0 |
0 |
0 |
2 |
0 |
Purchase |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
This table describes the following session: A visitor generated 4 pageviews in which the product color was green, 6 in which the product was red, and 2 that were blue. All viewed items were men's T-shirts priced under $50. The user added two items to the cart (red and green T-shirts) but ultimately bought a single red T-shirt.
Note: A limited set of product attributes is used in affinity calculations to ensure that the calculations are performed efficiently. You can view the attributes included in the calculation at the top of your product feed page. To modify the list of attributes, speak to your Customer Success Manager.
Step 2: Calculating
The score sums up the total engagements for each value, weighted by engagement type and engagement recency.
Engagement type weight
Each interaction type (such as product view or add to wishlist) receives a coefficient determined by an assumed "level of intent" of that interaction. For example, a purchase receives more weight than an add-to-cart, which receives more weight than a product view. When calculating the attribute value score, the number of occurrences of each engagement type is multiplied by the engagement type coefficient.
∑ engagement type weight * attribute value count = score
You can adjust the automatically calculated weight of the coefficient to meet your particular business needs. If you need to adjust the weights of these interactions, speak to your Customer Success Manager.
Let’s assume the following coefficients: Purchase weight is 4, add to cart weight is 2, and product view weight is 1. The total score for attribute value “color:red” is (1x6)+(2x1)+(4x1) = 12
Weight |
Color |
|||
---|---|---|---|---|
green |
red |
blue |
||
Product view |
1 |
4 |
6 |
2 |
Add to cart |
2 |
1 |
1 |
0 |
Purchase |
4 |
0 |
1 |
0 |
Score |
6 |
12 |
2 |
Engagement recency weight
To identify user intent in real time as well as preference changes over time, each interaction receives a recency coefficient, to favor recent activity over historical activity. There are three supported recency periods:
- Real-time: The last 48 hours, including the current browsing session
- Recent history: The last 30 days
- Old history: The last 12 months
When calculating an attribute value score, the score is multiplied by the recency weight too.
∑ recency weight (engagement type weight x attribute value count) = score
Let’s assume that the user from our previous example comes back to the site 2 weeks later and purchases the green T-shirt he abandoned in the cart last time. Assuming that the recency coefficients are 8 for real-time interaction and 2 for recent interactions, the calculation of a total score for the color green is now: 2(1x4)+2(2x1)+2(4x0) + 8(4x1)= 44
Attribute: |
Color |
||||
---|---|---|---|---|---|
Recency |
Value: |
Weight: |
green |
red |
blue |
Recent history (weight = 2) |
Product view |
1 |
4 |
6 |
2 |
Add to cart |
2 |
1 |
1 |
0 |
|
Purchase |
4 |
0 |
1 |
0 |
|
Score |
6×2=12 |
12×2=24 |
2×2=4 |
||
Real-time (weight = 8) |
Purchase |
4 |
1 |
0 |
0 |
Score |
4×8=32 |
0 |
0 |
||
Total Score |
44 |
24 |
4 |
Engagement-type incidence normalization
Every additional add-to-cart and purchase event done after a pageview is also normalized based on its incidence in the section. This is done by multiplying the event by the ratio of that engagement type compared to the number of pages viewed on the website. The reasoning is to properly weigh based on how many of the events are on the site. For example, fashion sites have many add-to-cart events, while a high-end furniture store has fewer; so an add-to-cart on the former has lower significance compared to the latter. In other words, the goal is to consider the interaction type rarity (compared to pageviews). Each affinity score is then multiplied by a relevant incidence factor.
Continuing the same example, assuming there were 100 pageviews, 20 additions to the cart, and 5 purchase events, the total score is changed:
Recency |
Engagement |
Weight | Green |
Incidence factor |
Final Score |
---|---|---|---|---|---|
Recent history (weight = 2) |
Product view |
1 | 4 |
1 |
1*4*1=4 |
Add to cart |
2 | 1 |
100/20=5 |
2*1*5=10 | |
Purchase |
4 | 0 |
100/5=20 |
4**0*20=0 | |
Score |
|
14*2=28 | |||
Real-time (weight = 8) |
Purchase |
4 | 1 |
100/5=20 |
4*1*20=80 |
Score |
|
80*8=640 | |||
Total Score |
|
|
640 |
Note:
- A product view always has an incidence factor of 1.
- The section's statistics are calculated based on a 1-year period.
- For all periods, the same metrics are used to calculate the incidence factor (as in the example).
For users that are identified on multiple devices, the affinity profile is calculated based on cross-device behavior.
How can you leverage user affinity?
The affinity profile of a user can be used in several ways:
- Recommendations: a recommendation algorithm, that allows you to recommend products according to each user's past behavior. For example, if the user purchased a lot of black shirts - the algorithm will recommend her more black shirts.
- Affinity allocation: Target users by what you know they like, based on their affinity profile, in a process more precise than rule-based targeting.
- Audiences: Affinity-based audiences enable you to target users with a strong affinity to a specific value of a specific attribute (for example, a high affinity to black shoes).
- Retrieve user affinity data via API: Use Profile Anywhere to get affinity data generated by Dynamic Yield; use it to offer users enhanced personalized experiences across all your touchpoints, online and offline.