Omniture SiteCatalyst 15: Context Variables & Processing Rules

A big deal was made at the Omniture Summit of the segmentation available in SiteCatalyst 15. While the advantage of this feature is obviosu to everyone, I do not consider this to be the most significant part of the upgrade of SiteCatalyst to version 15. I consider the greatest new feature of SiteCatalyst 15 to be two things, that when put together, could change how every implementation of SiteCatalyst is undertaken and managed on a regular basis. These two things are context variables and processing rules. Below, I will detail what context variables and the processing rules are, and then discuss how they can be used in conjuction to streamline a SiteCatlayst implementation.

Context Variables:

Those familiar with SiteCatalyst are aware of what events, props and eVars are. With the release of SiteCatalyst 15, there is a new type of variable, the context variable. Here’s what you need to know about context variables in general:

  1. There are an unlimited number of context variables
  2. There is no character limits on what you can place in a context variable
  3. You can name a context variable with any name you prefer (meaning that developers don’t need to worry about eVarX, propX, etc.)

To detail how a company might use a context variable, I will provide a code example of custom download measurement via traditional SiteCatalyst variables vs. context variables. The goal here is to track the name of the download, the URL of the download and a success event for the download.

Site Catalyst 14 and Prior (assume eVar1 and eVar2 are set by the implementation):

s.eVar1="download name"
if (s.eVar1){

s.eVar2="Download URL"
if (s.eVar2){

SiteCatalyst 15:

s.contextData['Download Name']="download name";
s.contextData['Download URL']="download url";

That’s it!

SiteCatalyst 15’s solution is a little simpler (at least in terms of coding), huh?! What makes this great is that giving direction to your developer for implementation is extremly straight forward, and anyone looking at these varibles in the code, should be able to easily determine what’s gonig on. Keep in mind that you can make the names of the context variables anything you like. So now that these context variables are in place, the developers are no longer needed in the implementation of SiteCatalyst (for downloads anyway!).

Next, Processing Rules will bridge the gap between the context variables and SiteCatalyst reporting. So below we will continue discussing the implementation of download measurement while using the context varialbes above with the new processing rules.

Processing Rules:

Many may be famailar with Omniture’s Marketing Channel Report and the processing rules that go along with that great feature (if not you should be!). Now, Omniture customers can create processing rules in a similar way that will allow them to set events and variables (as well as more advanced options) based on simple or complex rule sets. To demonstrate how this is done, we will assume that our developers have implemented the two “download” context variables above.

Now you can login to the admin console of SiteCatalyst and setup two easy rules:

  1. If “contextData[“Download Name”]” is set at anytime, move that value to eVar1 and prop1 as well as set event1
  2. If “contextData[“Download URL”]” is set at anytime, move that value to eVar2 and prop2

That’s all you have to do to implement custom download measurement once your context variables are in place.

Context Variable and Processing Rule Caveats:

This could warrant an entire other blog post, but here’s a brief summary of a few caveats of which to be aware when using context variables and processing rules:

  1. You will have to upgrade to the H23 version of the s_code (i.e. Omniture data collection code) in order to leverage context variables.
  2. While context variables can be unlimited in length, you will still need to be aware of the total 2080 character limite in Internet Explorer. Also, the props and eVars within the reporting itself still have their limits. The advantage of the unlimited length is that you could create a processing rule to evaluate the entire context variable’s value. Ex: if a campaign code contains “google” then set eVar3 as “Paid Search.”
  3. Don’t get your hopes up for SAINT here, the processing rules will not populate SAINT classifications.
  4. Context variables are not stored. Once they are captured and used in any processing rules, they are not maintained by Omniture. So, any processing rule (as should be expected) would not work on old context or other data.
  5. Obviously, the improper setup of a processing rule could compromise an entire SiteCatalyst implementation since processing rules are essentially a “VISTA Lite.”
  6. Debugging an implementation could be tricky using context variables. While you can see the context variables in a debugger, it is the eventual processing rules that would determine how a report is actually populated. This means that not only will you have to validate the site-side implementation, but you will also have to validate the setup of any processing rules. Here’s an example of what you might see in a debugger (easy to read, and no more c1, v1, etc…):
    SiteCatalyst 15 Context Variables in Debugger 

  7. The product string, cannot be set using context variables or processing rules. The product string is simply to complex. If advanced manipulation of the product variable is needed, then Omniture Engineering may need to be involved with an actual VISTA solution (unless you can do it on the code-side of course).

So, while segmentation is a great feature (maybe even the one that most users will value), the above features will enable Omniture customers to more easily manage implementations. The post above only scratches the surface of what can be done with context variables and processing rules. If you have any other questions,  leave me a comment below!

SiteCatalyst SAINT Classifications: Concatenation

SAINT Classification is one of the most useful features of Adobe SiteCatalyst. However, most company’s that use the tool use it simply for the ability to upload single dimensions for a key. For example, if a company is uploading SAINT classifications for marketing reporting and analysis for paid search, they will often upload classifications such as the following for paid search tracking codes:

  • Search Engine Name
  • Paid Search Campaign Name
  • Paid Search Ad Group
  • Paid Search Keyword Phrase
  • Paid Search Match Type

While all of this information is critical for the effective analysis of paid search campaigns, there is one limitation of SiteCatalyst that this does not help overcome. That is, the fact that directly within SiteCatalyst, you cannot subrelate by more than one classification to another. Yes, there are classification hierarchies, but the setup for this is in the admin console and is not as flexible as might be desired by many SiteCatalyst users. So, there is a simple solution that most company’s are not using. This simple solution is to create additional classifications that will mimic the ability to subrelate to additional levels of depth. So, in addition to the classifications above, the following additional classifications could be setup:

  • Search Engine Name > Paid Search Campaign Name
  • Search Engine Name > Paid Search Campaign Name > Paid Search Ad Group
  • Paid Search Engine > Paid Search Keyword Phrase
  • Paid Search Engine > Paid Search Match Type

As an example of how this might be used, the SiteCatalyst user could run a “Paid Search Engine > Paid Search Match Type” and then subrelate that to “Paid Search Keyword Phrase” to see a report that would look as follows:

  • Paid Search Engine > Paid Search Match Type
    • Paid Search Keyword Phrase


  • Google > Exact
    • Web Analytics

As you can see here, this mimics the effect of being able to subrelate to a third level. While this is not the perfect/ideal solution until unlimited drill down (without the hierarchy restrictions of the admin console), this simple concatenation of SAINT classifications should provide the users of SiteCatalyst reports and dashboards with more useful information on which to base business and marketing decisions.

Omniture SiteCatalyst Plug-ins

Omniture SiteCatalyst is without a doubt one of the best Web analytics solutions out there. However, like all analytics solutions it be can difficult to implement when you are not a dedicated programmer or you do not have the available programming resources at your disposal. Many times Web analytics and other people that are responsible for the Web analytics function within a company will also not have access to server-side code to implement better page names and to set events and variables when you need to in certain circumstances. And this is where the Omniture SiteCatalyst plug-ins enter the equation.

The primary advantage of the SiteCatalyst plug-ins is that they allow you to implement SiteCatalyst and its more advanced features without the need to touch the server-side code. It should be noted thought that editing server-side code to pass dynamic data to SiteCatalyst is almost always the preferred avenue if it is available to you. That being said, Omniture has created many plug-ins that allow data to be sent to SiteCatalyst so that you can implement by only touching your basic “s_code.js” file that is a part of the implementation. Some of the more useful plug-ins (my opinion of course) include:

  • Append List (s.apl)
    • This function is one of the most useful and versatile for someone without easy access to source code. As an example of how this function might be used, assume that you have a registration confirmation page that needs a success event fired. By using the “s.apl” function, you can write some very simple JavaScript that will detect the Omniture page name and if it is a match, this plug-in will fire your success event. All being coded from directly within the Omniture JavaScript file.
  • Link Handler (there are 3 of these)
    • There are three flavors of the link handler plug-in. One controls clicks on regular links, another controls exit links and the last controls download links. The “s.downloadLinkHandler” plug-in is especially helpful if you want to track all of the PDFs on your site by setting a specific custom event for only clicks on PDFs, while at the same time sending the URL of the PDF into a commerce variable (a.k.a. an eVar). By using these three plug-ins, you can easily begin tracking the clicks of select links on your site.
  • New vs. Repeat Visitors (s.getNewRepeat)
    • The name of this plug-in says it all. By using this one, you will be able to segment all of your visitors and their interactions with your site into behavioral groups for new and return visitors. Very useful when the Omniture prop and/or eVar is correlated or fully subrelated, respectively.
  • Query Parameter (s.getQueryParam)
    • This might be the most basic plug-in, and is a part of almost every Omniture SiteCatalyst implementation that I’ve ever seen. While simple, it is extremely useful. Using this plugin, you can capture the value of any query string parameter and send that value to an eVar or prop. When you couple this plug-in with one like “s.apl” you have an easy way to capture your internal search phrases while at the same time setting a custom success event for internal searches.

These are but a few of the many plug-ins offered by Omniture. There are also more advanced ones such as:

  • Channel Manager (advanced tracking of your campaign data)
  • Cross Visit Participation (provides an understanding of campaign impact across visits)
  • Form Analysis (enables reporting on form errors, abandonment, etc.)

This last few are more difficult to implement in most cases, and you might consider contacting a consultant here.

The plug-ins are one of the most useful features of a SiteCatalyst implementation but are often overlooked. I think that a session on a few of the more advanced plug-ins would be an excellent idea for an Omniture Summit session, don’t you?

Impact of WPP Investment in Omniture

So yesterday there were press releases from both Omniture and WPP announcing their partnership, and the $25,000,000 common stock investment by WPP in Omniture. You can see these respective press releases here (they’re the same really):

I think that this was very big news, and that it will impact both Web analytics practitioners and other vendors alike. As I see it, here are a few (a very short, brief list) of the ways this partnership might affect us practitioners of Web analytics:

  • With Omniture training an additional 500 WPP employees in Omniture technology, the available pool of people with Omniture on their resumes will significantly increase.
  • There might be an internal impact at Omniture on their Best Practices group. Will Omniture keep consulting in house in light of this $25 million investment by WPP? How many Omniture consultants might be asked to leave Orem to work within a WPP company (as was basically stated in the press release)?
  • This could be good for practioners that are savvy enough to realize the impact now, and broaden their skill sets outside of Web analytics alone.

There’s also the potential impact on other vendors:

  • With the large client base at WPP the impact on competitors such as Coremetrics and WebTrends is obvious.
  • The same large client base could also help Omniture in increasing use of other tools such as Test&Target (look out Optimost and SiteSpect), Merchandising (look out Endeca), Discover OnPremise (look out BI vendors), etc.
  • What’s the impact on the many other consultancies out there that help companies with Omniture implementations and optimization?

Please let me know if you have any further thoughts on what the impact of this investment might mean for WPP, Omniture, us practioners of Web analytics or Omniture’s and WPP’s competition.

In closing, here are a few early thoughts on the WPP/Omniture news from some people on Twitter:

WPP Omniture Partnership on Twitter

Campaign Revenue Attribution

One of the most simple questions asked in analytics is, “How much money are we making from our paid search campaign?” The problem is that there are many ways to answer this question, as well as many factors from the Web analytics side that can created different answers.

As a Web analyst working within a team of more traditional SQL-using, data analysts, explaining how an analytics solution answers the above question can be challenging. The 3 primary variables that are a part of a revenue attribution methodology include:

  1. The order with which the campaign credited with the sell occurs in relation to other campaigns
  2. The length of time that a campaign may receive credit for a sale
  3. How attribution is split (or not) among multiple campaigns

As for order, the most common approach is last touch. In other words, if a visitor clicks through your email campaign today and then through your Google ad tomorrow, the Google ad will get all of the credit because it was the last campaign touched before the purchase. The problem of course, is that even though the email campaign was clicked first and might have impacted the sale, the email receives no credit. One alternative to last touch that gets around this is linear attribution. Basically, linear attribution would split the previously mentioned sale 50/50 between the email and the Google ad. But should it really be 50/50? In addition to last touch and linear, you can also have something like first, or original, touch, where the email would get all of the credit. So there are a lot of choices to mull over.

Now that I’ve talked about a few of the methodologies around the order of attribution, the variable of time needs to be added. Using the previous example, and assuming last touch as the order of attribution, how long after coming in through a Google ad should the ad get credit for the sale? Only if they buy within the visit? 7 Days? 30 Days? The most typical solution is 30 days. However, this could very well extend out to months if your Web site is one of lead generation where the sales cycle is weeks or months long. Also, if you send out daily emails, is 30 days really a good choice for attribution? If you don’t have the choice of a custom solution, then 30 days is probably your best bet right now since that seems to be the standard. But, just keep in mind that you might have the option of changing your attribution to any time preiod (or maybe even event on your Web site).

Earlier, I mentioned linear attribution as a method of splitting revenue between multiple campaigns. Aside from this even split among campaigns, there are not many other options out there. This is one of the biggest challenges in revenue attribution. One way around this is to export all of your analytics data by visitor ID for every visit (that’s a ton of data to say the least). Once you have this data, you can create your own methodology to tie a sale back to every visit by the visitor, and every campaign that they touched (and the time between) prior to the sale, all the way back to maybe even the first campaign code ever touch by the visitor. We’ve done this at my current job, and I can tell you that it is not something that is easy to recreate on an ongoing basis.

It would be great if there was some solution on the Web analytics vendor side that would let you create a truly custom attribution methodology. However, the problem there is that if you can customize every aspect of attribution, you might end up creating a self-fulfilling prophecy. What I mean here is that if you want to weight the last touch before a sale as being worth more than the campaign touches between the first and last, then you might be over valuing paid search if that is most often your last touch marketing channel.

So what is the solution?

As far as I am concerned, it is short sited to value everything as last touch. You can’t just ignore the fact that other campaigns have in someway influenced/impacted your visitor prior to making a purchase. To ignore this is to miss out on understanding and optimizing your marketing efforts from beginning to end. So, ditch last touch (in a perfect world, if you can).

Next, you’re going to need to create your own solution as to how to tie all of the different campaign touches together and appropriately attribute them to the sale. This is an easy thing to say, but not so easy to do obviously. In a later post I will try to flesh out an idea to actually do this.

Do you have any ideas as to how to improve upon existing ideas of revenue attribution? If you’re doing something custom yourself, let me know about it.

Programming and Web Analysts

Now that Omniture has APIs and WebTrends is doing more sophisticated things with their tools that have ODBC connections, I was thinking, should we Web analysts consider adding to our skill set? Primarily, should we begin to add programming abilities to our skill set? Things like APIs are great, but only if you have the ability to create applications that access these APIs. Should we Web analysts start learning languages like PHP, SOAP and XML so that we can create our own applications?

Also, most popular Web analytics technologies are based upon JavaScript (from the implementation side anyway). So, a better understanding of JavaScript would most likely benefit us all. A better understanding of JavaScript alone could open some doors for better Web analytics opportunities for those not already proficient with JavaScript.

I think that we Web analysts should be immersing ourselves in programming so that we become more than just analysts and the users of tools like Omniture, GA, WebTrends, etc. I for one will be trying to pick up the following skills in 2009:

  • PHP/SOAP – for the purpose of programming with Web APIs and creating new applications for analytics and online marketing
  • JavaScript – I’m already decent with JS, but would like to be able to do some more advanced things for analytics
  • SQL/MySQL – for the purpose of querying Oracle, SQL and MySQL databases

Are their any other skills that you think would benefit Web analysts? What additional skills are you trying to pick up on your own this next year?

Omniture API Development Contest

With all of the APIs that are out there for Google, Facebook, Twitter, etc., I can’t say that I surprised to see that Omniture has now started a contest to see what creative developers can do with the Omniture APIs. I received an e-mail the other day that stated that the first prize would receive $10,000! That’s right, $10K. The interesting thing here is that the deadline for entry into the contest is some time in early February, before the 2009 Summit, where the winners will be announced. Not a lot of time to develop something new if you haven’t already started.

I think that there’s a real opportunity here for some developers given the short time frame and what I would think would be a limited amount of competition. Developing something like this and winning a prize for it would also be a great career booster and way to get noticed for the use of product APIs in a Web 2.0 crazy world where every other developer on the planet has created some kind of Twitter application! Man, I’ve got to get back into some programming so that I can start using these APIs myself!

Omniture Dashboard Speed & Dates

This post is just to note a couple of things that I have discovered recently about Omniture dashboards. I hope that this might be of help to some of you that use Omniture.

Faster Omniture Dashboards

File this one under what is most likely common sense. But, I have seen many Omniture SiteCatalyst dashboards take forever and a day to run, or you will see the “unable to retrieve data” message. I at first thought that this might be due to the fact that I had seen this most often on dashboards for Omniture variables that were using 20 – 30 classifications. Maybe using that many classifications slowed everything down? But no, it was really just because of the number of metrics that we had for each reportlet. I tried recreating dashboards with only revenue, and voila, the dashboards ran in no time. The down side here, is that a dashboard is only so useful if it has a single metric. If you are experiencing problems with slow dashboards, you might want to try and reduce the number of metrics in your reportlets (maybe to just two or three) until it runs in a reasonable amount of time. The addition of calculated metrics is also a significant factor in slowing down or killing Omniture dashboards. Of course if the dashboard is automated via email, you can add everything you like, and the whole thing will get emailed perfectly fine.

Omniture Dashboard Dates

Just another Omniture dashboard experience that I thought I’d share. We have several dashboards that are setup so that each reprotlet might be reporting on ranked data for the last 30 days. Last 30 days was chosen since a current month would not be all that useful on the first of the month. One of the great advantages to dashboard in SiteCatalyst 14 (as opposed to earlier versions), is that you can change the date for all reportlets in a dashboard at the same time. This makes the dashboards much more useful. So, someone requested the executive dashboard for a custom date range. Knowing that you can do this in SiteCatalyst 14, I changed date range to the custom one requested. Everything ran great, so I sent the dashboard to the person via the email function within SiteCatalyst 14. However, the dashboard that the person received was stuck to the default of last 30 days in which the dashboard was originally created. So, just be aware that while you can change Omniture dashboard dates to custom ranges, the email results will be the default of the dashboard in the way that it was created. I confirmed this with Omniture, and it is not a bug, but just the way it was designed.

New Google Analytics Features – First Impressions

So I have access to the new updates to Google Analytics now. My first impressions of the updates are very positive. The two big additions (aside from the API) are the custom reports and segmentation.

The custom reporting actually went a little beyond my expectations. The big thing here that Google has done is that you can create reports that are very deep (4 levels or so) and that you can correlate across different report dimensions easily. Now Google just needs to implement more variables and events to take this to the next level.

The segmentation works well too, but it’s a little clunky in it’s setup. Here, I like the buckets that you start with in Omniture’s Discover. The creation of a segment seems a little more intuitive when starting from the idea of a visitor, visit or page view.

I do think that with the additions of the custom reporting and segmentation that Google has become more of a serious option for larger businesses. 

Omniture Launches Developer Connection & Discover API

Okay, I’m not trying to make this an Omniture blog, but they keep releasing products/services and acquiring companies at startling rate the last few weeks. That being said, I received an e-mail from them this morning about launching a beta of something called the “Omniture Developer Connection.” At first glance, this appears to be just a repository for documentation on Omniture’s Web services. One BIG thing that I did notice, is that:

There is now a Discover API and accompanying documentation!

This is great to see, and I hope that Omniture gives some more attention to this new API. I would like to automate some Discover reporting, and an automated CSV file isn’t the most elegant way to accomplish it.

This site (that requires Omniture login credentials) also contains forums for developers as well as a library of code examples that can be contributed to by developers. Right now though, there are no posts in the forum (aside from the admin) and there’s only one code example.

Here’s the announcement e-mail from Omniture:

Announcing Omniture Developer Connection (BETA) 

The Omniture Developer Connection is here—a community Web site designed to help our customers build applications  that use their Omniture data. Found at, the Developer Connection allows our customers to:

  • Use Omniture SiteCatalyst data across third-party applications, such as an intranet or a company-branded application
  • Access SiteCatalyst reporting data to create calculated metrics, or format the data to meet specific internal needs
  • Use the data collection API to facilitate the integration of SiteCatalyst with applications that cannot be easily tagged with JavaScript

In addition, Omniture Developer Connection contains:

  • Documentation of Omniture’s application programming interfaces (APIs)
  • Sample code showing reference  implementations to give developers a head-start in developing their own applications
  • Discussion boards and blogs to provide peer-to-peer support among those building Omniture-driven applications

Please pass this along to the appropriate development team within your organization. For additional detail on the Developer Connection, a list of Frequently Asked Questions is provided below: 

1. When is the Developer Connection available?
Omniture will be releasing the Developer Connection in beta on
October 17, 2008.

2. Who can access the Developer Connection?
The Developer Connection and Omniture APIs are accessible to Omniture customers with a SiteCatalyst login.

3. What are the Omniture APIs?
The Omniture Web Services API provides programmatic access to Omniture SiteCatalyst administration, data insertion, Omniture Data Warehouse and reporting functionality. The Web Services API is built using SOAP, which allows developers to use any SOAP development toolkit to start developing applications. The data insertion API is built on an XML-based schema, allowing developers to easily and quickly send data and begin testing integrations with the system.

4. How do I access the Developer Connection?
Customers can use their SiteCatalyst login information to access the Developer Connection at
5. What is the best way to start using Developer Connection?
A Getting Started guide (for users with a SiteCatalyst login) is available to assist new users through the process of learning the prerequisites, enabling the Web services APIs, and testing and authenticating newly developed applications. The guide is available under the ‘Getting Started’ tab in the portal.

6. Does Developer Connection include API documentation for all products in the Omniture Online Business Optimization suite?
Currently, API documentation is available for SiteCatalyst, DataWarehouse, Discover reporting, and SearchCenter. Additional API’s will be added in the future. 

7. How should Beta participants provide feedback regarding the Developer Connection portal? 
We will be monitoring the community blogs and message boards and encourage customers to provide us feedback there. 


Your Omniture Team