Bing! You have inflated traffic numbers!
The past couple of months we noticed a very odd trend the the geo-location / city data that was being saved in Omniture. The great metropolis of Redmond, Washington was now the number 1 city of origin of our web visitors. And this was not a small lead, they were the number 1 city by more than double the traffic from the number 2 spot.
Trying to find an explanation for all this, I checked the twitter-verse and did a little digging online, but did not have a chance to really dive into the issue until yesterday. Read the rest of this entry »
Omniture & ColdFusion: Why you should care.
So you use ColdFusion and by now you have heard the news that Omniture is going to be purchased by Adobe. So what? Why should you care?

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
Omniture/SalesForce Integration Part 1: Configuration
As I set out on my latest adventure with Omniture, I decided to begin this project by actually reading the manual first. So, I downloaded and read the SalesForce: Genesis Integration Guide from Omniture. Ok..fine..maybe I skimmed some pages, but I read most of it. What I took away from it, was I was going to need to really plan this project out.
For starters, I was a bit stunned to discover that the default integration would take 9 eVars and 22 Custom Events, with an additional 33 custom events. (Holy smokes! 50 plus custom events!)
So based on the information from the manual, which is about the only information online I could find about the process, this was my initial task list:
1. Confirm SalesForce requirements with resident SalesForce expert.
2. Determine list of integration Custom Events needed. (which iof the 53)
3. Activate SalesForce Genesis plugin
4. Make changes to primary s_code files
5. Initial testing
6. roll out s_code changes to other report suites.
1 & 2 were easy.
#3. This was a whole other beast. I quickly realized that I needed to have the help of our resident SalesForce Expert to help with the configuration. There is simply too much about SalesForce data fields that I do not know. Not to mention the little bits of information that the Integration Guide leaves out.
Here are the items that were more of a challenge in the process, due to either missing information in the guide or lack of SalesForce knowledge.
eVar Classifications:
- You must set up classifications for each eVar.
- The select box provided to select SalesForce data fields is way way too narrow to be able to read the data field names.
Configure the SalesForce.com Dashboard:
- You must add classifications for all elements on this page.
- The options provided to add classifications on this page are directly pulled from the classifications selected on the eVar Classifications.
- If you have to go back to edit your eVar Classifications any options selected here will not be saved.
Map SiteCatalyst Events
- Even though the Integration Guide says that the Marketing Sourced/Touched: Opportunitiy: New is optional...it's not. I had to add a mapping for this.
#1 thing I learned in the configuration: make darn sure you have a great SalesForce person to assist you with this. I am sure I would never have selected the right objects to classify without their help.
It is also apparent that I need a new task list, one that contains a lot more details and steps than I first planned. I will be working on fleshing this out as I progress through the rest on the integration.
This ends the configuration portion of my adventure, off to make changes to the s_code.
-Rudi






