How to Use Adobe Target’s Category Affinity for Website Personalization

July 5, 2018

Personalization is an important competitive play among retailers. 34% of US online adults say they prefer to shop with retailers who use personal information to improve their shopping experience.

At Orvis, we use Adobe Target’s Category Affinity (also known as “catfinity”) to set up a method for categorizing users based on their preferences. Our marketers then personalize experiences based on those categories.

In this post I’m going to show how a developer can set up category affinity in their Adobe Target implementation, and then I’ll show the basic steps for how marketers can take advantage of personalization.

Category Affinity for Developers

Adobe Target tracks your users as they move through your site for the sake of optimization and personalization. Developers can set up category affinity to capitalize on those interactions, based on catfinity’s basic algorithm.

The Catfinity Algorithm

The catfinity algorithm is simple but effective. As a user navigates through your site, Adobe Target and your tagging methods (such as with Adobe Launch) track what your user is interested in. In the process, category affinity ranks the user’s preferences based on what he or she has clicked. Here is the algorithm itself:

  • 10 points for the first view
  • 5 points for every view after
  • At end of session divide all values by 2

Pretty simple, right? The basic logic of this algorithm is that the first click is worth the most. If I click on men’s gear first, it’s going to assume that above all, I prefer men’s gear because I’ve made a declaration of intent, whether I’ve Google-deep-linked to the site, or I’ve come to the site and clicked on a category. That first demonstration of intent shows what I’m really interested in, at least for now, so catfinity will assign a high point value for that first category, and then assign a low point value for everything after.

As a user finishes their session, Target takes all those values and halves them. This is so that in the next session there will still be historical data to use for personalization when the user initiates her next session, but the user can override that historical data with more current data. So if I am shopping for a gift for my wife, I’m not going to be stuck in the women’s bucket for long when I come back to shop for myself.

Category Affinity Demo

Here is a wonderful demo of category affinity that I can claim absolutely zero credit for. It’s a demo by someone called “Daniel” on and it demonstrates how catfinity works. (UPDATE: The original fruit demo no longer exists, but here is an alternate one you can try.)

Clicking on each of these fruits represents a user navigating through an actual site’s catalog based on their preferences, such as men’s, women’s, dogs, hunting, etc. Whatever they click on first will be their first intent. Then as they click on other items, category affinity responds to change their preferences. The general rule is that the highest points and the most recent win out.

As a user lets you know her preferences, you can personalize based on those preferences. Is a user’s favorite category orange? Then it might make sense to market your latest tangerines to them.

As I already suggested, the point values of the catfinity algorithm persist over time. They persist using the marketing cloud ID, so that if I ever return to this website, it will remember my preferences.

Tagging for Category Affinity

So how do you go about tagging your site to make this happen? We use a couple different methods—one for a product page and one for a category page.

Pushing categories into the user profile for a product page

With category affinity there are multiple ways you can push the user’s preferences up to the user profile, as you can see in Adobe’ category affinity documentation:

You can…record category information by passing it as the mbox parameter user.categoryId in any mbox (including a nested mbox), as a URL parameter user.categoryId, or in Target page parameters with a global mbox.

At Orvis, we take advantage of these multiple ways to push preferences to the user profile to categorize users on multiple levels. We categorize users first based on their least specific category (like a general directory, e.g. men’s, women’s, etc.) as well as their most specific (e.g. men’s bootcut jeans).

Having different levels of specificity is beneficial for marketing purposes. You could run one of your most generic experiences as your first level, and then one of your most specific experiences as your second level.

So how do we do this categorization? By pushing catfinity values into the user profile and simultaneously into the product in our recommendation catalog so that Adobe knows which products match preferences.

We start with a script that creates a standard mbox and then pushes makeParams (our parameters) into that mbox. Among those parameters, we’re pushing:

  1. The least specific category into the user profile via profile.categoryId
  2. A list of all categories that apply to the product via the entity.categoryId

profile.categoryId is an example of a profile script that resolves itself on the server side and associates our least specific category with the user. entity.categoryId is pushing these categories into the product itself. We can then in an audience do a simple string compare to see if a profile-favored category belongs to a product. Easy!

As the values are pushed up, category affinity evaluates their frequency and recency to determine what categories the user is most interested in.

What will these values look like in the actual data element? For the least specific, you will only have one category, but in the most specific, multiple categories.

Least specific:

Most specific:

(We use a number-based system to delineate categories. In this case, 885 refers to the “men’s” directory.”)

Pushing categories into the user profile on a category page

The previous method is how I push categories on a product page. For category pages the method is similar: for the profile we use the least specific category once more. The difference is on what I push into the entity.  Bear in mind, we are not on a specific product, but a page.  Catfinity is still tracking these though—although I don’t know where they host that data, as it doesn’t apply to a specific product. So I am tagging a page with the most specific category that applies (see above image).

In this case, all you need to do is set global mbox parameters in DTM’s Adobe Target settings with the same two methods mentioned above: entity.categoryId and user.categoryId (analogous with profile.categoryId), we use user. in the inbuilt target tool.

Whether we push catfinity using the target tool as below or via script, the end result is the same. Each time, we are tagging profiles and entities to push user preferences and log data into products.

As a point of reference, here is the code I use to build out the data element for the most specific categories:

You may have a different way of creating this element, but the above has worked well for me.

Final reminder cheat sheet:

Product Page:

  • Push into entity.categoryId all categories (comma separated) that apply to a product.
  • Push into profile.categoryId (or user.categoryId) the least specific category.

Category Page:

  • Push into entity.categoryId the most specific category that applies to the page.
  • Push into profile.categoryId (or user.categoryId) the least specific category.

Category Affinity for Marketers

Now it’s marketing’s turn. Once the developer has set up Target to pass these values into the user profile, marketers can personalize the website experience for these users.

Setup is simple:

  1. Create or edit an audience.
  2. Select Category Affinity as the basis on which you want to segment an audience.
  3. Select the affinity level at which you want to target (first, second, third, etc.)
  4. Set the filter (e.g. contains, does not contain, etc.)
  5. Set the filter value (e.g. Men’s, 885, etc.)

From there, you just need to assign experiences to audiences, then set the order in which visitors will see those experiences based on their user profile parameters. And voila! Personalization.

Category Affinity and Beyond

Setting up catfinity is not that hard—within 30 minutes you could have a basic catfinity implementation up and running that you can expand on more and more. And even if you’re not an eCommerce site, there’s a lot of benefit to having personalized experiences on your site. Try building it out and see what kind of difference it makes for your visitors.

See how ObservePoint can help you dial in your digital analytics practice by scheduling a demo.

Previous Article
3 Reasons Why You Should Do a Website Audit Today
3 Reasons Why You Should Do a Website Audit Today

Considering conducting a website audit? Here are three reasons (and some recommendations) for why you shoul...

Next Article
Adobe Analytics Audit: 6 Tips to Review Traffic Sources and Site Activity
Adobe Analytics Audit: 6 Tips to Review Traffic Sources and Site Activity

Are you using your enterprise-grade analytics solution with the maturity of an analytics master? Learn how ...

Get a free 14-day trial with ObservePoint

Start Your Trial