The One Content Group You Should ALWAYS Have

There’s one particular Content Group definition that everybody should have. It should be in every Content Groups report.


There’s one Content Group definition that we put in every single profile and that’s what this post is about – what it is and more importantly why it’s wonderful.  This particular Content Group just shows how many visits there were, overall.   We call it “Overall Visits” and its definition is simply an asterisk.  If somebody’s visit contained one page or a hundred, it will count as 1 visit here.

We load up our Content Groups reports with important site events all the time, which you probably do as well.  It’s so easy to make a Content Group that shows, for example, how many visits saw any variation of a form submittal acknowledgement page, or any kind of contact with customer service, or any mailto: event.  An of course there’s nothing preventing you from making a Content Group that consists of just one page … such as the purchase thank-you page or even just the home page. As we’ve said in other posts, Content Groups rock.

You might ask, why bother when you have the Overview Dashboard and other places where Visits are counted up?

Well, think about the value of having it right there in the Content Groups report.  By slapping the Content Groups report into Excel, you just have to add one formula that divides each Content Group’s visit count by the “Overall Visits” count, and you get “percent of all visits to the site that included this content group.

In the screen shot below, all I did was copy directly from the Content Groups report screen and slapped it into Excel, then added a calculation column (in blue).    48% of visits saw the special offers content.  26% printed a coupon.  Only 21% got to a product detail page.  And so forth.

Anything contentgroup80

This is the one content group that deserves to be set up as Global when it’s first created.  Globality is a check box on the first configuration screen.

Fixing (some of) the problem of self-referred visits

Seeing your own site at the top of the list of Referring Domains? It’s a problem that’s helped by understanding it, and making some statistical adjustments.


My heart sinks whenever I go to a Referrers report and see my site itself in one of the top five positions – I’m my own referrer.   What’s happening is probably that a lot of visits are being broken into pieces, each piece being counted as a whole visit.   The first piece gets credited to the true referrer.  The second piece gets incorrectly credited to the site itself as the referrer.

Why do visits get broken up?  Usually because the visitor has stopped being active for more than 30 minutes.  When and if that pause happens, Webtrends (and most other analytics programs, by the way) closes the books on the first chunk of the visit, declaring it complete and finished.  Then Webtrends starts recording the post-pause activity as a separate visit.  (This is not part of the data collection process so it can’t be fixed with SDC tag changes.  It’s something the tool does when it is analyzing the data.)

These broken visits create all kinds of havoc in the statistics.

  • Visit count is higher than they it really is.
  • Visit length is lower than it really is.
  • The visits-per-visitor number is higher than it really is.
  • Overall conversion is under-estimated (because the visits denominator, above, is inflated).
  • Referrers are not being given credit for all their conversions.  A conversion usually happens toward the end of a visit, so in a broken visit it’s likely to be recorded as part of that second chunk of the visit, and the original referrer is no longer associated with it in the reports.
  • Exit Page reports give higher ranks to pages where pauses happened.
  • Entry Pages reports give higher ranks to entry pages that are, actually, just resumption points when the person starts clicking after the pause.
  • The visits-per-visitor number is higher than it really is.

This blog post is about this kind of split visit and what to do about it.  There are actually a couple other reasons for seeing your own site in the Referrers reports, but we’ll talk about those in another post.

If you want to reduce the effects of this split-visit phenomenon, you have two choices:

  1. (This is available only to On Premises users)  Change the session termination point that Webtrends uses from 30 minutes to something much longer.In the past, I’ve gone through the exercise of re-analyzing the same data with longer and longer timeouts, trying to find a setting where the visits number starts to look accurate enough to live with.  I wanted to find a balance between “long enough that the visitor is probably resuming the visit and still has the same mission in mind” and “long enough that the visitor is really starting a new visit with a new mission”.Without going into all the logic I used to get comfortable with my choice, I settled on 120 minutes for the site I was looking at.  This fit with my own idea of what the visitor was probably thinking, and also what the stats were telling me … i.e. the curve of visit count had reached an inflection point and further lengthening didn’t make much difference.Of  course, different sites will have different definitions of “long enough …”. for example probably should count something as a new visit if the pause is longer than just a couple minutes, if they feel that looking up a new word is a new visit mission.I should re-state that changing the timeout is possible only with On Premises.  If you want to try it out with your own Webtrends On Premises, create a new profile and edit the Options > Session Tracking section.  Clone the session tracking method you use and change the “Session Termination Time Frame” in the General tab.
  2. The second way of reducing the impact of split visits is to adjust the numbers.  This is your only option for On Demand (or Google Analytics, SiteCatalyst, and so on)  Below is how we do it for the seven data problems described above.
  • Visit numbers are inflated, as described above.From the total visits number, subtract the number of visits attributed to your site as found in the Referring Domains report.
  • Visit length is deflated.Convert the Average Visit Length to seconds and multiply by the total visits number (to get the total number of visit seconds).  Divide by the corrected visits number from the previous point.  Convert back to minutes.
  • The visits-per-visitor number goes up artificially.Divide the corrected visits number by the number of visitors reported by Webtrends.
  • Overall conversion is under-estimated (because the visits denominator, above, is inflated).Obtain the total number of conversions in any of several Webtrends reports and divide by the corrected visits number.
  • Referrers are not being given credit for all their conversions.Can’t do this one, sorry, unless you want to change the code of your site to put the referrer into a session cookie that gets read and reported back to Webtrends on the conversion event.  The session cookie’s needs to have a life longer than 30 minutes, obviously.
  • Exit Page reports include too many hits where pauses are counted as exits.Make a custom Referring Pages report that includes ONLY visits that are have your own site as referrer.   For each Referring Page in this report, subtract its Visits number from the same page in the original Exit Pages report.
  • Entry Pages reports get bloated with entries that are, actually, just resumption points when the person starts clicking after a long pause.Make a custom Entry Pages report that includes ONLY visits that are have your own site as referrer.   For each Entry Page in this report, subtract its Visits number from the same page in the original Entry Pages report.

Simplifying a Many-Valued Dimension: Make Buckets

Collapse thousands of report rows into a few buckets with the lookup table capability.

Sometimes there are too many rows in a dimension and you wish you could collapse them into groups.  As an example, the Cool Report in our  post on Browser Window Height produces as many as 20,000 rows.  That’s one row for each possible browser window pixel height.  The only way to make sense of it is to dump it into Excel and subtotal.

But — you can define your own groupings for a dimension and have Webtrends do the subtotaling.

It can make the difference between this loooong list:

and this short summarized one:


All you have to do is take the list of possible values and create a lookup file that Webtrends will use to dump each original value into a bucket.  Each bucket can contain as many of the original values as you want (well, there are limits, but they are big ones, see below).

The point is that the bucket names, not the original values, will appear in the report.

The lookup table can be a text file or an Excel csv.  In either one, each original value gets one line.  In the examples below,  the original values are 1, 2, 478, and 479.  The bucket names are 1-100 and 401-500.

For a text file, put a comma between the original value and what you want the bucket name to be, like this:

In the above, values 1 and 2 get put into the bucket called “1-100” and values 478 and 479 will appear in the row labeled “401-500.”

For an Excel csv file, put the original value in column A and the bucket name in column B, like this:

A few important details:

  • Note that although our values 1, 2, 478 and 479 are technically numeric, they are being treated like text.  And, of course, this is a dumb little example.  If you were really trying to get 20,000 different browser height values into buckets, you’d have to produce a file of 20,000 lines.  Yeah, I know, inconvenience.  That’s why they call it “W-O-R-K”!
  • Be careful about commas — the divider comma should be the only comma in the line
  • Use a header if you want so later you’ll know what you did.  Format it exactly the same way as individual lines.  In our example, the header could be “Browser window height, Browser height bucket”
  • Characters must be ASCII … not extended ASCII, but regular strict ASCII
  • It’s a good idea to have a blank line at the end of text translation files.  This isn’t necessary with an Excel csv file
  • Wildcards and regular expressions don’t work.  Sadly.
  • Express Analysis and RealTime will not execute these translations.
  • The saved text file should be ASCII, i.e. “UTF-8 without BOM (Byte Order Mark)”.  Notepad and Textpad work great for making these files, and you can leverage Excel to create the text files if you copy from Excel and paste into Notepad or Textpad.  You can also save Word files as ASCII, but I strongly suggest you peek at the saved file with Notepad or Textpad before deciding you’re done.
  • Although our example is a simple two-column one, you can have up to twenty-six columns in all.  When you set up a custom dimension, you get to tell Webtrends which of the 25 “translated” columns you want to use in that report.  There is no limit to the number of rows, as long as your file is not larger than two gigabytes.  That’s a lot of rows.
  • Once your file is live, you can use WinSCP or other FTP-related programs to change the content of the files, i.e. add new rows or even replace all the contents.

Once you have your file created, put it where Webtrends can find it

  1. For On Premises, you’ll have access to the server so just  create a location for it.  I have a folder called “translation files” in the /datfiles folder.  Since your installation is yours and mine is mine, check your own installation.  A good starter URL common to many Webtrends installations is <drive:>\Program Files\Webtrends\storage\config\wtm_wtx\datfiles\<filename>
  2. For On Demand, use WinSCP to put it in an SFTP folder.   (Get an SFTP login from Webtrends tech support.)  The File protocol is SFTP, the Host Name is, Port number is 22.  You should see, or can create, a “Lookup Tables” folder once you have signed on.  Put the file there.

Next, tell Webtrends where this file is.

  1. In the Admin Console, go to Web Analysis > Report Configuration > Custom Reports > Lookup Tables.
  2. Create a new entry in the Lookup Tables list.
    1. For On Premises, give it a name, use type “file” and enter the address of the file (for example, .\wtm_wtx\translation files\filename.ext
    2. For On Demand, give it a name, specify the delimiter (“comma” in our simple example), and Save.
    3. The next step for On Demand is:  contact tech support (phone at 503 223 3023, or enter a support ticket in your support portal).  Tech support has to be involved to get the final connection to happen.  You’ll need to give them the exact name and location of the file.  They’ll put in a request to the back room people and within a few hours (we hope) the connection will be final.  In addition to getting an email about it, you’ll know by looking at the “Source” column in the Lookup Tables list, which will no longer be empty.

Next, turn the lookup into a custom dimension.

  1. In the Admin Console, go to Web Analysis > Report Configuration > Custom Reports > Dimensions and create a new dimension, giving it a name and so on.  When I have a translated dimension, I make sure the new dimension’s name says so.
  2. In the “Based On” screen, specify the original dimension, before translation, as if you were going to produce an unbucketed report.
  3. Click on the Advanced button
  4. At the bottom of the Advanced section, there’s a place for “Translate substring retrieved above.”  It’s not the clearest language in the world, but that’s where you should be.  Check the box, then choose your table from the dropdown list.  The Key Column should be A and the Value Column should be B in our simple 2-column example.  (If your table doesn’t show up in the dropdown, go back to the previous step “Tell Webtrends where the file is.”)

Finally, use the custom dimension in a report.



If you run into snags, there are several WebTrends Knowledge Base articles that can help you.  Go to the Knowledge Base ( and enter “translation file” in the search box.

Here’s a sneaky way to stay ahead of the curve so you can get these to happen immediately when you need them.  Create a few dummy lookup tables and go through the process of activating them.  Don’t use them until you need them.  When you want lookup capability in a hurry, without waiting for Tech Support to do the activation thing, just edit one of the dummy files and replace the dummy content.  I don’t know if you can rename the file – never tried it.





Webtrends Content Groups – If You Don’t Already Know About Them, Read This

WebTrends has a feature called Content Groups, which is simply the ability to glom together groups of pages and treat the groups as reportable entities. The concept is so simple that a lot of people just file it under “uh huh, got it” without thinking about what it can be used for. It’s actually one of the biggest little features available, versatile and powerful.


WebTrends has a feature called Content Groups, which is simply the ability to glom together groups of pages and treat the groups as reportable entities.  You can define and name content groups in the admin interface – no need to change tags or page code!

If you can report on Pages, you can do the same kinds of reports with Content Groups.

The concept is so simple that a lot of people just file it under “uh huh, got it” without thinking about what it can be used for.    It’s actually one of the biggest little features available, versatile and powerful.

Content Groups represent the opposite of the report granularity that gets touted and tooted all over the place.  Content Groups do NOT allow you to drill down to the littlest sub-detail.  Content Groups are used for drilling UP to the big picture.

Content Groups can be  hard-coded into each page, in the WT.cg_n parameter.  But far more valuable is the ability to build them right in the interface.  You can make as many as you want and change the definitions whenever you want.

Here are some ways to use content groups:

  • Turn each of your KPIs into a content group.
    • Then use Content Groups as a secondary dimension in custom reports.  For the first dimension, use visit segmenting dimensions like new and return visitors, paid search keyword groups, referring domains, or entry pages.  The resulting report will show, for each segment, the KPI activity for those visits.  As one of our astute readers, Boston Matt, has pointed out, it acts like Google Analytics’ Goals.
    • Or use Content Groups as a primary dimension in custom reports that have important kinds of filters.  One interesting filter is based on search terms, and includes only search terms that are brand terms.  Another would be its flip side —- all search terms that do not contain brand terms.   If you’ve been paying attention to your search terms, you probably can think of quite a few subgroups that you’d like to examine for KPI activity.
  • Define each vertical silo on your web site as a content group (leaving out the home page and other non-silo pages), and look for:
    • intensity within each silo (pages per visit, or pages per visit as a proportion of available pages in the silo)
    • degree to which visits contain more than one silo within a single visit (sum of visits to individual content groups, divided by number of visits to the site) – do you want people to visit more than one silo?
    • general proportionality (each silo’s visits or page views as a percentage of the total) – is it what you’d expect or want?
    • back-and-forth between silos (use Content Group Paths from Entry) – are visits staying entirely in a silo or flipping back and forth between two of them in a way that suggests confusion or perceived overlap?
  • Put each horizontal level of your site into a content group, from the most general down to the deepest most visitor-committed level, and treat the collection of content groups as a funnel:
    • how many visits get to each depth point in your site?  Does it vary by source segment, or by entry page?  Which entry page or segment produces the largest segment of deep visits?

Here are some tips and details:

  • A content group can be just one page.  It doesn’t always have to be a set of pages.
  • You can use tags or the admin interface to make content groups, as said above.  We favor the UI because you can make new ones or adjust existing ones whenever you want.
  • However, although you can change the definitions all you want, beware of changing the name.  Doing so can empty out Content Group reports.  So don’t even think about it.  If you wanna change the name of a content group, it’s a lot better to clone the existing definition, change the name, save it.
  • If a content group is a collection of pages, a “visit” to that content group means “a visit that included any of the pages in the group.”  If the visit hit ten different pagebs, all in Content Group A, the Content Groups report will display that activity as 1 visit, 10 page views for Content Group A.
  • It’s handy to define one universal content group that will give you, in the Content Groups report, the total visits and total page views for the whole site.  You can get the same thing from the Overview Dashboard, but with a Universale content group in your CGs report you don’t have to flip back and forth.   The definition of that content group can be “*”.
  • If you have a reasonable number of mutually exclusive content groups the Content Group Paths From Entry report is probably going to be really interesting.  “Reasonable number” means no more than five or six.  “Mutually exclusive” means no page can be in more than one content group – otherwise you get mush for results.
  • As a dimension, Content Groups is a HIT dimension, not a visit dimension.  You can’t have it as a primary dimension and something like new vs returning visitors as a secondary dimension.  See more on these restrictions here.
  • If you want Unique Visitors stats for content groups, you have to collect the Content Group of Interest parameter in each hit in the content group, and when analyzing you must have Visitor History for Content Groups turned on.
  • If you want a content group drilldown report (content groups and content subgroups) you have to define them with parameters – WT.cg_n and WT.cg_s respectively.  I have no idea why WT doesn’t have this in the user interface definition capability.
  • If you want Unique Visitors as a measure for content group reports, WebTrends requires they be defined using the WT.cg_n parameter (and a special switch in the Visitor History toggle set).

We’ll have more posts on specific Cool Custom Reports that use content groups.

Bounce visits – How Long Did They Stay On The Landing Page?

Is a single page visit always a bounce? What if the visitor spends a lot of time on that page? Get an estimate of single page visit length with a bit of extra code.

One obvious reason is that you can’t really correlate the length of time with actual visitor attention, even if you do have good numbers about how long the site was on the screen. The less obvious reason is that the numbers just aren’t very good to begin with. But if you really want to know how long people spent on a page for a single page visit, you might want to look at the following “pulse” code.


If somebody spends a minute and a half on a landing page, then leaves, would you really call that a bounce?  It’s long enough for them to have read a lot of content.  They might have been engaged.

Maybe you should adjust your bounce rate to include only people who spend less than 20 seconds on that page. Or 10 seconds.

Unfortunately, a single-page visit has no “length” in out of the box Webtrends, because page view time is calculated as the difference between the time that page was requested and the time the next page was requested.  If there’s no next page, there’s no way to calculate time for that page.

However …. If you really want to know how long people spent on a page for a single page visit, there is a way.  Look at the following “pulse” code.  In this example, the code fires the SDC tag every 10 seconds up to 3 times.  The result is logs containing hits that look like this:


Here’s the code.

var interval = 10;
var maxcount = 3;
var pgtimer = 0;
function pgtimer() {
    if (typeof(window["dcsMultiTrack"])=="function"){
        if (
        if (pgtimer<(maxcount*interval) setTimeout("pgtimer()",interval*1000);
if((typeof(pgtimer)=="function")&&(document.referrer.indexOf(<0) setTimeout("pgtimer()",interval*1000);

The javascript code will continue to “pulse” until the maxcount is hit as long as the page is still open in a browser.  The code is pretty basic.  It can be enhanced, for example, to only execute on the first page view of a visit.

Note that the code requires the dcsMultiTrack function to also be available on the page.

You *don’t* want to put this on every page on your site because it will fluff up your log files to an extreme degree.

Placing it on a critical entry page, and possibly setting it to execute only one time after a decent interval, might be all you really need.

For example, here’s a Cool Custom Report that shows how many single page visits to your home page lasted less than 10 seconds.   Add the script to your home page and set the interval to 10 and maxcount to 1.  Any home page view shorter than 10 seconds won’t have the elapsedtime parameter, while views longer than 10 seconds will have the parameter.  You’ll have to create two custom report visit-type filters:

  •  a custom report visit-type filter with two match criteria (must match “all”):  visits of length 1 page, and entry at home page
  • another custom report visit-type filter that excludes visits where the entry page contains the “elapsedtime” parameter

The dimension for this report can be anything you want, and the measure should be “visits.”