The first part of this series discussed what personalization is (and isn't), and some of the use cases for meeting the needs of both your site visitors and your organization. This second installment discusses some important considerations when implementing personalization, including both common types of personalization and some of the considerations and potential challenges of implementing personalization. All of these lessons were learned from working with dotCMS, our open source Java CMS.
Common Types of Personalization
There are many different types of personalization that you can implement on your site. The following are several of the most commonly implemented types of personalization:
Layout and style: Display different versions of your content or site depending on how a visitor is viewing your site, such as having different versions of your site for desktop and mobile users.
User choices: Present different choices to different visitors, such as different navigation bars, menu items, or links.
Content listings: Display different lists of content to different visitors, such as different lists of products, blog articles, or news items.
Content versions: Display different versions of the same page or content to different visitors, such as different language versions, promotions, or even older versions of content for users in specific locations where newer versions have not yet been introduced.
Content details: Display different text, different formatting, different images, etc. to different users, such as changing the banner or introductory text on a page or selecting different images based on visitor type or cultural influences.
This list is presented in order from what is typically the easiest to implement to what is typically the most difficult to implement. For example, although there are exceptions, there are often more tools and platform features available to help you change the layout and style of your site for mobile users than there are to help you select and display different content within the page.
Benefits Often Scale With Effort
In addition, the benefits of personalization methods often change with the amount of effort it takes to implement those methods. For example, automatically adjusting the layout and style for mobile users is a form of personalization, but it's important to note that this personalization doesn't change the content visitors see, and thus is unlikely to result in greater conversion.
Therefore in the list above, the methods are also listed in order from those that typically provide the least benefit to those that may provide the most. Overall, the further down this list you go, the greater the potential benefits are, but also the greater the potential effort and challenges are for implementation and maintenance.
So when planning your implementation, consider what level of personalization features are required to meet your personalization goals, and consider whether your personalization needs can be met with a method higher up in this list, at least initially.
Determining Visitor Preferences
One of the key aspects of personalization is that since it's automatic, it must by definition anticipate user preferences. But how do you automatically determine visitor preferences?
One reason that user experience personalization is more common than other forms of personalization is that it's relatively easy to identify the visitor's needs; all you may need to do to identify a visitor's device type is read the user agent information from the visitor's browser. However, depending on your platform, the information needed for other personalization methods may not be so easy to get.
The following are some additional types of information about visitors that can be used to help anticipate their needs for other forms of personalization. How easy any of this information is to obtain will depend on your web development platform, including native support for these features, extensibility capabilities such as plugins and web APIs, and how much accessibility the vendor or platform gives you to libraries, APIs, and hooks via your own Java code.
- Number of previous visits to your site
- Stored user information (such as cookies, previous registration or local login information)
- Visitor's browsing habits on your site (including how granular this information is)
- Language preferences
- Geolocation and associated characteristics (e.g. country, local language, time zone)
- User Agent or device information
- Referring site or URL
- Browser configuration and settings
User Type, Based On:
- Explicit user choices (e.g. customization selections)
- User source (e.g. referring URL, URL used to first reach your site, etc.)
- Visitor characteristics (e.g. geolocation, email domain, etc.)
- A Persona you assign (via conditions you specify and detect)
Implementing any new feature on your site can obviously bring with it challenges, but personalization sometimes has a reputation of being a very large meal to try and swallow. This reputation may be partially deserved, since personalization can cover a lot of ground and when fully implemented could potentially touch almost every area of your site. Here are a few areas to consider to consider when evaluating the amount of effort and potential challenges you may face when implementing personalization.
If you have a site with a large number of visitors, personalization features can be a significant challenge to scale properly. This includes both how well the implementation scales in our web architecture, and whether it's possible to build up personalization features over time rather than biting off a huge chunk of work just to get started.
There are many questions that need to be addressed to ensure that personalization will scale properly on your architecture as the number of users increases:
- Do our servers have enough memory and CPU cycles to handle it — and is the financial cost of that scaling reasonable?
- How much information is maintained on the server side and how much on the client side?
- Will our database and architecture scale enough to maintain personalization information for millions of users?
- Does storing the necessary information to implement personalization conform to our privacy policies?
When we talk about scalability, the first thing we usually think about is execution scalability. This is undoubtedly important, but there's another aspect of scalability that we don't talk about as often but is especially important in Agile development, and that is how easy is it to begin implementing something in a small way, and then increase the level and sophistication of our efforts over time? Simply put, how easy is it to get our feet wet?
If we have to create a complex infrastructure or detailed user profiles in order to begin to get something useful out of our personalization efforts, that's a significant hurdle that may make it difficult to fit personalization efforts into a fast-moving development schedule - or maybe to even get started. But if we can make a few small changes to start bearing some fruit, and then make continual small step changes to improve those efforts, that's an easier path to take, both to justify the efforts to the organization and to actually implement within a constantly changing business environment.
SEO and Site Search
Implementation becomes even more interesting when SEO and site search capabilities are introduced. If each visitor to your site sees a different version of your content, then when a search engine crawls your site, what version of content does it see? When you index your site, what content does the indexing engine see? When a user performs a search, is the search personalized — and should it be?
These are important questions to answer to ensure your personalization efforts don't interfere with your SEO efforts or hide information that a user might want or need. And it's equally as important to understand how much effort it requires to make sure that you serve the content you want when your site is crawled by a robot or indexer. Can your platform detect when your site is being crawled? Does your platform allow you to specify what content should be displayed when each different type of robot or process crawls your site?