Adobe Analytics : Understanding List Variables
List Variable - Adobe Analytics

Adobe Analytics : Understanding List Variables

I’m back blogging after a few months’ absence, and I sincerely apologize for not being active for a long. Shifted my focus to learn Adobe Experience Platform (AEP) with Customer Journey Analytics (CJA) and thus unable to dedicate as much time to blogging as I would want, but will be back from today. Said that, let’s move into today’s topic of understanding List Variable in Adobe Analytics. Even if you think that you know everything about a List Variable, stay with me, you might be surprised to see the results at the end of the post.

Most of us would agree that List Variable is one of the most powerful variable types in Adobe Analytics since they allow us to set an eVar to many values on the same hit. There are certain use cases where we would like to employ List Variable, however, whenever I interview architects to understand more about how they use List Variable, one of the most common use cases I hear from them is tracking banner impressions. The use case is partially right until we know how allocation works for a List Variable and how attributions are given to the line items. So, let’s discuss the use case and see how we can leverage a List Variable effectively as we have only three variables in Adobe Analytics!

Case 1: Consider we have four banner slots on the Home Page, and static banners will load once the page loads, necessitating no scrolling to display all four banners. To capture the banner impressions, is it necessary to set a List Variable with 4 banner values (with an event)? I don’t think so because we can just consider Page Views of the Home Page as impressions.

Case 1 : Static Banners – No Scrolling

Case 2: Consider we have four banner slots on the Home Page, and now dynamic banners will load once the page loads, necessitating no scrolling to display all four banners. Suppose there are 16 banners and if they are rendered dynamically whenever the Home Page loads, we cannot consider Page Views of the Home Page as impressions for all 16 banners since only 4 banners are rendered at a time. Since because we need to capture multiple eVar values (Here, 4 values) in the same hit, we’d require a List Variable to capture the banner impressions.

Case 2 : Dynamic Banners – No Scrolling

Case 3: Consider we have a single banner slot on the Home Page, but the banners are now rotating (Manual or auto-rotating). We are supposed to employ an eVar here since only one banner would load at a time, yet triggering Server Calls on each banner rendering may raise the cost i.e. Increase in Server Calls. Assuming that we capture the cumulative banner values through a cookie on the next page load, List Variable can be used. However, there are a couple of drawbacks:
1. Impressions cannot be captured for a bounce (Unless we trigger a Server Call on page unload, which is not a global solution).
2. The same banner could have multiple impressions after the page load, however, we cannot set the events separately for each list value. Assume the visitor views banner 1 thrice, banner 2 twice and banner 3 once, it is impossible for us to set the impression event separately for each banner value. Don’t think that we can duplicate the values to tally the impressions, because if we set duplicate values in the same hit, Adobe de-duplicates all instances of those values. For example, if we set s.list1 = “Banner 1,Banner 1,Banner 1,Banner 2,Banner 2,Banner 3”;, one instance is counted in the report for each value removing the duplication.

Case 3 : Static Banner – Rotating (Manual or Auto)

Case 4: Consider that there are several banner slots on the Home Page, and the banner slots (whether dynamic or static) require scrolling to see all of them. Based on the visible banners while scrolling, we can trigger Server Calls with a List Variable to capture multiple values or use a cookie to capture the cumulative banner values on the next page load. If we use cookies, drawback 1 from Case 3 still remains. Drawback 2 from Case 3 does not apply here because any banner will only have one impression (Not rotating or repeating).

Case 4 : Static Banners – Scrolling

Case 5: The combination of two or more of the earlier cases is substantially more complicated, but the drawbacks remain the same depending on the cases.

In each of these cases, List Variable can be used to track banner impressions; however, if we just want to track banner impressions, why do we need a List Variable but not a List Prop? We don’t prefer a List Prop since we need to track the customer journey all the way from impressions to conversions, which is more likely to be the case with a List Variable. Is this, however, valid? Let’s see what happens if we employ a List Variable for Case 1.

Assuming we want to track impressions (event 1), clicks (event 2), and conversions (event 3, here, form submission) using a List Variable, here’s how we would usually define the variables in our Server Calls considering comma (,) as the delimiter with visit expiration, full allocation and no limit for max values. For click tracking, we additionally assume that Banner 1 is clicked after the page load (After all 4 banner impressions) and conversion occurred within the visit.

Customer Journey – Set Dimensions & Events

Now, we anticipate seeing the following results in the Workspace.

List Variable Report – Expected

However, the results would be.

List Variable Report – Collected

I’m not sure how many of you reading this post were surprised, but I was when I first saw this outcome. Then I realized that the outcome is fine since the dimension allocation is either full or linear and never the last. Regardless of the fact that we only set one value (Banner 1) on the click, the values set during the impression (Banner 2, Banner 3, and Banner 4) did not overlap and instead continued to remain until the expiration (Here, the visit). Since we didn’t specify a maximum value limit (‘0’ – Zero), the number of active values allowed for this list variable is 250 values per visitor. Until the value exceeds 250, the credit for the events will be attributed to all the list values, and once exceeded, the most recent 250 values are considered. Because we have four values during the impression event, we cannot limit the value limit to one in order to collect clicks to conversions in a single variable. Check out the documentation to understand more about max values in List Variable.

It is also impossible to formulate a segmentation that excludes only the persisting values of Banner 2, Banner 3, and Banner 4 since the least container we have in Adobe Analytics is HIT, and excluding the HIT with the values Banner 2, Banner 3, or Banner 4 would also exclude the Banner 1 value.

The goal of using a List Variable is to ensure that we could capture the customer journey from impressions to conversions in a single report, which is now no longer relevant. We should use a List Var to capture impressions and a separate eVar to capture clicks to conversions statistics. If we employ the List Variable to capture only the impressions, why would we need a List Variable, and why not List Prop except that the character limit for a List Prop is 100 whereas the List Variable is 255 for each delimiter value.

Will you now agree with me, why didn’t I completely agree that the use case of capturing banner impressions is appropriate for a List Variable? While there is no doubting that List Variable is one of the most powerful variable types in Adobe Analytics, capturing banner impressions is not the ideal use case as I hear from many. Understand how a List Variable works and handle it wisely! Also, if you have a list of potential use cases for a List Variable, please leave it in the comments section for everyone to know.

Written by
Pratheep Arun Raj
Join the discussion