• Home
  • Blog
  • Personalizing an Umbraco website

Personalizing an Umbraco website

  • Umbraco

When an user visits your website, you want to help him as much as possible by offering the most relevant content. To do this, you can use the data the user already supplied and change, or personalize, your content accordingly. The principle of 'personalization', originally regarded as a simple marketing buzzword, has been applied by Perplex with stunning results.

During CodeGarden 2017 one of our sites featuring personalization was nominated in the category 'Best Technical Solution'. The goal of this blog is to show our thoughts about this principle as well as to try and inspire you to put your back in it and start personalizing. We will kick things off with a short look at some important concepts followed by, based on a concrete roadmap, implementing personalization.

Explicit variables

Any visitor of your site will, both consciously and unconsciously, leave behind a surprising amount of information. But is your site actually making use of this information?

Some of this data is (relatively) easy to read and Andy Butlands excellent Personalization Groups package will help provide some guidance in Umbraco for this. These variables are explicit signals from the user such as (but not limited to):

  • Location (based on the users IP-address)
  • The time of day
  • The way the user lands on your website (typing in the url directly? Via a search-engine? Linked from another website?)
  • The browser
  • The device used; mobile, tablet or desktop


Using these variables, we can personalize content for this specific user. Some possibilities include:

  • Showing a different image
  • Display different titles and/or text, or parts of the text
  • Render a different navigation like a “These pages might be relevant for you” or “Other users also browsed” menu

From a programmers perspective, this isn’t exactly rocket science of course. The variables are easy to use in your code and in Umbraco you can easily add multiple properties to your doctypes. Based on the variables, you can decide which property should be shown for which specific user. So, what’s the big rush?

Implicit personalization

The explicit variables give a decent foothold, but are also pretty static and generally don’t change after entry on the website. And this is the part where things get interesting. Because after landing on our site, we can try to nudge our user, based on his behaviour, to the content that is relevant to his interest. Examples of this include:

  • Which (types of) pages did the user visit and is there a pattern?
  • What actions did the user execute?
  • Which functionality on your site is being used by your user?
  • How many pages does he visit?

But, even if we keep track of this stuff, how do we use it to successfully implement meaningful personalization? And where do we start? Well, look no further! Here’s the roadmap we use while implementing personalization on our sites. Hopefully it will offer you a jumpstart.

In this blog we will not delve into the creation of persona’s or the discovery of the customer journey. Nevertheless keep in mind that these are some of the most important steps in making your personalization successful! Do not underestimate this and limit the amount of persona’s and phases because personalization needs to be done separately for each one.

Step 1: Persona’s and the customer journey

First things first. You need to decide for who you wish to implement personalization. A good way to structure this is by creating persona’s. What kind of visitors do I expect to visit my site and how do I wish to serve them? What are these people like? What are their goals? What would they be looking for on my site? Etc. etc. Using these persona’s, we can ‘score’ our data in step 2.

Besides persona’s, there’s also the option of differentiating between the different phases of the customer journey and including this in your content scoring. Typical customer journey phases could be: awareness, consideration, purchase, retention, advocacy. When we also use these phases we have the perfect ingredients for two-dimensional personalization.

Example: On each page we decide how relevant the page is for every persona and phase on a scale of 0 to 10. The content on our page might be very relevant for persona A (9 points), somewhat relevant for persona B (5 points) and absolutely irrelevant for persona C (0 points). So when the user visits this page, we add these points to the visitors persona scores.

Step 2: Annotate your content

Now that we have determined our input variables (both explicit and implicit) and the persona’s and phases have been added, we can finally get to work. Every input variable is assigned a score for each persona and customer journey phase. Using this, we score our pages for each persona and phase.

When the user goes to the next page, points are once again added. At some point, the users persona score for one of the persona’s will reach a threshold of for example 25 points, or it has scored 30% more points than the others. At this point, it becomes safe to assume the user belongs to that specific persona.

It is not only important in this step to correctly annotate your content, but also to write your content the right way. Remember your persona’s. The content you are writing should be specifically aimed for them!

