Every December, at the Omniture holiday party, spouses, partners, and dates of employees get a crash course in the value of some of our products, courtesy of a “segmentation game.” Everybody stands up, and the emcee (CTO Brett Error) reads from a list of criteria and instructions, such as, “If you have a five-dollar bill on your person, please sit down,” or “If you have ever been told that you look like a celebrity, remain standing; everybody else, sit.” (When you’re asked to sit down, you’re out.) The idea is that eventually, through this sometimes bizarre and always humorous segmentation, the group of a couple thousand is whittled down to one winner.

My wife is not a web analyst, marketer, developer or IT professional. For her, the game is a welcome introduction to the idea that businesses need to be able to break apart their online data to focus on key groups and demographics. SiteCatalyst offers segmentation functionality, often through the use of correlations and subrelations, but the real powerhouses of segmentation in the Online Marketing Suite are Data Warehouse, Discover, and ASI. Since most readers of this blog do understand the concept of segmentation, and why it is critically important to online business optimization, I’d like to dive a little bit deeper here and explain exactly how to build a couple of commonly used segments to illustrate how this process works.

Some background

If you haven’t read Adam Greco’s post on segmentation, I highly recommend it. Especially important is the following explanation of segmentation “containers”—Page Views, Visits, and Visitors—

  1. Page Views – Dragging a Page Views container to the segment canvas will allow you to define which Page Views you would like to include or exclude from the segment. When evaluating the Page Views container, Omniture is, in effect, scanning through each page view it finds within the specified time frame and deciding whether it should be included or excluded. Therefore, it may be the case that two different page views from the same visit may or may not be included in the segment. For example, let’s assume that you are building a segment where you only want pages where the language was Spanish. It may be the case that a visitor viewed ten pages during their visit, but only two of those ten were viewed in Spanish. Using a Page Views container, would mean that only these two page views would be included in the segment.
  2. Visits – Dragging the Visits container to the segment canvas will allow you to define which visits you would like to include or exclude from the segment. When evaluating the Visits container, [the tool] is, in effect, scanning through each visit it finds within the specified time frame and deciding whether the entire visit should be included or excluded. Therefore, if any of the criteria are met within the Visit, all data from that visit will be included (or excluded if using the exclude tab) in the segment.  Using the preceding example, if the segment looking for pages viewed in Spanish were built using a Visit container, the entire visit would be included since at least one of the pages was viewed in Spanish (even though the majority were in English).
  3. Visitors – Dragging the Visitors container to the segment canvas will allow you to define which Visitors you would like to include or exclude from the segment. When evaluating the Visitors container, Omniture is, in effect, scanning through all data it has for each Visitor within the specified time frame and deciding whether at any time the visitor met the criteria. If it finds that the visitor has met the criteria, all Visits and Page Views for that visitor will be included in the segment.  Continuing the preceding example relating to pages viewed in Spanish, if a visitor had six site visits within the specified time frame and in one of those visits viewed at least one page in Spanish, data from all six visits would be included in the segment.

Here’s a visual representation of this:

Visualization of Omniture segmentation

(I made it myself; can you tell?) If I were to segment on value A using the Page Views container, I would get the two page views containing “A” in the first visit shown above. If I were to segment on value A using the Visits container, I would get the five page views in the visit where “A” exists. And if I were to segment on value A using the Visitors container, I would get both visits, because the visitor did have a value of “A” at one point.

An extremely high percentage of perceived issues that I’ve seen involving the reports returned by Data Warehouse and ASI are based in a misunderstanding of containers. Admittedly, they are complex and difficult to explain. Adam did a great job clarifying exactly what scope of data is returned by each container. Users always need to consider this scope when building a segment; do you want the visitor’s entire history, or just a relevant piece of it? Do you want all of the page views in a visit to be included, or just a portion of them?

Campaign Attribution

Pulling conversion data for a campaign tracking code seems straightforward enough. Most people probably define the segment as visits where tracking code equals/contains [value]. This is certainly a valid option. However, some users are frustrated when the resulting reports contain data for tracking codes that do not match the segment. Some variation on the question, “If I specified tracking code XYZ, then why am I seeing conversions tied to tracking code ABC in my report?” has been asked of me literally dozens of times. The answer is that the visit container includes all data from any visit that matches the segment. You may have specified tracking code XYZ, but both tracking codes were ever passed during the same visit, then you will see both in your report. That might be really valuable to you; it shows which campaigns are clicked during the same visit as your target campaign. But in the event that you want to kick out any page views within the visit that don’t pertain to your desired tracking code, use the Page Views container to include page views where tracking code equals/contains [value]:

A Single-Page Visits segment

