Campaign Tracking in Adobe Analytics: Tracking UTMs and CIDs

Get Frederik Werner's method for campaign tracking in Adobe Analytics using UTMs and CID tracking codes.
Frederik Werner
Director Marketing Technology at Mohrstade

Campaign tracking in Adobe Analytics can be a challenge. In this article, Frederik Werner shows you how to track both CIDs and UTMs in Adobe Analytics to help you get the best of both worlds.

Adobe Analytics is one of the most flexible analytics solutions on the market. While that is great to utilize for almost every use case imaginable, it also brings some unique challenges. For example, there often is no clear way to implement a certain feature as similar results could be achieved in slightly different ways, not all of them being the ideal solution.

A good example for this is campaign tracking. To track a campaign in Adobe Analytics, the widely accepted best practice is to use a generic Campaign ID, commonly through the "cid" URL parameter. In Adobe Analytics, we would then translate a generic ID (like "SEA-123") into more specific information through Classifications, like a campaign name, channel, or even budget information. Doing that, we don't have to expose all required information in the URL and are able to adjust information retroactively if needed. Even better, tools like Accutics Standardize make it super easy to manage those IDs across the whole company.

But life is not always that easy. Marketing campaigns are often run by agencies that just love their UTMs, as they can just cram everything in the URL without any governance. Thinking beyond analytics, many other martech tools (like CRM or personalization tools) tend to only work with UTM tags. I've seen many newsletter tools automatically attaching UTMs but have no easy workflow for other parameters. As a result, we often find ourselves with only UTMs attached to the URL but without a proper CID.

It is quite clear that we should strive to make CIDs the standard in our company but that it can be a very long up-hill battle. But what do you do until then? In my personal opinion, it can easily make sense track both CIDs and UTMs to Adobe Analytics, at least when the alternative to UTMs is simply nothing. For that reason, this post intends to help you get your campaign tracking to a good place, where both CIDs and UTMs are tracked in a sane way. First, let's look at the setup in Adobe Launch.

Adobe Launch Setup

Once we have decided to track both CIDs and UTMs, we need to get Adobe Launch to capture all desired parameters. To start, let's create 6 new Data Elements, one for each UTM parameter plus the CID:

6 new Data Elements in Adobe Analytics

Next, I'm going to create an additional Data Element that simply concatenates the UTM parameters. That way, we don't have to use additional dimensions or Context Data to capture all UTMs at once. The easiest way to concatenate values in Launch is through the Constant Data Element Type, like below:

Data Element that concatenates UTM parameters in Adobe Analytics

As you can see, I'm simply pulling all of my UTMs into a single value, separated by a dollar sign "$" as delimiter. If the dollar sign is something that occurs often in your UTMs (to which I would ask "WHY?!") you can use any other character or even multiple characters instead.

Next up, let's create a bit of logic to only return the string of concatenated UTMs if they are actually present. If we wouldn't do that, we would always track "$$$$" (only the separators) if there aren't any UTMs present. To do that, we can use the very handy Conditional Value Data Element like below:

Creating a Data Element in Adobe Analytics


Seamless
adoption
Accutics is extremely simple. It’s a very easy tool to use, it’s extremely intuitive and the fact that you can download and upload a template and generate thousands of CMP IDs with the click of a button is a big selling point especially for agencies.
Nael Cassier,  
Senior Manager Digital Marketing, Qualcomm

With this handy Data Element, we ensure that the we only use the long string of UTMs if at least the UTM Source parameter is present. The "is truthy" operator simply checks if it contains a value, ensuring we don't introduce a lot of noise to our data.

Now that this is in place, we have to take care of the logic that figures out if we should track the CID or UTMs. Since the CID is usually the more "valuable" parameter, we should use it wherever possible and only fall back on UTMs if the CID is not there. To do that, we once again use our handy Conditional Value Data Element Type:

Editing a Data Element in Adobe Analytics

The logic here is very similar to what we've done before. We check if the CID parameter exists; if it does, we use it directly; if it doesn't, we use the concatenated UTMs, which only return a value if the source is present. Pretty nifty, right?

Now, with all of this in place, we can simply use the URL: Campaign Parameter Data Element you see above in the Adobe Analytics Extension for the Campaign Parameter:

Action Configuration in the Adobe Analytics Extension for the Campaign Parameter

And that's all we need! With this simple setup, we're now able to track both UTMs and CIDs to Adobe Analytics, all while giving preference to the more valuable CID. Now, let's look at what we need to set up in Adobe Analytics.

Adobe Analytics setup for UTMs and CIDs

Now we are tracking both CIDs and UTMs into Adobe Analytics' Campaign variable, aka eVar0. The long string of concatenated UTMs is not the most readable value to work with, so let's turn it into something better!

