Adventures in Utah!
This week I had the great fortune to go to Orem Utah for Omniture SiteCatalyst Implementation. I was excited not only for the training, but also this was my first trip to Utah. My flight got in well after dark so I did not see the mountains until the next morning, but man is it pretty out there!

I've been busy for the past few months working to integrate Omniture into our web site, and I have made a lot of good progress and I was quite sure that there was still much to learn in the training, however, I was not prepared for how much I still had to learn.
Despite all I had managed to learn on my own, and the resources I had managed to find on the web, there were some basic concepts that had escaped me (and will be rectified):
Core understanding of the 4 types of Omniture variables. (Traffic, Conversion, Configuration, Automatic):
I had a basic grasp on how each of these variables worked, but had not wrapped my head around how each of these variables not only related to other variables of the same type, but how to properly format and track each one to maximize the detail you can achieve within SiteCatalyst.
Clearly define business goals & requirements before you code
In the process of jumping head first into the coding and figuring out ways to get the data we needed into Omniture, the critical step of getting all the goals defined and updating our Solution Design Document to reflect the goals was skipped.
Have Client Care enable additional features:
Yet another seemingly simple item of having pathing enabled, and adding additional metrics to variables , was missed.
There are a few other small things that I might go into more detail later, but this is as much ignorance on this topic I wish to share at this time. The major item I am taking away from this training is that no matter how much you think you know, there is always something else to learn.
I would also like to give kudos to the trainers from Omniture! Our instructor, Doc Cochran, was extremely knowledgeable about SiteCatalyst, and took the time to make sure that any and all of our questions were answered. He also had a great way of relating each example/item to a real world scenario that all could benefit from.
From this class I have a full list of items to review and address once I am back at work and I am looking forward to applying the new knowledge and getting the full benefit from our investment in Omniture.
_______
I would also like to thank the other Omniture employees that I was able to meet with to discuss past and future initiatives we are working on. It was great to be able to sit face to face and talk though some past successes and challenges with these folks.
_______
Lastly, it was a little on the surreal side to be in Orem when the news broke that Adobe was buying Omniture. There are been many, many articles written about this and I will throw in my 2/5's of a nickel. As a ColdFusion developer I have worked with many folks in the Adobe community for some time and have always been impressed with the dedication to innovation that is part of Adobe's culture. I truly think that this is a great fit and the communities of both products/companies should benefit greatly from this merger. I am looking forward to seeing how they will be able to tie the technologies together.
I had an absolutely great trip to Utah. I learned tons, met great people, and soaked in the amazing landscapes!

