Web Analytics: It’s About Process

December 20, 2006 by Justin Cutroni

Manoj Jasra asked me to write a small piece about the most common web analytics ‘pain’ that many of my clients feel. Thanks Manoj for the invitation! I’m honored that you asked. If you haven’t read the post you can find it here: Identifying & Solving Client Pains: Part 2.

Sure, many of my clients complain about data, specific KPIs and reporting. But I think those are common complaints that everyone hears. I think the biggest challenge my clients face is integrating web analytics into their standard business process. That’s right, I try to change the way my clients do business. What? You don’t know what this has to do with web analytics? Read on…

Web Analytics: The Process
Business Process
We all know (or should know) that web analytics is a process. I’m not sure who first talked about the process (it was probably Jim Sterne or Eric Peterson) but it’s a pretty simple process that almost always involves the following steps:


  1. Collect lots of data
  2. Analyze the data (look for problems)
  3. Create a hypothesis as to why a problem is occurring
  4. Test solutions for your hypothesis (what’s the best way to fix the problem)
  5. Implement change (the best solution discovered during testing)
  6. Repeat
  7. Make more money

The process must be fully implemented to work. For example, if you don’t test a hypothesis how will you know what solution is best for your problem? Each step is vital.

I believe that the above process must be integrated into an organization’s standard operating procedure. If it is not integrated then web analytics does not drive growth, it simply puts out fires. Here are some other thoughts as to why the process needs to be adopted:

  • Accountability: By creating a process it is easy to identify what gets done and by whom.
  • Scaling: Once the web analytics process is defined as standard procedure it can be staffed, managed and expanded.
  • Credibility: If web analytics is simply ’something that Bob does as part of his job’ then it will never be recognized as a driver of change no matter how good Bob is.
  • Protection for the company: What happens if Bob leaves the company? Who takes over and how do they come up to speed? If Bob follows a well defined process that is part of the standard operating procedure then it is easier to replace him. He becomes a cog in the proverbial machine. :)

How we do it

When we engage clients it’s for a specific amount of time (usually 6 months). During this time we have two goals. First, we want to deliver value using web analytics. We perform a number of small projects that focus on some type of optimization (SEM, SEO, email, etc.). Each of these projects is simply the execution of the web analytics process. We just change the focus of that process from month to month depending on what we’re trying to optimize.

Our second goal is to educate the client. This is where the organizational change comes in. We want the client to see that web analytics is a process that they can do. I believe that it is in the best interest of the client to adopt the process for the long term. We want all of our clients to use web analytics long after we’re gone.

What you can do
parent-0684855275.jpg
There is no set formula to help a company change it’s business processes. Every organization is different in the way they do business and their willingness to change (the later being the most difficult to manage).

In my opinion, the best thing that an analytics consultant can do is go into an organization and make an immediate difference. If you can show the client the value of web analytics you will gain credibility and hopefully a champion. Then start to broaden your effort.

After a few victories, talk to the decision makers about passing the process off to the client. Many companies fear change. Don’t be afraid to rock the boat and suggest that they take ownership of the process. If you’ve provided value using analytics then they will understand the benefit of the process and will listen. This is often a political issue. Be mindful of how the company does things. If they are a small group they may not have the capacity to take on another process. Again, it all depends on the company you are working with.

Remember, you are the web analytics expert. You know the process and have proven that (hopefully ;) ). The client knows their business and how they get things done. Now it’s time to integrate the two processes. I can’t tell you how to do that, that’s where the magic happens. I will say this, it doesn’t hurt to have some knowledge of business processes and optimization.

Other thoughts

I wanted to note that Eric Peterson mentioned this at the EMetrics summit in Washington, DC. Yes, the one back in October. Yes, I’ve been meaning to blog about this since October but have been ridiculously busy. I agree with Eric. I think this is the next challenge for our industry. Web analytics is an adolescent. For it to mature into an adult it must become a mainstream business process that drives growth.

Finding problems is so 2004. Discovering new business opportunities is where it’s at.

Subscribe:

The Two Types of Google Analytics Configuration

September 12, 2006 by Justin Cutroni

Last week I wrote a rather quick post about configuring Google Analytics correctly. I just want people to have good data for their analysis. You shouldn’t be questioning the accuracy of your data every time you pull up a report.

After a nice comment from Avinash, I began to think that there was more to my post than I realized. What are the major challenges people face when setting up Google Analytics? I guess it’s time for me to share some of my experience.

I feel that there are two types of configuration for Google Analytics:

  • Technical configuration: This process involves setting up the tracking code correctly, configuring the profile, getting all your RegEx correct, etc.
  • Functional configuration: The functional configuration is a process where we make sure Google Analytics is supplying the data needed to make business decisions

Some may argue that this is all just ‘configuration’, but I disagree. Any programmer can get you a regular expression, but can they help you cross segment your CPC traffic using GA? It takes knowledge of the tool and the business.

I’m going to devote a complete post to each of these topics. First I’ll cover the technical configuration with a post titled Top Google Analytics Configuration Mistakes. Then I’ll address the functional configuration with a post titled How to Configure Google Analytics for Business Success.

Got any suggestions? Think I’m crazy? Leave a comment :)

Subscribe:

Please Configure Google Analytics Correctly

September 1, 2006 by Justin Cutroni

We all know that web analytics data quality sucks and we’re all OK with that. Thanks Avinash! But there comes a point when the data quality is just abysmal. This usually means that there is something wrong with the web analytics application configuration.

That’s why I’m writing this post. I’ve seen too many clients struggle through the analytics process thinking that their Google Analytics data was OK when it was complete garbage. It is extremely important to have a resource in your organization that truly understands Google Analytics. Not only should they understand the product, they should also have a good grasp on your data needs. Why? Because Google Analytics, like every other analytics product, has it’s own nuances. Configuring GA correctly, so it generates the data that you need to make decisions, takes experience and expertise with the product.

I am very lucky that I get to work with organizations of all sizes. Enterprise level clients, mid-level clients and small businesses. It doesn’t matter how big the company, I’ve seen them all struggle with Google Analytics.

And here comes a blatant plug. If you’re having trouble with Google Analytics get an Google Analytics Authorized Consultant, like EpikOne, to take a look at your configuration. And remember, it not just about getting the filters right. It’s understanding what data your organization needs to make informed decisions.

Subscribe:

Getting More out of Google Analytics Goals

August 4, 2006 by Justin Cutroni

Setting up goals in Google Analytics is a vital step in monitoring the success of your website. While it is not necessary, setting up goals helps you harness the complete power of the application. Most people usually set up goals and scrutinize the conversion rate. I’m not going to comment on conversion rate, Avinash has already caused a stir about that. But I do want to point out some other Goal functionality and Goal related reports. I think an example would be the best way to structure this post.

One of the Google Analytics goals for my site is to get RSS subscriptions. You’ll notice that I have a number of feed reader subscription links in the right hand navigation of my site. When someone clicks on one of the subscription links I record a page hit in Google Analytics. Each subscription link generates a different page hit. Here’s what the page hits look like:

/blog/outbound/rss/rss
/blog/outbound/rss/google
/blog/outbound/rss/yahoo
/blog/outbound/rss/bloglines
/blog/outbound/rss/newsgator

So my goal is to get someone to reach one of those ‘pages’. Most people would create a goal for each of the above so they can track exactly which subscription type was requested. But that would be messy. There are 5 subscription types, I would need to use two profiles to track all of the goals.

Rather than create a goal for each of the above, I can use a regular expression to match then all. Then I only need to create a single goal. The regular expression that I use for the goal looks like this:

/blog/outbound/rss/

Here is the neat part. Google Analytics has a special report that will explain which of the links were hit. Remember, I’m using a regular expression that can match all of the subscription links (5 different links). While it is valuable to see the overall number of times the goal is reached, it is even more useful to understand which of the 5 links actually contributed to the goal.

The report is called the ‘Goal Verification‘ report and it is located in the Content Optimization > Goals & Funnel Process reports. Here’s the report for my site (don’t laugh at my data :) ):

Google Analytics Goal Verification Report
You can see from the image that there were three different matches for my goal regular expression. There were three matches for the Google Reader, three matches for the pure RSS feed and 2 matches for the Yahoo! feed reader. This is a great way to ‘drill down’ into your goal, especially if it can be achieved a number of different ways.

Just for some comparison, if I look at the Goal Tracking Report I see the total Number of goals achieved:

Google Analytics Goal Tracking Report
This is fun, let’s keep digging into this data! In our example, a visitor can reach my goal from any page on the site. It would be interesting to see which page they were on prior to hitting the goal. Google Analytics has a ‘Revers Goal Path‘ report. This report, found in the Content Optimization > Goals & Funnel Process section, shows the path that the user took to reach a goal.
Google Analytics Reverse Goal Path

Looking at the report we can see that two people landed on my homepage and subscribed to the Google RSS feed. This report is great because it can show the ‘high value’ pages that people need to see on the way to your goal page.

I hope this post was useful. Many people fixate on goal conversion rate and don’t dig into the more useful functionality.

I’m off for a vacation, I’ll be back in two weeks :)

Subscribe:

Custom Segmentation with Google Analytics

July 25, 2006 by Justin Cutroni

Last week wrote a piece about using custom segments to exclude yourself from Google Analytics tracking. I didn’t stop to think that some folks may not know what custom segmentation is and how it is implemented with Google Analytics. So today I’ll cover how to setup and use custom segmentation with Google Analytics.

Segmentation of data involves slicing the data based on some visitor characteristic. A very common data segment is new and returning visitors. This means that we can look at the website traffic and identify what portion is generated from new visitors, what portion is generated from returning visitors and what those groups did while on the site. Google Analytics has a number of pre-defined segments that you can find in the Marketing Optimization > Visitor Segment Performance reports.

In addition to these standard segments, you can define your own custom segment. This means you can divide your traffic into various groups, as defined by you, and then observe how those groups interact with your marketing activities and your website.

If you need more information about segmentation, or why you should do it, you can or you can read an article on ClickZ. There’s a bunch of them.

So, how do we add a visitor to a custom segment with Google Analytics? We use a JavaScript function to set a special cookie on their machine. The function is named __utmSetVar(’v’) and the cookie is named __utmv. We can call this function any where JavaScript can be called. When you use this function replace ‘v’ with some value. This is the value that will be stored in the cookie and will be visible in your reports. Here’s an example.

Let’s say we have a contact form on our site and we ask the visitor to specify their gender. There is a drop down box with the different responses. We can call the the __utmSetVar() function when the value in the drop down box changes. This will set the user-chosen value as a custom segment. After the segment has been set all of the visitor’s activites will be ‘bucketed’ into that segment.

User-Defined ReportThere are a number of ways to view how your custom segments perform. The easiest way is using the Marketing Optimization > Visitor Segment Performace > User-Defined report. This shows the visits, average page views per visit, and goal conversion rate for your custom segments.

Cross SegmentationYou can also cross segment many Google Analytics reports based on your custom segemtns. To do this click on the red chevron at the left side of a report (like the Top Content report). Then choose Cross Segment Performance and User Defined. GA will segment that line item based on your custom segments.

There is one major limitation to the Cross Segmentation functionality. You can only set one custom segment cookie at a time, therefore you can only set one custom segment, per visitor, at a time. Luckily this is pretty easy to get around. Recently, I wanted to track the conversion rate for certain genders and age groups. So I wrote some custom JavaScript that takes the gender data and age data from a form, combines it into a single string, and then sets the custom segment cookie. When the __utmSetVar() function is called it looks like this:
__utmSetVar('male:25-35')
‘male:25-35′ would be the value stored for a ‘male’ in the age group of ‘25 to 35′. This value dynamically changes based on the data the user enters into the form.

That’s about it. Questions? Comments? Just want to say hi? Leave a comment below.

Subscribe:

Count Me Out!

July 11, 2006 by Justin Cutroni

To keep your Google Analytics data pure you should remove all traffic generated by yourself or others that may not be real visitors. For example, if your company has a large call center you should remove the traffic they generate because it will skew your analytics data.

To remove this data we usually use an exclude filter based on IP address, host name or geographic location. While this is effective the results can be a bit ‘broad’. What I mean is you may not want to remove ALL of the traffic from an IP address, host name or geographic location.

Here’s another example. I have a blog (obviously) that I track with Google Analytics and I want to remove all of the traffic I generate. I don’t want to use an exclude filter based on IP address or geographic location because I want to see traffic generated by others in my company and city/state. I only want to exclude the traffic from the computer I am working on.

This technique can also be used if you have a dynamic IP address.

The solution is to create an exclude filter based on another piece of data, more specifically a custom segment. This method isn’t as broad as an exclude filter based on IP, hostname or geographic location. The filter is based on a cookie, which is specific to a computer. Using this method I can eliminate all of the traffic from an individual computer without affecting data created by others.

How to Set it Up

The first step is to set a cookie on your machine that will identify you to Google Analytics. We’re going to use GA’s custom segmentation functionality to do the.

I created a script that will set the GA custom segment cookie on your computer. You can view the source here.

Copy the source and paste it into your favorite editor. Then save the file. For the page to properly display on your website you will need to save it with the correct extension. You should be able to use a .html or .htm extension. It depends on your web server.

Once the file has been saved, upload it to your web server. You may need to use FTP. If you don’t know how to put the file on your web server consult with your web master. You can place the file anywhere on the site.

Then open a browser and type the location of the file in the browser. The page should display as an HTML form. If it displays as text then you probably need to change the file extension.

Enter some text into the text box and click the ‘Create Cookie’ button. The script will set the GA custom segment cookie on your computer and the cookie will have a value of whatever you entered into the text box. Do not use any white spaces or special characters when entering a value for your custom segment. Keep it simple, something like ‘exclude-me’ will work just fine. You should see a confirmation message that the cookie was set correctly.

The next step is to log into your GA account and create an exclude filter based on the value of the custom segment cookie. If you entered ‘exclude_me’ in the form then use ‘exclude_me’ as the value in the filter pattern field. Here are the settings for the exclude filter:

Filter to exclude user defined cookie.

This script works by taking the value you enter in the form and setting it as a custom segment. The great thing about this script is you can place it on your site and then access it from all the computers you work on. Just point a browser to the script, submit the form and all traffic from that machine will be excluded.

Keep in mind that the GA cookies are specific to a domain. So if you want to use this script for multiple websites you need to follow the above process for each domain.

The script is written in JavaScript and has been testing in FireFox 1.5 and IE 6.X.

Subscribe:

Page Titles Report for Urchin

July 5, 2006 by Justin Cutroni

Urchin Page Titles ReportI created a new ‘Page Titles’ report in Urchin. This report is similar to the ‘Content by Titles’ report in Google Analytics. The new report compares pages by HTML title tag rather than the path and file name. The only requirement for using this report is that you must use the UTM tracking method. You can not use this report if you are using an IP or session ID based tracking method.

Who could benefit from this report? Anyone that has a dynamic website or has long, archaic page names, will find this report useful. Normally you would use the Requested Pages report to find the most popular content on your site. But using this report you can find the most popular pages based on the title title tag and not the URL of the page. Check out the screen shot.

If you’re interested in learning more about this report contact me.

Subscribe:

Content Optimization With Google Analytics, Part 1

June 28, 2006 by Justin Cutroni

We all know that Google Analytics provides great data to help optimize your AdWords spending. Heck, that’s why Google Analytics exists, to help you drive better traffic to your site using AdWords. But optimizing how people get to your site is just one side of the equation. Making sure they convert once they’re on your site is just as important, and GA can help you with that. Site analysis is a bit more complicated than analyzing CPC data. Sometimes the answers don’t pop out at you as easily.

If you read this blog often (thanks!) you’ll know that I added a ‘Recent Posts’ section to the right hand navigation. This is to help drive visitors to specific pages in the site rather than have them read posts on the homepage. This change was prompted by an analysis of my analytics reports. Let’s walk thorough some reports for this site and I’ll show you how I decided to make this change.

Here is the top entrance point for my blog. This is found in the Entrance Bounce Rates report:

Top Entrances Entrances Bounces Bounce Rate
/blog/index.php 58 34 58.62

Obviously the index is going to have a large number of bounces. That’s just the nature of web visitors. Some people may have come to my site and discovered it wasn’t what they were looking for. But let’s try to figure out why. Let’s dig deeper into these numbers. For my home page, how long are people spending on the page? Using the Top Content report:

Content Uniq. Views Pageviews Avg Time % Exit $ Index
/blog/index.php 79 140 181.93 42.14 0.00

That’s 181.93 seconds or 3:02. That’s not too bad! That’s a pretty sticky page. People are reading the content on my homepage. That’s a good thing. But where do they go after the home page?

Initial Path Visits G1/Visit $/Visits
/blog/index.php > Exit 34 0.00 0.00

34 people left my site after hitting the home page. That’s a bit depressing. What do I know about traffic to my site so far…

  • A majority of visitors to my site land on the homepage
  • Once on the homepage visitors spend a good amount of time reading the content
  • A majority of people leave my site from the homepage

Why aren’t people going any deeper into my site? Probably because I don’t give visitors any navigation! My blog is designed to show all posts on the homepage. That’s obviously why I’m getting long visit times to the home page and a high percentage of people leaving from the homepage.

My site design is affecting my analytics data because all the content is on one page. I can’t get a good feel for which content is most popular because I can’t differentiate Post A from Post B on the homepage.

I think I have two options here:

  1. Add a list of recent posts to the navigation (which I did!)
  2. Only show part of each post on the homepage so the visitor has to click through to the entire post.

You can see how my analytics analysis drove my site navigation changes. It’s also important to notice that I needed to actually dig into the data to understand how it related to my site design. And don’t think this is an exact science, it isn’t! I was speculating as to why so many people left from the index page. I took a chance and it _may_ pay off. Who knows, I might check the data in a week and notice that nothing has changed. That’s the great thing about analytics, I can measure the effects of my changes and, if they’re bad, I can undo the changes. But, if the effects are good, then hopefully I’ll get more detailed analytics and more site visitors.

I’ll review the analytics in a week or two and see how my site visitation data has changed.

Subscribe:

How Google Analytics Tracks Third-Party Domains

June 25, 2006 by Justin Cutroni

Time for another installment of how to set up Google Analytics the right way! Today we’re going to talk about how to configure GA if your website spans multiple domain names. This is often the case if you’re using a third party shopping card. Just a note, I’m not going to get into the actual installation steps in this post. I want this to be a conceptual. If you’re looking for step by step instructions you can contact me or find them on them here on the GA Support Site:

http://www.google.com/support/analytics/bin/answer.py?answer=26915&hl=en

Before we get into the nuts and bolts of the setup, it’s important to understand the fundamentals of how GA tracks visitors. GA uses first party cookies to identify your site visitors. We all know what cookies are, right? First party cookies are set with the same domain name that is in the location bar of the visitor’s browser. It is very important to understand that cookies can only be ’seen’, and changed, by the domain that sets them. In fact, it is almost impossible for a website to set a cookie for a different website. This is due to a default security setting that most browsers have. Website A can not set a cookie for website B.

Let’s take this knowledge and apply it to how GA works. When a user lands on a page in your site the urchin.js tracking code looks for the GA tracking cookies. If it finds the cookies then it updates them. If it does not find the cookies it sets them. Remember, if your website domain is www.shirts.com, then the urchin.js tracking code can only recognize cookies with the www.shirts.com domain and it can only set cookies for the www.shirts.com domain.

As the user continues their session the urchin.js interacts with the tracking cookies. Continuing with our example, the user on our site is just about to click on a link to different domain, the third party e-commerce platform we use. They will leave our domain and go to the e-commerce provider’s domain. We’ve been tracking this user with a specific set of cookies on our domain. When the visitor leaves our domain we want them to take their cookies with them. The cookies identify them as a unique visitor, if they don’t take their cookies to the next domain then we will loose the rest of their session information and that’s not good.

So how do we transfer the cookies to the shopping cart site? With Google Analytics we can pass the cookie values to the shopping cart domain via the query string. There are two conditions that need to be met for this technique to work:

  1. We need to add the urchin.js tracking code to the pages on the third party domain (I’ll explain this in a second).
  2. The third party domain must permit us to pass data via the query string.

If the third party domain does not allow the above then you can NOT use GA to track your visitors on the shopping cart pages. Sorry, there’s no way around it, both conditions must be met.

Here’s how we normally configure GA to work with a third party site. We wrap the link (or form) that directs the user to the third party site in a JavaScript function. This function literally picks up the cookie values from the visitor’s computer, appends them to the URL and then forwards the user to the third party domain. Once the user arrives on the destination page the urchin.js pulls the cookie values from the URL and sets a new set of cookies with the values extracted from the URL. That’s why we need to add the urchin.js to the pages on the third-party site. We need the code in the JavaScript file to pull the values for the cookies from the URL. It’s really important to understand this last step because it overcomes the two hurdles we discussed above.

First, we’re transferring the visitor’s cookie values from one domain to another. This means that the entire visitor session will be captured. All the identifying information for the visitor stays with the visitor as they traverse the different domains.

Second, the GA tracking cookies on the third-party site will be first party cookies so they are less likely to be rejected by the browser.

We all know that getting the complete picture of a visitor’s session is vital to better understanding of the referring information and site configuration. I hope this post gives people a better idea of how GA is tracking their traffic across third-party domains so they can configure it correctly.

Subscribe:

How to Import MSN Cost Data Into Urchin

June 23, 2006 by Justin Cutroni

Everyone talks about Google Analytics and its integration with AdWords. Sure, it’s really cool. But what about other CPC systems? People seem to forget that you can track AND import ALL CPC campaigns and cost data in Urchin. Yahoo!, AdWords, MSN… You can import cost data for all these services, that’s a feature that currently isn’t available in GA.

To add cost data to Urchin you must export your cost data from your provider and them import it into Urchin. When you import the data file you must specify the format. By default, Urchin does not have an MSN Ad Center format. Luckily Urchin has a flexible architecture that we can use to almost any log format. So I created an MSN data file format. Using this format you can import your AdWords cost data into Urchin.

There is one problem that I’m still working on. It looks like MSN exports the data file (TSV) in UNICODE format. I _think_ that Urchin is choking on the UNICODE and will only process UTF-8 files. The workaround is to open the export file in Excel and then save it which changes the file to UTF-8 (I think). I’m still looking into this…

Subscribe: