Personalization love story: Taxonomy and Sitecore xDB

Over the past year, I’ve upgraded to Sitecore 8.1 and started to use Sitecore’s xDB to capture data on my websites. I also rolled out xDB functionality such as Profile Cards, Pattern Cards, etc. to help identify the type of visitors that are on my website. These early steps were all leading up to personalization on the websites. My initial attempts were to display trending content within the homepage of the website. This was well received as it surfaced content that other users were interested in. However, a lot of times users would come in from either a search engine or email directly to content within the site. This means they never see the latest trending content. The problem was trying to get these users engaged with our website. The solution was to create a personalization love story by marrying taxonomy of the content with the amazing knowledge of the xDB. Adding a “You may also like…” rendering to all content pages would reach those visitors!

After giving it some careful consideration, I decided to create a TrendingContentManager which would query Sitecore’s xDB hourly to get the top 100 trending content items on the website. This concept was key because having the top 100 trending content items cached allowed for the rendering to deliver amazing content to the user without any major performance hit. The rendering has an average rendering time of under 10 milliseconds! (NOTE: Initialization of TrendingContentManager’s data takes less than 1 second – and that hit is once per hour)

There were 3 factors in play for generating the items to populate within the list: xDB Pageviews, number of matching taxonomy tags, and the user pattern. First thing is to loop through all of the trending content items and calculate a score for the content. All content has associated taxonomy tags assigned to them so the idea was to count the total number of matching tags and apply a weight to it. More tag matches provides a higher score as the content is a closer match to what is being viewed. Ideally #1 trending content should score a higher value than #100 so I added the number of pageviews and applied a weight to it. The final factor was the user pattern. User patterns map to taxonomy tags in my solution so the idea was to also factor in the pattern of the user viewing the content. Example: Reading international content as a health researcher – you would see international health scored higher than say someone reading international content that is classified as an education researcher.


The key to the formula was determining the proper weighting of the factors as you want to find that sweet spot that provides the best content. I had to revisit the formula to allow for certain content templates to receive an adjusted score such as staff bios. I accounted for the fact that not all tags should be included in the formula so there are mechanisms to configure everything. So far I’ve seen only about a 1% increase in pageviews as a result of the new rendering. However that 1% is largely from organic search and email campaigns, so I view it as a positive that users who may have bounced after reading one content item have now been engaged to view additional content. NOTE: 1% is just the number that were from a click in the rendering.

The key point to take away is: start utilizing your data! Sitecore’s xDB gives you great insight into the website’s users. Think about what data points are critical to your business and start to create your personalization love story by marrying your data points!

See it for yourself at Mathematica Policy Research

Comments