-Rudi
Hierarchy Data In Omniture
NOTE: If your looking for the article on Omniture & ColdFusion: Why you should care. Click Here. I botched the link in the original tweet.
I was reading a post on WebAnalyticsLand about a SiteCatalyst plugin to populate the s.hierN variables from the URL, and it got the gears turning. I wonder if I could get that to work using a combination of ColdFusion & JS instead of just making edits to the s_code file.
Some things to consider before implementing Hierarchies: (swiped from Omniture's Manual)
- There are five hierarchy variables available, which must be enabled by Omniture ClientCare.
- At the time the hierarchy is enabled, you will need to decide on a delimiter for the variable and the maximum number of levels for the hierarchy.
- Before implementing hierarchies, refer to the Channels and Hierarchies white paper.
- The delimiter may not be changed once the hierarchy is setup. If the delimiter for your hierarchy must be changed, contact Omniture ClientCare.
- The number of levels may not be changed once the hierarchy is set up.
Once the hierarchy is activated, you should see it in SiteCatalyst under the Site Content Menu item (In version 14.6)
That concludes the configuration portion of the adventure. Now to the coding!
Note: I code in a ColdFusion environment in which I have a .cfm page that pulls the s_code.js into it so I can use some built in CFML functions to tweak the data.
Goals for this adventure were to:
- Dynamically set the s.hierN variable on every page
- Prevent levels greater than 5 from being passed
- Prevent filenames being passed as levels (index.cfm)
- And of course..get it all working to provide a hierarchical view of our web traffic.

<cfset variables.omniHierList = cgi.path_info >
<cfset variables.omniHierListLen = ListLen(variables.omniHierList,"/")>
<cfset variables.newOmniHierList = ListChangeDelims(variables.omniHierList,"|","/")>
<!--- Check the list len to make sure we do no exceed the level depth --->
<cfset variables.lastItem = ListGetAt(variables.newOmniHierList,variables.omniHierListLen,"|")>
<cfif FindNoCase(".","#variables.lastItem#") GT 0>
<cfset variables.newOmniHierList = ListDeleteAt(variables.newOmniHierList,variables.omniHierListLen,"|")>
</cfif>This will result in: Assuming of course that your current path is "/root/evil/browsers/IE6/demonspawn/use/firefox.ftw"
So what I've done is parse through the cgi.path_info variable, change the delimiter to | and removed the filename from the end of the list. But as you can see I am left with a list of 6 items and I can only send 5 levels to the s.hier I had ClientCare activate. I was told that the extra's would be ignored, but I do not like to leave things to chance, so I added one more set of code.
<cfif variables.omniHierListLen GT 5> <cfset variables.newOmniListTrim = ""> <cfloop from="1" to="5" index="i"> <cfset variables.newOmniListTrim = ListAppend(variables.newOmniListTrim,ListGetAt(variables.newOmniHierList,#i#,"|"),"|")> </cfloop> <cfset variables.newOmniHierList = variables.newOmniListTrim> </cfif>
Now you have a list of a max of 5 items to set the s.hierN variable to.
This was one of the easier Omniture adventures so far!
-Rudi
One Player to Rule Them All…
Last week I read a great post by Vaugn Denny about the JW Video Player. And being of the curious sort I had to investigate further. So I visited the JW Player web site. And I was greeted with a page that claimed that they had a video player that would not only play flv files, but wmv files as well. And with further reading the player claims to have an open API with access to the player events. Could it be true?
One Player to rule them all, One Player to track them,
One Player to bring them all and in the darkness correlate them
In the Land of Analytics where the Shadows lie.
Track Your FLV Video Files With Omniture & FlowPlayer
EDIT: After I wrote this I found a new video player that will play flv, wnv, and youtube videos.
I've been working on our Omniture integration for a while now and recently I started working on the task of tracking our videos. I know that Omniture has some very nice features you can use with Action Source code, but what if all you have access to is the end result of the flv file? With no tools to edit a player, or the ability to embed the code in the files/players? It's a bit of a challenge to say the least.
I needed a way to track flv files with the same amount of details that the Action Source would provide in a reliable, easy to duplicate fashion. My search for this led me to an FLV player called FlowPlayer. It is a nice easy to implement player with easy access to the API and the events.
Read the rest of this entry »
Pipes…. well I’ll be… there are pipes….and they can feed data to Omniture
According to former United States Senator Ted Stevens, the internet is a Series of tubes
[...] They want to deliver vast amounts of information over the Internet. And again, the Internet is not something that you just dump something on. It's not a big truck. It's a series of tubes. And if you don't understand, those tubes can be filled and if they are filled, when you put your message in, it gets in line and it's going to be delayed by anyone that puts into that tube enormous amounts of material, enormous amounts of material
Well, I was stunned to find out that this is true...well sort of. Yahoo has a service out called Pipes

Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web.
The short version is you can create your own pipe or use/clone one of hundreds out there. I was drawn to this one: Social Media Firehose So you enter in a few terms to search on and in one rss/xml/json feed you get a result set from sources all over the web:
Twitter, blogs, etc.
Why should you care? Well, as soon as I saw this I thought of the project I've been working on to integrate Twitter into Omniture. I figured that I could take that same approach and use Pipes to further extend the level to which we would be able to monitor our brand across social media. And I was right!
After pulling the JSON feed I wanted I was able to parse through it to create the XML object I would need to take advantage of the Data Insertion API.

I then changed the settings in SiteCatalyst to combine this with the data I was already gathering from twitter. I created a new event called Social Media and changed both the twitter data and the data from Pipes to feed into that. Then I added an evar for the source ( Twitter, or the source that Pipe pulled from). Now when I go into the Social Media report suite, I see a report with a list of the terms I monitor, which can be broken down by source of the buzz, author, link of the blog post, link to the twitter user and so on.
I will be modifying the code I have on RiaForge for just twitter to show the combined files for both pipes and twitter, and posting that soon. Now I will keep my eyes out for other API's I can tap to continue to extend the monitoring reach.
-Rudi