We are going to repurpose our existing Classifications to take the UTM string and pull it into the existing dimensions. This part is very specific to your company, my current campaign Classifications looks something like this:

Some of those fit the UTM parameters already! Next, let's head over to Classification Rule Builder to define the logic that pulls the values apart again. For the format we've used above (using $ as delimiter), a regular expression to separate the values would be "(.*)\$(.*)\$(.*)\$(.*)\$(.*)" like below:

Defining the logic in the Classification Rule Builder

All that is left to do is to assign the groups from our regular expression to the appropriate classification dimensions. As you can see in rows 9 through 13, I'm doing my best to map the existing Classification dimensions to the UTMs. For the last three rows, I don't have anything to match, so I'm using the static value of "Not available (UTMs used)" to annoy my users into using CIDs (as they should!).

Mapping existing Classification dimensions to UTMs in Adobe Analytics

With this neat setup, my marketing stakeholders can now use both CIDs and UTMs for their landing pages and be sure that everything is tracked. If they use both for the same URL, we prefer the more valuable CID.

Don't let your
organization
fall behind
Take the first step towards data-driven success by exploring how Accutics can transform your marketing operations.
Campaign Tracking in Adobe Analytics

Campaign Tracking in Adobe Analytics: Tracking UTMs and CIDs

Get Frederik Werner's method for campaign tracking in Adobe Analytics using UTMs and CID tracking codes.

Frederik Werner
Campaign Tracking in Adobe Analytics
Campaign Tracking in Adobe Analytics

Campaign Tracking in Adobe Analytics: Tracking UTMs and CIDs

Get Frederik Werner's method for campaign tracking in Adobe Analytics using UTMs and CID tracking codes.

By
Frederik Werner
Campaign Tracking in Adobe Analytics
Campaign Tracking in Adobe Analytics

Campaign Tracking in Adobe Analytics: Tracking UTMs and CIDs

Get Frederik Werner's method for campaign tracking in Adobe Analytics using UTMs and CID tracking codes.

By
Frederik Werner
Campaign Tracking in Adobe Analytics

Campaign Tracking in Adobe Analytics: Tracking UTMs and CIDs

Get Frederik Werner's method for campaign tracking in Adobe Analytics using UTMs and CID tracking codes.

By
Frederik Werner

Campaign tracking in Adobe Analytics can be a challenge. In this article, Frederik Werner shows you how to track both CIDs and UTMs in Adobe Analytics to help you get the best of both worlds.

Adobe Analytics is one of the most flexible analytics solutions on the market. While that is great to utilize for almost every use case imaginable, it also brings some unique challenges. For example, there often is no clear way to implement a certain feature as similar results could be achieved in slightly different ways, not all of them being the ideal solution.

A good example for this is campaign tracking. To track a campaign in Adobe Analytics, the widely accepted best practice is to use a generic Campaign ID, commonly through the "cid" URL parameter. In Adobe Analytics, we would then translate a generic ID (like "SEA-123") into more specific information through Classifications, like a campaign name, channel, or even budget information. Doing that, we don't have to expose all required information in the URL and are able to adjust information retroactively if needed. Even better, tools like Accutics Standardize make it super easy to manage those IDs across the whole company.

But life is not always that easy. Marketing campaigns are often run by agencies that just love their UTMs, as they can just cram everything in the URL without any governance. Thinking beyond analytics, many other martech tools (like CRM or personalization tools) tend to only work with UTM tags. I've seen many newsletter tools automatically attaching UTMs but have no easy workflow for other parameters. As a result, we often find ourselves with only UTMs attached to the URL but without a proper CID.

It is quite clear that we should strive to make CIDs the standard in our company but that it can be a very long up-hill battle. But what do you do until then? In my personal opinion, it can easily make sense track both CIDs and UTMs to Adobe Analytics, at least when the alternative to UTMs is simply nothing. For that reason, this post intends to help you get your campaign tracking to a good place, where both CIDs and UTMs are tracked in a sane way. First, let's look at the setup in Adobe Launch.

Adobe Launch Setup

Once we have decided to track both CIDs and UTMs, we need to get Adobe Launch to capture all desired parameters. To start, let's create 6 new Data Elements, one for each UTM parameter plus the CID:

6 new Data Elements in Adobe Analytics

Next, I'm going to create an additional Data Element that simply concatenates the UTM parameters. That way, we don't have to use additional dimensions or Context Data to capture all UTMs at once. The easiest way to concatenate values in Launch is through the Constant Data Element Type, like below:

Data Element that concatenates UTM parameters in Adobe Analytics

As you can see, I'm simply pulling all of my UTMs into a single value, separated by a dollar sign "$" as delimiter. If the dollar sign is something that occurs often in your UTMs (to which I would ask "WHY?!") you can use any other character or even multiple characters instead.

