We live in some very exciting times for our industry. There is a lot going on in the analytics space with Adobe’s brand new Experience Platform, Customer Journey Analytics, Web SDK, and Launch Server Side. All of those new innovations will fundamentally change how we track data and process data once it has been collected. But since I got the opportunity to try out most of those exciting things myself, people often ask me why I still love Adobe Analytics as much as I do.
My answer to that usually covers multiple areas. For example, I like how the App Measurement Library in Launch helps me to collect data efficiently. Analytics’ Processing Rules and Marketing Channels are another great tool to enrich our events after the collection. In a previous post, I already explained why I love prop-type dimensions quite a lot, since they can provide us with metadata on a whole session (like entry- and exit dimensions). And last, but not least, interfaces like Activity Map can provide us with in-context data, which is super helpful to analyze behavior on a website for less experienced users.
However, one thing that I did not write about until now is actually on the top of my list of things that drive value with Adobe Analytics. I tapped into the topic a bit when I did my series about building an open source web analytics tool, but never looked at the actual Adobe Analytics feature. I’m talking about what is known as the Visitor Profile.
Remembering data, but for a long time
First, let’s extend on my post about Props in Adobe Analytics for a quick refresher. When we enable a Prop-type dimension in Adobe Analytics, we have the option to enable Pathing. In the past, there used to be a lot of cool reports that came with that option (like previous and next page reports, that we now need to manually build in Workspace) in the old Reports & Analytics world, but most people today will likely only ever see the Entry- and Exit-dimensions in Analysis Workspace.
With those two types of reports, we can analyze what the first or last value of a certain Prop in a Visit was. I like to think about this dimensions as metadata on Visits, since they are valid for the whole sessions for a given user. You can think it as rows in a database, where the first and last dimension value for a Visit are stored and potentially updated as new data comes in. This is also why they are valid for the whole Visit, which enables us to break down “Entry Page” by “Page”, showing which pages were used in a Visit that started on a certain page.
The Visitor Profile works in a very similar way. But instead of providing metadata on a Visit, it holds information about the Visitor. And you might already have guessed it: This also is what Evars use when you activate the Persistence and Expiration settings in the Admin menu. In there, we could for example set an Evar to forever hold the first ever value it received (which is a common thing for marketing analysis) for any Visitor. We could then break this down by the last value for the same user, to utilize use cases like marketing channel interaction analysis.
But how is this actually done? Some of those features sound similar to what Attribution IQ does in Analysis Workspace. But while Attribution is available in Adobe’s Customer Journey Analytics, the Visitor Profile is exclusive to Adobe Analytics, so both must work a bit different from each other. Also (contrary to popular belief) I still don’t work for Adobe, so we have to rely on some of the clues we can find scattered around Analytics. Let’s dive in!
Collecting the puzzle pieces
There are a few clues for us to find when trying to figure out how the Visitor Profile works. First, let’s find out where it actually sits in the Adobe Analytics processing pipeline. When an event is received by Analytics, it goes through quite a few processing steps, as shown in the Processing Rules section in the Admin settings:
Depending on your reporting interface of choice, your data will be pulled out at different stages of processing. If you use the Real Time Report feature in Reports & Analytics, your data will only be partially processed (after Vista rules have been applied), which makes it available near real time. This is also where Adobe’s Experience Platform would get it’s data, which is only partially processed.
After those steps above are done, the Visitor Profile is applied based on the processed data. To get another clue as to how it works, we can have to look at the Timestamp settings of a freshly created Report Suite:
That is quite interesting: While Adobe Analytics allows us to set a custom timestamp on hits (super useful for mobile apps!) or even use a custom user id, we can’t do both at the same time. This means that the order of events seems to matter to Analytics, which is not true for other tools like Customer Journey Analytics. Before we continue that discussion, let’s look at our last clue, which can be found once we extract our data back out of Analytics through data feeds.
With data feeds, we have the option to export two columns of data for each variable that was configured. In the “pre_” columns, we get the exact data that was received by Analytics, while the “post_” columns contain what is available in Analytics after Processing Rules and Visitor Profile. This hints that the actual value after the Visitor Profile is not only evaluated as the report runs, but is written to the data with every hit.
So, let’s summarize what we found so far:
- The Visitor Profile is applied quite late in the processing chain for events in Adobe Analytics, with Processing Rules happening earlier
- The order in which hits arrive seems to matter to Analytics, since we can either set a custom user id or a custom timestamp, but not both
- During processing, the actual value from the Visitor Profile is written to the data set, which makes it available in data feeds
All of this hints to a simple solution to our puzzle: I might have been correct with my previous approach!
Solving the puzzle
With all the hints that we have collected so far, it seems that the Visitor Profile is indeed a special database that is queried and updated as data is processed in Adobe Analytics. Maybe it works like this diagram from the previous post:
Now we can deduce how Adobe Analytics is determining things like persisted Evar values or figures out the Visit Number of a user. This also explains why Analytics is dependent on receiving hits in the right order, since it will update the database with new values as they arrive, so they need to be processed in the right order. This is also different from how Props work, since the Evar processing only ever gives us the last known value at time of processing, while Props can somewhat look in the future.
This principle doubles-down on Adobe Analytics’ positioning as a web analytics tool, where requirements like the correct processing order can be met. Other tools, like Customer Journey Analytics, must deal with late arriving data and don’t have that database in place, so they rely on other features like Attribution IQ. Luckily, Customer Journey Analytics can make use of the Experience Platform, so we can create similar data points using Query Service.
I hope you found this little deep dive interesting. If you want to see a cool application of how the Visitor Profile can help us with our analysis, make sure you watch my upcoming session on the Adobe Summit!
Frequently asked questions
The Visitor Profile (also referred to as the Virtual Cookie) holds information about the user on Adobe Analytics’ own servers. That way we don’t need to persist values in cookies but can configure an Evar to remember previously set values. A good example is the Visit Number dimension, which remembers on what session the user currently is.
No, it is not. Customer Journey Analytics uses something similar to a Report-Time Processing Virtual Report Suite, which means that there is no information about the user that is persisted in the backend. Something similar can be achieved through Query Service.