You may be thinking, “Won’t this only include the page views where s.campaign was set? What if I want to include page views where conversion occurred so that this data can be tied back to the tracking code?” The segmentation tools are smart enough to include all page views where the given value was passed or where it persisted from a previous page view. So using the page view container will include all page views tied to the tracking code, including those on which conversion happened.

Note that you can use “tracking code is greater than or equal to [exclamation point]” to include any tracking code in the segment. The “greater than or equal to !” statement means “is not null” or “has any value at all.” (Conversely, “less than !” returns only data where there was no tracking code.) However, keep in mind that the principles discussed above are still relevant. If the user’s visit contained some page views where there was no tracking code, and you segment for visits where tracking code is not null, the page views where there was no tracking code will also be included.

Accurate visit/visitor counts in any container

Users often choose the visitor container thinking that it is the only way to get an accurate unique visitor count (or the visit container to get an accurate visit count) for the segment. This is untrue. Segmentation using the Page View container is often the most direct way to answer the given question, and it will return correct visitor and visit counts. Data Warehouse doesn’t need all of the data from a user visit in order to attribute a visit to a variable value. For example, if you’re segmenting using the Page View bucket for rows where eVar1 equals “Blue,” and request the visits metric, you will get a certain number of rows where eVar1 equals “Blue.” Data Warehouse then examines the visitor data for those rows and calculates the number of visits by finding the unique visitor ID and visit number combinations. The number of visits will not be higher using the visit container with the same segment definition, because the number of unique combinations will not be any different (and the same holds true with the visitors metric).

Conclusion

Let’s call this an early chapter in the book on segmentation in the Omniture Online Marketing Suite. I recognize that this post may introduce a number of questions for some of you, and that’s okay. Please let me know what questions or concerns you have, and I’ll address them in follow-up posts. As nerdy as it may sound, I love segmentation, and I would be happy to explain any of this further. As always, you can contact me via Twitter, FriendFeed, LinkedIn, or by e-mailing omniture care [at] omniture dot com.

And for the record, I’ve never been told that I look like a celebrity, so if anyone can suggest one to whom I bear even the slightest resemblance, please let me know; it might help me win the segmentation game this year.

8 comments
John Christmas
John Christmas

These online data analytics are great tools for analyzing all these online traffics especially for campaign tracking.

Mark
Mark

If I’m tracking the bounce rate for a page that loads, then automatically cycles to other pages every 4 seconds (via s.t function) before returning back to the original page: Would I still be able to track bounce rate for that first page visit by using [Single Page Visits / Entries ] since by default the page begins to cycle to the next page? If not do you have a recommendation for an Advanced Segment calculation that would accurately determine bounce rate from a dynamic page like this?

Abraham
Abraham

Hi Ben, fantastic post. Really useful info. I have a question about using segmentation in Discover - if i want to segment my visitors for the site minus one channel or content section, but i only want to exclude unique unique visitors for that channel or content section (so only exclude visitors who went to a particular channel or a content section and not to any other part of my site, how could i do that? thanks.

Shawn
Shawn

What about Joshua Jackson? ;)

Rudi Shumpert
Rudi Shumpert

Thanks for this article! I set up my first ASI slot using this guide. -Rudi

Ben Gaines
Ben Gaines

I suppose the answer depends on how you want to define "page" in this instance. It sounds to me like each of the different pages in the cycle have their own page name. I'm going to assume that this is the case. If you're asking, "What percentage of users see any of these pages and then leave before it cycles to the next page?" you can do that using the normal [Single Access] / [Entries] calculation in SiteCatalyst. You'll want to isolate the pages that are part of the cycle and view this bounce rate calculated metric to see how sticky the individual elements of the cycle are. On the other hand, if you're asking, "What percentage of users see all (or some subset) of these pages and then leave?" I would recommend using an ASI slot. You would define the segment as something like "include page views where page equals A or B or C or D, exclude visits where clicks to page is greater than 1." Let me know if this is unclear at all, and I'll be happy to clarify.

Ben Gaines
Ben Gaines

Thanks for the kind words, Abraham! To answer your question, it's difficult to exclude visitors who viewed only viewed a certain channel value. There is a Path Length criterion that can be used to isolate single-page visits, but it doesn't work as well for single-channel visits. I'll keep thinking about this and will let you know what I come up with! And if anyone else has any suggestions, please share.

Ben Gaines
Ben Gaines

Joshua Jackson is a great suggestion. . . although my wife and I watched Ocean's Eleven last night, and he's in the scene where Rusty (Brad Pitt) is teaching the celebrities how to play poker. In that scene, at least, I didn't see a resemblance. Oh well. All I needed was for someone to try to make the comparison. Now I'm prepared for this year's contest, should that question come up again! :)