Next up, let's create a bit of logic to only return the string of concatenated UTMs if they are actually present. If we wouldn't do that, we would always track "$$$$" (only the separators) if there aren't any UTMs present. To do that, we can use the very handy Conditional Value Data Element like below:

Creating a Data Element in Adobe Analytics


With this handy Data Element, we ensure that the we only use the long string of UTMs if at least the UTM Source parameter is present. The "is truthy" operator simply checks if it contains a value, ensuring we don't introduce a lot of noise to our data.

Now that this is in place, we have to take care of the logic that figures out if we should track the CID or UTMs. Since the CID is usually the more "valuable" parameter, we should use it wherever possible and only fall back on UTMs if the CID is not there. To do that, we once again use our handy Conditional Value Data Element Type:

Editing a Data Element in Adobe Analytics

The logic here is very similar to what we've done before. We check if the CID parameter exists; if it does, we use it directly; if it doesn't, we use the concatenated UTMs, which only return a value if the source is present. Pretty nifty, right?

Now, with all of this in place, we can simply use the URL: Campaign Parameter Data Element you see above in the Adobe Analytics Extension for the Campaign Parameter:

Action Configuration in the Adobe Analytics Extension for the Campaign Parameter

And that's all we need! With this simple setup, we're now able to track both UTMs and CIDs to Adobe Analytics, all while giving preference to the more valuable CID. Now, let's look at what we need to set up in Adobe Analytics.

Adobe Analytics setup for UTMs and CIDs

Now we are tracking both CIDs and UTMs into Adobe Analytics' Campaign variable, aka eVar0. The long string of concatenated UTMs is not the most readable value to work with, so let's turn it into something better!

We are going to repurpose our existing Classifications to take the UTM string and pull it into the existing dimensions. This part is very specific to your company, my current campaign Classifications looks something like this:

Some of those fit the UTM parameters already! Next, let's head over to Classification Rule Builder to define the logic that pulls the values apart again. For the format we've used above (using $ as delimiter), a regular expression to separate the values would be "(.*)\$(.*)\$(.*)\$(.*)\$(.*)" like below:

Defining the logic in the Classification Rule Builder

All that is left to do is to assign the groups from our regular expression to the appropriate classification dimensions. As you can see in rows 9 through 13, I'm doing my best to map the existing Classification dimensions to the UTMs. For the last three rows, I don't have anything to match, so I'm using the static value of "Not available (UTMs used)" to annoy my users into using CIDs (as they should!).

Mapping existing Classification dimensions to UTMs in Adobe Analytics

With this neat setup, my marketing stakeholders can now use both CIDs and UTMs for their landing pages and be sure that everything is tracked. If they use both for the same URL, we prefer the more valuable CID.

FREE WEBINAR

How to Build an Enterprise-Level Campaign Tracking Taxonomy

Join data governance experts Jimmy Felstead, Station10 and Kasper Rasmussen, Accutics as they take a deep dive into building and aligning an enterprise-grade taxonomy for campaign data.

Wrap-up

I hope this post was helpful to you. As I've demonstrated, we do have an effective way to bring balance to the force between UTMs and CIDs and track the best information available. By tracking some default values for unavailable Classifications, we can even use UTM tracking as a way to motivate our Adobe Analytics users to choose the right approach.

No more lost campaign data from that rouge marketing agency, yay!

About Frederik Werner:

Frederik Werner is Head of Analytics at Accutics. He is the author behind Full Stack Analyst and has quickly been recognized as one of the top bloggers on Adobe Analytics and the latest trends in web analytics.

Dive into the full case
Find out how the Fortune 100 insurer achieved marketing excellence with Accutics
Get the Campaign Naming Convention Guide for the Enterprise

Popular Articles

campaign tracking

Lead with Insights Survey: Unlock the Power of Data Governance

Why and how marketing data governance comes out as a clear differentiator for success
Diana Ellegaard-Daia
5 min read
Campaign Tracking

Campaign Tracking in Adobe Analytics: Tracking UTMs and CIDs

Get Frederik Werner's method for campaign tracking in Adobe Analytics using UTMs and CID tracking codes.
Frederik Werner
9 min read

Data-driven marketing

Understanding CDPs and Their Role in the Marketing Data Stack

How do you create compelling presentations that wow your colleagues and impress your managers?
Diana Ellegaard-Daia
8 min read
Digital analytics

Migrating to a New Digital Analytics Solution

Mental models are simple expressions of complex processes or relationships.
Frederik Werner
9 min read

Get the latest
marketing analytics insights

No-nonsense marketing and analytics best practices from
international industry leaders, straight to your inbox

Sign up to newsletter