Aside from that, it is also important to develop an algorithm that determines with enough certainty when and if a threshold has been reached. This algorithm is one of the cornerstones of your personalization efforts! It is also one of the hardest parts to get right. We advise to start small with a simple assumption and constantly making small adjustments to improve your algorithm, or to make it self-optimizing.

Step 3: Personalizing your content

Great! We finished up the scoring and can finally start with the actual personalization of the site, such as changing the content based on the active persona. The way you do this can differ between websites and will depend largely on the amount of time and effort you are willing (or able) to spend. Sure, it’s possible to personalize every image on your site, but that means uploading a new image for each persona/page combination. The same goes for text, you’d need variants for each persona on a page.

A much less intensive step is changing the navigation. For example, you could change the content offered under the item “interesting articles” based on the persona while hiding the ones this user has seen already. Since we already annotated all content in step 2, we can easily reuse this data now.

Step 3 is all about determining the kind of personalization you want to apply. Your algorithm plays an essential role in the determining of the relevancy of each page for your persona. Which pages are offered in which parts of the site? And how do you prevent the algorithm leading to self-fulfilling prophecy or a filter bubble.

Step 4: Measurement is the key to knowledge

Yes, it is a lot of fun to personalize your website, but you are not doing this just for the fun of it, are you? The goal is to be as relevant as possible for your visitors and the only way to know if you have achieved this goal is by measuring results. This can be done in different ways. You can do this on a macro-level (Am I selling more products? Or has the average order price gone up? Maybe you got more contact requests?) or on a micro-level (Visitors are looking at more pages, spending more time on the site and lower bounce percentages). The only way to determine this was caused by the personalization algorithm is by taking a visitor that was served personalized content and comparing this users conversion rate to a non-personalized user conversion rate.

We always start out with a test group and a control group when personalizing a site. The test group of say 30% of the visitors, has personalization applied. The other 70% is the control group. Visitors that belong to this group do get scores based on the persona’s and phases, but we do not personalize the site for them. This way, we gather statistics of all our visitors while at the same time we can check if there’s a significant difference in conversion between the groups. If the test group is showing higher conversion, well, congratulations! The scoring, the persona’s and the algorithm are working!

We are generally measuring and testing for two to three weeks before implementing step 5. Do make sure you have enough visitors to make your measurements representative.

"Do not skate on thin ice! You will need enough data to make sure your algorithm and measurement are correct."

Step 5: Optimizing your algorithm and content

The next step is, as always, to get even better results. The goal is optimizing the scoring on the persona's and phases, make the personalized results even more relevant, making sure the content stays in line with the persona's and having enough differentiating content for each persona. This last bit is a good foothold when writing content. Try to consider for which persona and phase you want to write content. This doesn't have to be for just a single persona of course, it could be multiple, but keep your target audience in mind.

Optimizing is one of the more enjoyable steps of the process, but also one of the most difficult. When personalizing small amounts of content (for example, relevant articles you want the user to read as well) there is a big chance you'll reach the local maximum. When this happens, it may seem like further optimization is impossible but you might very well be looking at it from an incorrect angle.

The proof of the pudding is in the eating

We have executed this roadmap multiple times and in collaboration with ZB we have successfully implemented it for one of their clients. The website in question serves large amounts of content about divorce, consisting of articles, blogs, news items and checklists. With personalization we can make sure we're offering the most relevant content to every visitor.

The website was rewarded with a nomination for "Best technical solution" by Umbraco. During the BETA-garden at CodeGarden 2017 we showcased and explained the movie below. In the video we take a quick glance at how we set up Umbraco and implemented everything we mentioned in this blog.

We are very satisfied with the results shown in our statistics. We can see a significant increase in conversion when applying personalization in comparison to the control group. We will keep investing in monitoring the collected data and improving our personalization algorithm.

"If I give you a penny, then you're a penny richer and I'm a penny poorer, but if I give you an idea, then you will have a new idea, but I'll have it too."

Start personalizing!

We hope to have given you some inspiration to tackle this subject yourself. If you would like to know more about implementing personalization in your own Umbraco-website, don't hesitate to get in contact or leave your thoughts in the comment section below!


Read more

Google PageSpeed Insights: Reaching a 100/100 score