Expand my Community achievements bar.

The Analytics Community Lens news letter for February 2024 is now here! Come see upcoming events and what's been going on in the community!

utm_id tracking with Adobe Analytics


Level 1



I don't have access to any AA account, but I am preparing a guide to track UTM parameters (mainly utm_id) with AA to be able to use it as dimension in reports. Based on various sources I found and discussions with AI bots, I have these steps:

  1. Go to your Adobe Analytics account and navigate to the Admin section.
  2. Click on the Tracking Code option.
  3. In the Tracking Code section, click on the Edit button next to the tracking code for your website.
  4. In the Tracking Code editor, find the section that defines the s.campaigns variable.
  5. Add the tracking code to the s.campaigns variable: utm_id
  6. Save the tracking code and publish it to your website.

Could you please confirm that these steps are correct? Are there any blockers or variations? Is anybody able to provide me with screenshots from AA?


Thank you in advance.

3 Replies


Community Advisor

I have literally never done that... in fact, I can't even find such as section in my Admin settings... the only area I know for Tracking Code configuration is in the Custom Conversion area, but this really just allows you to rename it and change the allocation:




If you want to track multiple UTMs (and concatenate them into a sensible order that you can parse), you can do what I do....


If you only have utm_id, may I ask why you are using the UTM designation at all? utm_id would be a completely custom parameter, it's not part of the standard utm items.. you could just use Adobe's default "cid" if you are planning an all-in-one parameter... it doesn't matter, you can use utm_id, it's just that utm is a callback to the original GA name "Urchin" (urchin tracking module).

I can understand adding additional UTMs to fit into an existing UTM strategy... since then the campaigns will work in both GA and Adobe without everyone needing to double campaign everything



Anyway, assuming you are using standard and custom UTMs (like we are):


First, in Adobe Launch, I create Query String Parameter Data Elements for each UTM I want to track.


Then I create a Custom Code Data Element, and I use JavaScript to pull in each of the above Data Elements (i.e. var utm_id = _satellite.getVar('utm_id');  // or whatever names I used).

The I use JS to check if they have values, then I create concatenation rules... this will depend on you.. some people just like to use specific positions for elements such as:


and if one of them is missing, either replace with nothing, or an na placeholder (source_medium_campaign__content or source_medium_campaign_na_content)


or some people like to create keyvalue pairs only for what is populated such as:



Either way, the final concatenation should be something you can easily parse with Regex if you need to extract specific values.


And if there isn't ANY campaigns, this Data Element just returns an empty string ""



Once you have your final Tracking Code Data Element, just pass it to the Campaign Field in your Page View Rule(s):



You only need to pass this on the Page View.. because the attribution is 1 week your clicks and all subsequent hits will get the value through processing, and you will want to be able to distinguish the "instance" (the initial page load with the campaign) vs the "attributed" (all other hits)


Level 2

Hi Jennifer:

Would we also use this procedure for setting up CID codes?  I have Adobe Analytics but, as I understand it, AA is not sufficient by itself for setting up tracking codes.  We actually need Adobe Launch.  Is that accurate?

So, we'd set up our CID codes and link using a CID builder tool like this one:  https://adobe.utmsmartmanager.com/

But then I'm confused as to how we actually configure AA to correctly track those codes.  

Thanks again.


Community Advisor

Yes, CID codes could be passed to the same campaign parameter, though, in the case of CID, you don't have to concatenate multiple parameters, there is only one CID and it should already be structured in a parse-able format.


Meaning that you just need a Data Element to pull the Query Param "cid" and you can pass that directly to your campaign tracker.


The tool you posted is one way of doing your CID, but not necessarily the only way... many companies will have their own customized structure, and to be honest, I don't particularly like the way the tool you posted does things.... if any field isn't used, there is no way to indicate that for parsing out the data:


Now, in this tool, all fields are mandatory except for "Adset Name" and "Ad Name"... 



In this case, based on order, you know that test is the Adset name, and test2 is the Ad Name... but what happens if I do this:




Is "test2" the Adset or the Ad Name? You don't know, there is no way to tell in this case....


You can tell people to add "na" in fields they don't use, but a manual mess up might result in them forgetting... what happens if someone goes rouge and builds the URL without the tool and forgets to add the campaign:




Now your "Ad Name" has shifted two spots and will be parsed as the Campaign....


Depending on training and your team, a lot of this risk could be mitigated, or it might turn into a complete mess....




Now, for your statement:

AA is not sufficient by itself for setting up tracking codes.  We actually need Adobe Launch.

I don't know what you mean by this? Launch does not "set up" tracking codes, it simply collects the values passed to URLs and sends them to AA. This information could be collected long before "Launch" was a thing, the code just had to be set up by developers in the AppMeasurement files.


Setting up the actual campaign codes is the responsibility of your team, using tools like the one you posted, or managing your own campaign list in Excel or another spreadsheet, or using a service like Accutics or Claravine to manage your campaigns.


For tracking these codes, if you are using CID, you would first set up a Data Element like so:




Then pass this Data Element into your Campaign parameter, I would add this to the Page View rules, but you could add to the analytics extension...


The reason I like to add to the Page View, is that then I am sure that only the page view is setting the values, and any actions are picking up the attributed value (so that I can tell the difference between the instance and the value carried forward much easier.


Now, this will mean that in Adobe, you will see values like:



However, you will want to set up classification rules on your Campaign dimension, to parse each of these values out to separate items... hence why I made a big deal about parse-ability, and the fact that if items are left out, or change order, the data will be parsed incorrectly....


You would likely use Regex rules to look at the : as the delimiter, and take the first item as the "source", the second item as the "medium", etc... but again, if an item is missed or the items passed in the incorrect order, then these rules will sort values into the wrong groupings....


This is why you need to make sure that CIDs are created properly by your team.


Here is some info about the Classification Rule Builder: