This article will demonstrate a rather useful way to use the Tealium CDP’s Tally data type to track user behavior and automatically calculate a user’s affinity (or favorite) in order to better nurture the rest of their journey, even while they remain completely anonymous. Positively influencing anonymous customer journeys is one of the common problems people look to their CDP to solve, and I’ve found the Tally attribute type in Tealium to be a fantastic tool to achieve just that.

What Is The Tally Attribute?

The Tally attribute is the most unique of all the data types offered by Tealium because it has a feature that none of the other attributes have called the “favorite”. When you create a new Tally attribute, a new “favorite” attribute is created and linked to the Tally automatically. This favorite will return the string value of the Tally with the most entries. A Tally is essentially a JSON store of key/value pairs where the key is the name of the affinity entry and the value is a number value associated to it. For all our sample use-cases in this post, you can think of the number value as a ranking system. Below is a grid representation of the type of information that can be contained inside a Tally.

To beef up your understanding of Tallys and discover all the enrichment options that come with them, check out the Tealium documentation.

Getting Started

Set Up Your Data Layer

For your data layer, the first thing you’ll want to do is to establish the variables needed for your affinity tracking within Tealium TiQ if they do not already exist. For example, if you’re going to be tracking product affinity, you’ll want to ensure you have an e-commerce bundle of attributes installed so that you can use product name and if you’re going to be tracking category affinity, you’ll need a string attribute for the category name etc. Now you need to set up your UDO (universal data object) on your web property so you have all of your dynamic data ready to provide them to Tealium. The best way to do this is to define your UDO using Javascript to pass in all of your page and event details through a JSON-formatted object (example below). For more information about the syntax and details surrounding this, check out this page.

Create your AudienceStream Tally attribute

When you create your Tally attribute, the first thing you’ll need to decide is if the affinity score you’re interested in creating pertains to the visit or the visitor. If you’re not sure, ask yourself this question, “do you want your user behavior to reset every time they visit your website (each session) or not?”. Visit-level Tally attributes will start over with each visit (session) while Visitor-level Tally’s will not.

For the Tally type, I typically leave it as decimal (default) even though I only plan on ever using integers. Incrementing/decrementing by integers when the type is set to decimal work just fine but not the other way around. Leaving it default makes things more flexible for whatever the future holds.

Add Enrichments To Your New Tally Attribute

Now comes the time to tell your new Tally attribute when to act.  Below is a simple example, that tells our Tally to use the Industry Name as the key and increment it’s value by 1 every time any event comes from a page within the “industry” section but is not the industry section page itself. All those subpages will have the industry name available from the data layer we established earlier.

Check Your Tally (favorite)

The Tally attribute you just created and configured is doing the heavy lifting, but remember that the act of creating a Tally attribute in Tealium automatically created a Tally (favorite) attribute as well. When used, the Tally (favorite) will return the name, or key, of the item with the highest value. It’s essentially an incredibly useful calculated helper to show who the current leader is. It’s important to note that when there are ties, the Tally (favorite) will return the first, or earliest, item with the highest value.

You can check your Tally by publishing your changes and using Trace to report on your attribute values as you meet conditions that should be manipulating your affinity score. The Tally itself will show up under the “Tallies” dropdown, of course, but your Tally (favorite) will be found under “Strings”.

A Few Behavior Tracking Use-Cases

Let’s dive into a few relatable use-cases so you can start to see how Tallys can help you achieve one of many common digital marketing goals for a variety of different sectors.

Deliver personalized messaging and offers

Sector : Home services

Objective : Increase website conversions by curating special offers between plumbing and HVAC service lines.

Details : Use landing pages and session pageviews to determine which service line is of interest to drive relevant offers.

Improve your remarketing strategy

Sector : SaaS

Objective: Deliver personalized remarketing ads to wildly different verticals over various social media channels at a low CPM.

Details : Use vertical affinity to drive visitors into segments that can be uniformly synced across all your integrated social media channels for both broad and specific remarketing efforts. You will also want to leverage Tealium’s ability to suppress marketing efforts when certain conditions are met to remove visitors from those audiences to lower your overall CPM.

Improve your e-commerce experience

Sector : Professional Sports

Objective: Improve e-commerce conversion rate and average order value

Details : By tracking your visitors product and category affinity, you can better influence the behavior of your users by giving them relevant suggestions and offers, and even influence your cross-sell and upsell items.


Tealium provides you with the tools necessary to achieve your business goals by solving common data problems, enabling powerful integrations, and diagnosing/overcoming your marketing limitations. But, it’s up to you to execute to that end. With such a robust CDP where it seems like the sky is the limit, it can often be difficult to know where to start. The best thing about the Tally is that it doesn’t hinge on a complex strategy that takes a lot of effort to implement and test. So go after your low-hanging-fruit, execute simple techniques like the ones mentioned in this article to get some early, quick wins and iterate and expand from there. Crawl before you walk, walk before you run.