The Power User's Guide to Google Analytics Hacks, Tips and Tricks

(9/8/2010) - Google Analytics (GA) is the most widely-used web analytics monitoring platform on the planet. Many users, though, don't use GA to its fullest capacity. Tracking organic vs paid search traffic visits is insightful, but Web marketers, SEOs and site owners can dig deeper and become even more informed by using advanced tricks such as tracking script hacks, custom filters and advanced segmenting features.

With that in mind, we've reached out to 17 Google Analytics experts to create the Power User's Guide to Google Analytics Hacks, Tips and Tricks, which features a variety of advanced user features to help turn you into an analytics pro.

Google Analytics Guide Contributors

Joost de Valk

Joost de Valk is a seasoned online marketer who specializes in Web Development and SEO. Joost frequently contributes to his blog Yoast.com, and is co-host of the weekly WordPress "blog improvement" podcast WP-Community.

Jump to: Joost's Analytics Hack

Aaron Wall

Aaron Wall is a leading SEO and runs the popular SEO website SEO Book, which features one of the best SEO training programs on the Web. Aaron also heads up an AdWords Training website PPCBlog.com with Geordie Carswell and his wife, Giovanna Wall.

Jump to: Aaron's Analytics Tip

Will Critchlow

Will Critchlow is the Founder and Chief Strategist of Distilled Internet Marketing.

Jump to: Will's Analytics Hack

David Harry

David Harry is a SEO and self-proclaimed "IR geek" who heads up Reliable SEO, contributes to the Fire Horse Trail blog and is the top geek at the SEO Training Dojo.

 Jump to: Dave's Analytics Hacks

Vanessa Fox

Vanessa Fox is a SEO expert and consultant best known for creating Google Webmaster Central. She writes on customer acquisition via organic search at ninebyblue.com, provides search-friendly design patterns and is the author of Marketing in the Age of Google: Your Online Strategy IS Your Business Strategy.

Jump to: Vanessa's Analytics Tips

Brian Clifton

Brian Clifton is a recognized Google Analytics expert as well as consultant and trainer who specializes in performance optimization using Google Analytics. He blogs regularly on Advanced Web Metrics and is the author of Advanced Web Metrics with Google Analytics.

Jump to: Brian's Analytics Hack

Ian Lurie

Ian Lurie is CEO of Portent Interactive, a Seattle-based Internet marketing and search engine optimization firm. He also writes the Internet marketing blog Conversation Marketing, and is co-author of the Web Marketing All-In-One Desk Reference for Dummies.

Jump to: Ian's Analytics Hacks

Larry Kim

Larry Kim is Founder and VP of Product Development at WordStream, a provider of PPC management software and SEO tools for inbound marketing efforts.

 Jump to: Larry's Analytics Tip

Tom Demers

Tom Demers is Director of Marketing for WordStream with experience managing high-volume paid search accounts containing thousands of PPC keywords.

 Jump to: Tom's Analytics Tip

John Hossack

John Hossack is President/CEO at VKI Studios and is a frequent speaker at speaking at events, such as the American Marketing Association, Web Analytics Association, eMetrics conference, Internet Marketing Conference Vancouver as event Chair and speaker.

Jump to: John's Analytics Hack

Linda Bustos

Linda Bustos is Director of Ecommerce Research at Elastic Path and the author of the Get Elastic Ecommerce Blog. Linda has been recognized as one of the Invesp 100 Most Influential Marketers of 2008 and 2009. 

Jump to: Linda's Analytics Hack

Justin Cutroni

Justin Cutroni is the Director of Digital intelligence for WebShare, an online marketing firm in Phoenix, and has written two books: Google Analytics (for advanced GA users) and Performance Marketing with Google Analytics (for more novice GA users). Justin also blogs at Analytics Talk.

Jump to: Justin's Analytics Hacks

Jeff Selig

Jeff Selig, Director of Analytics and Optimization for Overdrive Interactive, is a veteran media executive who has been in the online space since 1995, designing, building and optimizing sites for a wide variety of clients.

Jump to: Jeff's Analytics Hack

Manoj Jasra

Manoj Jasra is a Web Analytics Analyst and President of Jasra, Inc and the Senior Search Marketing Strategist at Shaw Communications. Manoj also runs the popular Web Analytics World blog

Jump to: Manoj's Analytics Hacks

Bryan Eisenberg

Bryan Eisenberg is Managing Partner of Eisenberg Holdings LLC and a professional marketing speaker. Bryan has coauthored the bestselling books "Call to Action", "Waiting For Your Cat to Bark?" and "Always Be Testing".

Jump to: Bryan's Analytics Tips

Bas van den Beld

Bas van den Beld is a Web strategist, international search specialist, trainer and respected blogger. He owns Stateofsearch.com, with news and views on what's next in search. He also owns NetTraject, a Dutch search engine marketing company, and founded Searchcowboys.com.

Jump to: Bas's Analytics Tips


Find profitable keywords


Google Analytics Hacks, Tips & Tricks
Joost de Valk
Joost de Valk

Advanced Data Tracking

- If you haven't yet, switch to the new asynchronous tracking. It's faster & more reliable, so there's simply no reason not too.

- If you use Google Analytics on a  WordPress site, use Yoast's Google Analytics for WordPress plugin, it allows you to track loads of meta data and the only thing you'll have to do is authenticate with Google and select the right site to track.

- Using the new custom variables functionality you can track very interesting meta data. For instance, you could track the age of pages as a custom var on the page level. That way you can see whether older pages are still receiving traffic. Or you could use the custom variable to track the author of pages, that way you can segment by author and see which authors do better in search, for instance.  An example of how this works with the asynchronous tracking code:

var _gaq = _gaq || [];
(function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);

Aaron Wall
Aaron Wall

Enabling Adsense Data Sharing

My favorite Google Analytics hack is to enable AdSense data sharing. Once you do that you can have AdSense earnings data down to the page and down to the keyword. From there you can incorporate a rank checker to see how well you rank for those keywords and think of what areas you should push harder on.

Will Critchlow
Will Critchlow

How to do First Touch Tracking

By adding some custom JS code to write information about referrer, landing page etc. to custom variables only on the first visit, we can run conversion/e-commerce reports by first touch instead of last touch. This means that rather than seeing all conversions allocated to direct visits, email and branded search, we can see the long-tail unbranded searches that led searchers to discover the site in the first place. Both these views have their place, but this is the first step on the road to econometric models (massively overkill for most SMEs).

The main point can be summed up by the chart below showing the visits to convert report from Google Analytics:

Visits to conversion report from Google Analytics

The point is not what those exact values are, but simply that a significant number (in this case more than half) of all conversions come from visits that aren’t the first!

Today’s post, however, is all about the details: how to get first touch tracking working to get you actionable data about real acquisition costs from Google Analytics.

You will need to be able to:

  • Import a custom .js file
  • Modify the Google Analytics embed code across your website
  • Create custom reports in GA

Note that this is going to set custom variables. If you are already using this functionality, you should be very careful with how you integrate this. Oh, and all of this is provided as is, with no warranty. I hope it will help you out, but only you are responsible for changes you make to your website and tracking code.

By default, GA attributes conversions to the last touch – i.e. the source of the visit that led to the conversion. I’m going to show you how to get the source of their first visit to your site.

Step 1

Embed a JavaScript file defining three functions:

  • distilledCheckAnalyticsCookie – in order to track first touch information, we only want to record details to custom variables on someone’s first visit. This function checks for the __utma visitor cookie
  • distilledTruncate – as I discuss in more detail over on SearchEngineLand, Google won’t allow you to set custom variables of longer than 64 characters (including the variable name) after URL encoding so this function is a slightly long way round of truncating the variable information
  • distilledFirstTouch – the heavy lifting – this is the function that sets the four variables outlined in more detail below

You can embed this with the following code anywhere above the Google Analytics code script in your page code:

<script type="text/javascript" src="http://attributiontrackingga.googlecode.com /svn/trunk/distilled.FirstTouch.js"></script>

It’s a little clunky at the moment and I want to refine it a little to cope better with combinations of Google Analytics and Website Optimizer. If anyone has any good ideas for this, feel free to drop me a line or raise issues over at Google Code.

Step 2

Move your GA code above any Website Optimizer code or anything from Google that might write a visitor (__utma) cookie and look for:

var pageTracker = _gat._getTracker("UA-XXXXXXX-X"); pageTracker._trackPageview();

In between those two lines, you want to put the following code:


So that your trackpageview code looks like this:

var pageTracker = _gat._getTracker("UA-XXXXXXX-X"); // Distilled first touch tracking distilledFirstTouch(pageTracker); pageTracker._trackPageview();

Make sure you use your own UA-XXXXXXX-X identifier string!

This writes 4 custom variables (apologies for the ridiculous naming conventions – Google limits the whole of the variable name + value to 64 characters!):

  • l : original landing page (no query string)
  • s : original landing page query string
  • r : original referrer
  • q : if q=keyword+keyword is found, this contains that part of the referrer (it’s actually more complicated than that – I have taken the full list of keyword delimiters from Google help and attempted to pull them out into the fourth variable in case the full referrer is truncated by the character limit).

Step 3

The detail of this is probably best reserved for another day / another post, but suffice it to say that I have found that custom reports exported to Excel are probably the best way of analysing the data this method produces. Far be it from me to tell you what reports to create, but I suggest something like conversions or revenue by original referring keywords might be interesting!

Setting up a custom report in Google Analytics

I have found the Visitors –> Custom Variables report in GA to be flaky at best. I would advise avoiding that and creating your own reports.

Step 4

Work a tiny bit of Excel magic.

Because (as described above) Google encodes the data on the way into GA, you need to decode it to make real sense of it. I have made the assumption that Google’s URLEncode function works like JavaScript’s encodeURIComponent() function and written an Excel formula to help:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," ;%2F","/"), "%2C", ","), "%3F", "?"), "%3A", ":"), "%40", "@"), "%26", "&"), "%3D", "="), "%2B", "+"), "%24", "$"), "%23", "#")

Just paste this formula into an empty cell and place the information you want to decode into cell A1. Manipulate as necessary. You’re welcome. And yes, I’m a (tiny bit) sorry for the nastiness of that formula.

original source

David Harry
David Harry

Keyword Analysis with Advanced Segments and Custom Reporting

For starters, here's MOST IMPORTANT HACK EVA' - exact referrer.

Next, the first thing I tend to tell anyone is that analytics on their own...are....well... useless. People tend to use tools to give them data that they can use. It shouldn't be a blind journey. You first want to figure out WHAT it is you want to know. Then you go to the analytics to get the answers. Not the other way around.

To that end I would suggest reading SEO Benchmarks and KPI.

In the first part on Google Analytics for SEO we looked at advanced segmentation and custom reporting for search traffic analysis. This time around we’re going to look at different metrics and key indicators for keywords and phrases that are being used to reach your site.

What’s important with this is that we’re looking to adapt our SEO programs by better understanding how various keywords/phrases are performing.

Before we get going, it should once again be stressed, be creative. These are but some examples to start you down the path of crafting approaches that best work your situation.

Google analitics for SEO

Engagement by keyword

Right away, to get us started, navigate to ‘Traffic Sources > Keywords’ this is our main focus for this round. Now, last time we created a custom segment to measure our prime engagement visitors by segmenting those that went 3 pages or more into the site.

We can now use this segment on our keyword report;

Keyword performance analysis

And of course the ‘Goal Conversion’ tab –

Digging deeper into keyword referrers
There are a few things we’re looking at here;

  1. Level of engagement – which terms are bringing in the visitors that engage with the site the most. You can then do some deeper analysis as to why a target is performing well or why it isn’t. This can be used to better adapt the over-all keyword targeting of the SEO program.
  2. Engagement V. Conversions – As you can see above, some terms are going to accomplish your goals better than others. This begins to help focus future efforts as far as where you invest your resources in your SEO program.

What we can see from that above is that while some terms to have some great traction engagement wise, they don’t always ultimately lead to the best conversions. Another evident factor is that it re-affirms our desire to engage visitors on this particular site as deeper engagement does show itself to lead to higher conversions ultimately.

At a glance

Now, using the default report can give us some in-depth understanding, but I like to have an over-view; so let’s create a custom report. Go to ‘Custom Reports’;

creating custom reports
This will give us a report which is more of an ‘at a glance’ view incorporating engagement metrics AND conversions data as well. Using our earlier custom segment we’d have this;

keyword engagement

Once more, I normally add other conversion points, but I leave that to you. The main thing is we can look at some of our core keywords to gain insight into the engagement and conversion points related to them. If I am deciding where to concentrate my efforts ( as far as something like link building is concerned) on terms that are performing best. This is essential to an effective SEO campaign.

Geo Targeting

Last time we also created an advanced segment for our Australian visitors since this program is specifically targeting this market. So now let’s apply that to our Keyword Engagement Report – and we’d have something like this;

geo locational analysis

Once more we’re looking at not only the efficacy of the keyword targeting but also how well the geo-targeting efforts are going. I this case, it’s going well and we can drill down other ‘at a glance’ engagement metrics for each term.

By creating segments, that are important to your site, you can have a nice set of engagement metrics to better understand the performance of your core terms. Now let’s look at primary and secondary terms.

Primary and secondary keyword targeting

I don’t know about you, but we generally have primary and secondary targets with each SEO program. These are essentially groups of terms that have been identified as the money terms and secondary ones. For this we’ll be creating some new segments…
creating custome segments

Depending if you want to track ‘just’ the primary terms, or inclusive of connectors (used in long tail) you can use either ‘matches exactly’ or ‘contains’ – it’s situational.

Now if we go to ‘Traffic Sources > Search Engines” and then activate our two keyword segments that we just created. We’ll get something like this;

more keyword analysis

This shows us that our primary terms are certainly not only pulling greater traffic, as expected, but also engaging the traffic better. It’s worth noting I am using constructors ( inclusive of primary targets). As always we also want to look at the conversion data to look for weaknesses which can be further mined.

Engagement by query type

Another area worth having as an overview on is query types, that is the general nature of a keyword/phrase. Common ones are transactional (seeking a purchase, support information and so forth), informational and geo-modifiers (location specific). So let’s go create a few more advanced web analitics.

Transactional query modifiers

transactional query modifiers

This time, add the following one at a time as shown above;


…and so on. Try mining your keyword referrer data for transactional terms related to your market. Once done, we can name this (KWs Transactional) and save.

Now create one for informational queries. This time use this list;

How to

… and mine your keyword data as always.

If we return to our ‘Traffic sources > Search engines’ report and apply our new segmentation; we have something like this;

Primary and secondary term targeting

After that? Well you can also create another segment for geographic triggers that you may have as well as one for brand related searches (company name, product names, your name..etc..). By looking at search traffic engagement and related conversions a deeper understanding of your over-all content creation and term targeting invariably emerges.

Dig in and muck about

It should be noted that you should be cross referencing your mean average rankings and geo-targeted rankings with ALL kw analytic data and analysis. Often times we find that certain search types (transactional, informational etc..) can lead to deeper engagement. This data is but starting point for deeper research.

The easy access across reports for cross referencing with conversions, make these advanced segments and custom reports quite useful. Each website and market is going to have different key indicators, by playing with the goodies we looked at here you should be able to get your own creative juices flowing into ways to best identify keyword interactions produced from your SEO efforts.

Vanessa Fox
Vanessa Fox

Link Building via Referred Links, Segmenting Analytics through Keyword Clusters

Two questions I get asked all the time are about measuring link building efforts and monitoring organic search rankings. I point people to their web analytics for answers to both of these questions.

For link building, content owners want to know how successful their efforts have been to create compelling content that others will link to and they want to know if the links they are attracting are seen as valuable by Google and help to improve their PageRank. The link reporting tools that exist can be out-of-date, inaccurate, incomplete, or report links from different sections of the web with each update. Because of these issues, it's difficult to use these tools for this type of monitoring. Even Google Webmaster Tools, which provides link data directly from the source, doesn't provide a complete list of incoming links.

However, you can use the referring link information in analytics to learn which content is attracting the most links and which of those links are bringing you the most traffic. This information will both help measure how well your efforts to create compelling content are going as well as gain insight on how valuable search engines such as Google likely see those incoming links.

Use referred
            visits data in google analytics for link building intelligence

For search rankings, rankings reports with hundreds or thousands of keywords are not only against Google's terms of service, but are increasingly inaccurate and not highly actionable. Personalized search means that each searcher sees a different set of results, and universal search elements such as images, video, and the local onebox make it difficult to translate an organic ranking into where that result falls on the page and what percentage of clicks it's likely to get. In addition, a mere ranking doesn't tell you if searchers are clicking through to your page and converting.

However, you can create analytics reports by keyword cluster to find out if you're gaining or losing search traffic for those keywords and better understand the behavior of those searchers on your site. For instance, if you sell rubber duckies, you can set up reports to see how well the site performs for those searching for yellow vs. other color duckies, those searching to rubber duckies vs. those looking for reviews and those looking for particularly functionality, such as the ability to float.

That type of data not only gives you much of the same insight you'd get from rankings reports, but it provides information that's much more useful and actionable. Do those who look for blue rubber duckies never buy? Are lots of people looking for green rubber duckies but you don't sell them? Clustering keywords and tracking visitor behavior can help you not only measure your organic search efforts, but can help improve your overall product strategy.


Find profitable keywords
Brian Clifton
Brian Clifton

Roll-Up Reporting: Stand Alone Reports for Specific Product-Dedicated Websites

Roll up reporting is not a standard feature in Google Analytics. However with a little extra coding, you can have stand alone reports for specific i.e. product dedicated websites, and a roll-up report to give a global overview.

Generally, this issue mostly affects enterprise clients. For example, companies with brand specific or product specific web sites targeted at particular markets. Because of this specific need it makes sense to have separate, stand alone Google Analytics accounts for each web site. That way, segmentation, referral analysis, e-commerce revenue (or lead generation) can be analyzed in detail.

However, Marketing Managers also need a high level overview of how the entire online channel is performing. This is when having separate GA accounts can become laborious. Roll-up reporting simplifies this. That is, in addition to individual Google Analytics accounts, you also have a single "catch-all" account with all data from all web sites aggregated. This post shows you how to do this and was recently successfully deployed by Unicef.org.uk.

What exactly is the advantage of this approach compared to using a single profile and then creating additional sub-profiles for each site?

For enterprise clients I generally come across the scenario where the client has semi-autonomous country offices who wish to “play” (segment, filter, open up access to their agency) with their own specific data. The HQ requires a global overview but wish to leave the country/region details to the local office. In fact, they generally wish to leave all training, support and management of analytics to their local office – HQ provides the implementation.

To ensure HQ receives its global overview with confidence in its data integrity, it is better that they maintain their own GA account with access restrictions and change history documentation in place. Country offices can then do as they wish.

Roll-up reporting setup

The principal to roll-up reporting is straight forward – you add multiple Google Analytics Tracking Codes (GATCs) to your web pages. One specifies the individual account, the other is for the roll-up account. Schematically this is shown below for two websites:

<script> Call the standard GA loader script </script> <script> 1. Track the pageview into the individual account 2. Track the pageview into the roll-up account </script>

The actual JavaScript is as follows:

<script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> var firstTracker = _gat._getTracker("UA-123456-1"); // Acc. for mysite.com firstTracker._trackPageview(); var secondTracker = _gat._getTracker("UA-987654-1"); // Acc. for catch-all secondTracker._trackPageview(); </script>

Note, for each stand alone web site, you use your specific GATC i.e. change the UA-123456-1 to match each of your Google Analytics accounts. Below this, you add the same same roll-up account information. The rollup part of the GATC remains the same for each site. In this case UA-987654-1. Obviously you will need to change the UA numbers for your account(s).


Special consideration is required for e-commerce transactions because you will need to call the e-commerce tracking code for each account. So _addTrans, _addItem and _trackTrans are required for firstTracker and secondTracker objects. Schematically you need to add the following on your transaction receipt/confirmation page (view the Help Centre if you need general e-commerce tracking help):

firstTracker._addTrans(enter transaction values as array); firstTracker._addItem(enter item values as an array); firstTracker._trackTrans(); secondTracker._addTrans(enter transaction values as array); secondTracker._addItem(enter item values as an array); secondTracker._trackTrans();

And that’s it… except…

Roll-up implications

It is important you are aware of the ramifications of rolling up data from different websites into one Google Analytics account:

  1. Pageview aggregation
    Pageviews in your different websites that have the same page title or name (for example index.htm, contact.htm etc.) will be aggregated. That is you will only see one entry for index.htm and for contact.htm etc., with the sum of their pageviews. Generally for roll-up reporting that is not a problem as this account is used to get the "big picture" aggregate overview. However, if you still need the page name detail, apply the filter described in the following Help Centre – its the same filter for differentiating pageviews from sub-domains .
  2. transaction in different currencies
    Similar to pageview aggregation, e-commerce data will be aggregated. That is, if you have transactions in different currencies the revenue totals become meaningless at the roll-up level. So pounds, dollars, euros are all be combined regardless of exchange rates. Therefore, for your roll-up account, unify your transaction data into a single "base" currency. This base currency should remain fixed so that long term comparisons can be made i.e. don’t change this to reflect currency exchange rates.
  3. Timezone alignment
    If your stand alone accounts operate in different timezones, ignore time of day reports in the roll-up account. They won’t make sense!
  4. AdWords ROI in different currencies
    If you run AdWords accounts in different currencies for your stand alone Google Analytics account, ignore the ROI and margin metrics from the ‘Clicks’ report.
  5. Cookie manipulation
    The roll-up report method described in this post results in cookies being shared between both of your Google Analytics accounts. Therefore any cookie manipulation on one (changing time out values, expiry date for example), results in changes impacting both sets of reports. This issue can arise for example if you have an agency collecting data for its own internal purposes (stand alone account) as well as for you (global account). They may wish to experiment, not realising the wider impact – I have seen this happen and a great deal of time and money was wasted trying to figure out what was going on!

These implications may sound daunting but in many cases they are not. Apart from unifying your e-commerce data, you probably will not drill down deep enough in a roll-up report for these implications to be noticed.

Improvement tip

This hack improves the pageview aggregation implication described above (item 1).

If you have dozens or even hundreds of product micro sites, you may wish to simplify pageview reports even further. Rather than collecting detail of every single page on each micro site into the rollup account, you can concertina this in to a "per site view". That is, rollup pageviews.

In this way, instead of having pageA = 3 views, pageB = 2 views, pageC = 1 view etc., you would have pageview for www.mysite.co.uk = 6, www.mysite.com = 13 etc. This simplifies the Top Content report, so that you see overall pageview volumes on a per site basis.

The following GATC modification can be used for simplifying pageview reports:

<script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> var firstTracker = _gat._getTracker("UA-123456-1"); // Acc. for mysite.com firstTracker._trackPageview(); var secondTracker = _gat._getTracker("UA-987654-1"); // Acc. for catch-all secondTracker._trackPageview(location.host); </script>

The highlighted line replaces the pageview name (URI) with the name of the website.

Please let me know if you found this article useful. A quick rating (click the stars) is the fastest way, though as always comments are my main KPIs.

original source

Ian Lurie
Ian Lurie

Google Analytics Cheatsheet

Google Analytics has a ton of features, and even more tricks and hacks that folks have developed over the years. So this two-page cheat sheet, which took three days and nights to pull together, is a tiny sliver of the whole system.

But it does cover the stuff that I'd want my staff to use.


Access Traffic Stats Fast, Track Referring URLs and 404s

I use Google Analytics regularly and even had a post listing its hacks:

1) This browser bookmarklet (as well as this browser bookmarklet generator) allows to quickly access your traffic stats for the current day.

2) Track full referring URLs


analytics track full referrer

3) Track 404 page

Application: quickly spot when your visitors do not get what they want

pageTracker._trackPageview("/404.html?page=" + document.location.pathname + document.location.search + "&from=" + document.referrer);

Larry Kim
Larry Kim

How to Track Outbound Clicks

One of my favorite Google Analytic hacks is to help me track clicks on links that lead visitors away from my website. Links that lead away from your site are not automatically tracked in Google Analytics so to track this activity you need to tag links you want to track with som custom Javascript. I'll walk you through the steps.

1) Set up Event Tracking in your Analytics Tracking code.

You're going to add the following line to the tracking code for your pages after the page tracking object is set up:

    var pageTracker = _gat._getTracker('UA-XXXXX-X');

2) Add JavaScript in the <head> of your document to delay the outbound click.

Not to worry...this delay is only a fraction of a second and will hardly be noticeable by the user. But the delay does provide the browser more time load the tracking code. Without this delay, the user may click on the outgoing link before the tracking code loads, in which case the event isn't going to get recorded. Here's the JavaScript code you'll add in the <head> section (NOTE: this script assumes you will use your own tracking code ID):

    <script type="text/javascript">
    function recordOutboundLink(link, category, action) {
      try {
        var pageTracker=_gat._getTracker("UA-XXXXX-X");
        pageTracker._trackEvent(category, action);
        setTimeout('document.location = "' + link.href + '"', 100)

3) Update the outbound links you want to track to call the new function without following the link first.

For example, to log every click on a particular link to www.someothersite.com, you would use the _trackEvent() method in the link's <a> tag, like so:

    <a href="http://www.someothersite.com" onClick="recordOutboundLink(this, 'Outbound Links', 'example.com');return false;">

NOTE: In the above example, I'm using the category label "Outbound Links," which is a logical category for all outbound links in my Event Tracking reports. It sets the specific name of the website as the second parameter in the call. With this structure in place, I'm able to see "Outbound Links" as one of my event categories and drill down to see which particular outbound links are the most clicked on.

Tom Demers of WordStream
Tom Demers

Setting Up a Negative Keywords Filter

One that I think is handy and kind of cool has to do with identifying negative keywords (I mentioned it in our negative keyword Webinar recently). Basically the idea is to look at the one-off queries you're driving organic traffic for so that you can identify good negative keyword candidates for your paid search campaign. What we want to do is find keywords that drive 1 visit via organic search and have a ridiculously high bounce rate, and then evaluate whether they're relevant to our business or not. Things that aren't are great negative keyword candidates because:

  • They represent actual search queries
  • They reflect how people interacted with our site after searching for them (i.e. we have insight as to whether these people are potential buyers based on their activity on our site)
  • Google's algorithms are matching these searches with our site's content, which likely has some alignment with the terms in our paid search campaign (and the way Google views that)
  • While they're being deemed relevant (you're receiving traffic), they're actually not, so they'll be great terms to eliminate from your paid search campaigns.

First, pull a report for traffic sources > Keywords > Non Paid


Google analytics software organic keyword report

Next, set up a couple of advanced filters:

1) Next, set up an advanced filter for Metrics > visits > less than or equal to 1:


Using Google Analytics
            advanced filters

2) You may also want to set up a filter that takes into account advanced search operators so that you can filter that traffic, as it's often more relevant (to do this set up a series of keyword filters for signs used in Google search operators such as: ", +, -)

Next, you'll want to sort by time on site; this allows you to see the terms that forced people to immediately bounce from your site:


Google analytics: filter keywords to get a nice negative keyword candidate list.

Finally, you can set up this report to run weekly or monthly to constantly surface new negative keyword ideas:


Using Google Analytics scheduled reports: set up automated reports with Google Analytics.

BONUS TIP: If you have a massive list of this data and want to get a quick "share of voice" to see the most common modifiers or clusters within this report, grab the data in a CSV and drop all of it into our Free Keyword Grouper to get a quick peek at where the most common offenders lie.

John Hossack
John Hossack

Tracking Error 404 Pages and Broken Links


Whether you are an ecommerce site, lead generation site, or publishing site (even a blog)... you will likely have the occasional technical problem with your site. Sometime your site may throw a 4XX (client error) or 5XX (Server Error). These errors are often created as a result of broken links within your site, so you will want to find them and fix them ASAP.

Setup: Placing the GATC in your Error 404's, 500's, etc.

To track error pages you will need to have the Google Analytics Tracking Code (GATC) added to your error page template(s) (contact your webmaster to complete this task). Without the tracking code on the error pages you will not be able report on these pages or find their associated broken links.

As a reference, here is the code:

<script type="text/javascript">
Var gaJsHost = (("https:" == document.location.protocal) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
<script tupe="text/javascript">
Var pageTracker = _gat.getTracker("UA-xxxxx-x");

Note: Be sure to use your own number under gat.getTracker()

With the GATC on your error pages they will now be tracked as page views. Since these error pages will be considered page views you will want to create a filter that will allow you to view them in isolation from each other.

One important aspect to setting up your error report properly is the naming convention that you use for your error pages' in the HTML "title" tag. All of the title tags need to be created in a consistent manner so that a single filter will be able to identify them. An example title tag would be: Error 404 Page.

For other errors you would just replace the '404' with the appropriate error number. An example of a custom filter that will track the above format would be:

Filter Type: Advanced
Field A -> Extract A | Page Title | (Error [0-9][0-9][0-9].+)
Field B -> Extract B | Request URI | (.*)
Output To -> Constructor | Request URI | $A1$B1
Field A Required: Yes
Field B Required: Yes
Override Output Field: Yes
Case Sensitive: No

An alternative version of the Field A regular expression is: (Error [0-9]{3}.+) Once you have the GATC on your error pages and set up your filter to help differentiate the different type of error pages from each other it is time to figure out where your error pages are and which links (broken links) sent your visitors to these nonexistent pages.

Creating the Report in Top Content

To create your error pages report you will go to the top content report and then filter by the term "error" (assuming you had this word in your error page title tags as we did above). This will bring up all of your error pages and let you see the associated Content Performance metrics associated with them (pageviews, unique pageviews, bounce rate...)

Now that you have identified the error pages we need to track down the broken links that created the error. To do this you will click on an error page in the report to view the content details of that page. From the content details page you will then click on the "Navigation Summary" link on the right side. Once on the Navigation Summary page you will be able to see the page your visitor was on prior to visiting your error page. A quick visit to these pages and you should be able to figure out where your broken links are. Sometimes the pages with the broken links will not be within your site and you will need to contact someone else and ask them to correct the link, or set up a 301 redirect on your site to redirect the inbound visitor to the correct URL.

This is a great report for your webmaster or IT team to review regularly so that you can fix broken links as quickly as possible and reduce the number of error pages that your visitors will see.


Find profitable keywords
Linda Bustos
Linda Bustos

Exposing Broad Match Keyword Referrals

We did a collaborative post with fellow Vancouverites VKI Studios called Stop Google Analytics from Stealing Your Valuable Keyword Data. Google Analytics really isn’t “stealing”, rather “concealing” the actual search queries that trigger your paid search ads when you’re using broad match. It’s a “ye have not because ye ask not” situation.

“Ask and ye shall receive,” and by ask I mean set up a couple custom filters that will expose this data to you. I will be so bold to say that if you cannot see exact keyword referrals you have no business using the broad match type! (<---And I rarely use exclamation points or blog the same topic twice!!!)

This trick has become the most important keyword research tool I use after a campaigns launch (I use a few methods of keyword research to set up Ad Groups including the Google Keyword Tool). Once the campaign is underway, I use the exact keyword referrals to discover negative keywords, uncover new Ad Group and product opportunities and to understand more about how people search. What's missing is transactional data for each keyword, unfortunately.

I decided to screencast the set up process for a few reasons.

1) To share this tip again with our new readers (we’ve almost doubled in readership last summer) and remind those who have put off adding the filter to set it up ASAP.
2) To show you how quick and easy this is and provide you with a resource (printable PDF) that will give you the confidence that you can set this filter up yourself!
3) To show you how to find your data in Google Analitics by AdGroup, so you can add apply the appropriate negative keywords at the Ad Group level.

If you bear with me to the end, I share some of the crazy matches we’ve been getting for the Vancouver 2010 Olympic store’s broad matched keywords. You’ll see why I value this information so much!

Companion Resources

Cut and Paste Values:

As with almost all multi-part filters, sequence is critical and must be ordered accordingly using the “Assign Filter Order” page for the profile.

First Filter:

Field A -> Extract A: Referral: (\?|&)(q|p|query)=([^&]*)
Field B -> Extract B: Campaign Medium: (cpc|ppc)
Output To -> Constructor: Custom Field 1: $A3

Second Filter:

Field A -> Extract A: Custom Field 1: (.*)
Field B -> Extract B: Campaign Term: (.*)
Output To -> Constructor: Campaign Term: $B1 ($A1)

original source

Justin Cutroni
Justin Cutroni

Google Analytics and CRM Integration

Hands-down this is one of my favorite things to do is adding Google Analytics data to a CRM. It’s a beautiful marriage of data. GA explains a visitor’s on-site behavior while CRM data XXXXXX.

I’m  going to cover the integration from a high level. I’m not going to include any actual code, as every implementation is different. If you’re technically inclined you should be able to crank out some code after reading this post. If you’re not technically inclined point your IT team to this post and they should be able to develop a solution for your site.

The usual integration technique involves mining the data in the Google Analytics tracking cookies and passing it to the CRM. The GA tracking cookies hold some pretty cool information, including where the visitor came from and how many times they’ve been to the site.

Imagine you rely on the website for leads. Wouldn’t you like to know which specific marketing activities lead to a lead? Or how many visits were required before a lead was submitted?

There are two steps to this hack and both are coding intensive:

  1. Extract information from the GA tracking cookies
  2. Pass data to the  CRM system


Google Analytics tracking cookies

As I mentioned above, the GA tracking cookies contain some pretty juicy data. The data can be extracted from the cookies two different ways.

You can use client side code, like JavaScript, or you can use server side code, like PHP or Java. The actual implementation is up to you. One method does not yield more data than the other. So you can choose the implementation technique that’s going to work best for your site.

Let’s look at the GA cookies and identify useful information. I like to use FireCookie in FireFox to view cookies, but you can use your favorite cookies viewing tool.

The __utma cookie stores information about the visitor, including the number of visits the visitor has made to the site. Here’s a sample  __utma cookie. The last number, in bold below,  is the number of visits this visitor has made to the site:


We want to grab that number and store it in the CRM. What’s the business value? It tells us how many times the visitor has been the site. If we grab this data when the visitor submits a contact form, etc., we can asses  before performing some action how long it takes to get people to take action and we can adjust our marketing activities to move more people through the funnel.

Now let’s turn our attention to where people come from.

The __utmz cookie stores where the visitor came from in  a series of name-value pairs. Let’s take a look at a sample __utmz cookie and describe these name-value pairs.

32856364.1282659573.1.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=justin cutroni

This cookie was generated after I visited my site from a google organic search for “Justin Cutroni” (yes, I’m incredibly vain ;) ) Don’t worry about all the numerical junk at the beginning of the cookie. Focus on the (somewhat) human-readable part.

You can see that my search information is actually embedded in the cookie. You can easily pick out the words “organic”, “google” and “justin cutroni”. The information is in a “name=value” format, with different pairs separated by a pipe character.

We want to grab the values associated with utmcsr, utmccn, utmcmd and utmctr. These parts of the cookies hold specific information about where the visitor came from. Here’s a brief description about each part of the __utmz cookie.

  • utmcsr: Campaign Source. This part of the cookie holds the value of the utm_source link tagging parameter. If no utm_source parameter is used GA will use the name of the organic search engine for organic traffic (google, yahoo, etc.),  the domain name for any referral traffic and (direct) for direct traffic.
  • utmccn: Campaign Name. This part of the cookie holds the value of the utm_campaign parameter. If not utm_campaign parameter is present GA will use (not set).
  • utmcmd: Campaign Medium. This part of the cookie holds the value of the utm_medium parameter. If no utm_medium is present GA will use ‘organic’ for organic traffic, ‘referrall’ for a referring website and ‘(none)’ for direct traffic.
  • utmctr: The keyword or search term. Obviously this parameter holds the keyword from paid and organic search. For traffic sources other than search this parameter will have a value of (not set).
NOTE: If you’re unfamiliar with Campaign Tracking you can read more about it here.

There is one other parameter that’s used exclusively with Google AdWords. It’s named gclid and holds a unique ID that can connect a visitor’s visit in GA to the AdWords ad, search term and other pieces of AdWords data. Here’s what the __utmz cookie looks like with the gclid value:


gclid value is only present when a visitor clicks on an AdWords ad. Notice that other parts of the cookie are defaulted to (not set). GA can resolve other pieces of information by matching the gclid value back to the AdWords system.

There is one other cookie that can be useful. Google Analytics uses a cookie named __utmv to store Custom Variables. I’m not going to get into custom variables per-say, but the __utmv cookie can hold up to five, visitor scoped custom variables. Obviously you’ll know if you are using custom variables on the site. If you are you can parst the __utmv cookie and extract those values along with the data from the __utma cookie and __utmz cookie.

The __utmv cookie is formatted similarly to __utmz cookie. It features a series of name-value pairs that store information. In this case it’s a comma separated list of items. So this __utmv cookies:


Would break down into the following name-value combinations:

Your code should loop through the __utmv cookie and pull the name and values for all of the parameters above. How? Again, you can create client-side code (JavaScript) or server side code (PHP, Java, etc.) to parse the cookies.

Note: If you’re not familiar with Custom Variables you can read more about them on the Google Code site.

When all is said and done, you should have the following information:
  • How many time the visitor has been to the site (from the __utma cookie)
  • Where the visitor came from (from the __utmz cookie)
  • Any custom visitor information (from the __utmv cookie)

Once you grab all of the values it’s time to put them in your CRM. Again, the exact implementation will depend on your CRM. If you’ve got a home-grown solution you may just need to create extra fields in a database. This is where your expertise and knowledege of your CRM come into play. You may need to create new fields in the CRM database or some other structure to hold the data. The key is to store this information along with the other information coming from the website.

When you grab the cookie values is also an issue. It’s easiest to grab these values when the visitor submits some type of form or engages in some mechanism that includes identifiable information. For example, when a visitor submits a contact form, you can parse the GA cookies and send the data back to your CRM with the rest of the form data. Then insert it into the CRM.

Using Google Analytics for Customer Relationship Management

And that’s basically it. Easy right? ;) Hopefully this post gives you a road-map that you can follow for your specific implementation.
Jeff Selig
Jeff Selig

Show More Rows

If you have a large site, I’m sure you’ve come across the issue of trying to export all your data but you can only download 500 rows at a time! That can be super annoying if you’re trying to pull data when you have 10,000+ rows you need to get into one spreadsheet. Just add this to the end of the URL: “&limit=”. Then when you export it to CSV (this is the only option it works with), you’ll get the full number you’ve added in the limit. The view on the page will still only show 500 (or whatever it’s set to) but the actual download will have everything you need. There are limitations with the number of rows you can get in Excel but it’s more of a problem with Excel 2005 and earlier.

1) Normally you can only select 500 rows at a time.


2) But add "&limit=#" in the URL


3) Then Select Export to CSV


4) And voila! You have all your data


Manoj Jasra
Manoj Jasra

Site Search Without the Query String, Export Hundreds of Data Rows

My two favorite Google Analytic hacks which I use very often (both of which by no means originated from me) are: Capturing site search when there isn't a querystring present and secondly exporting more than 500 rows of data.

Site search without a query string:
1)  Add the following line of code to your Google Analitics code:
pageTracker._trackPageview('/searchresults?query=[SearchPhrase]');  Replace [SearchPhrase] with the actual keyword being searched for. In PHP it would be: pageTracker._trackPageview('/searchresults?query=<?php echo $keyword; ?>');

2) As you normally would, iInsert ‘query’ into the “Query Paramater” textbox within the site search section of Google Analytics.
Export 500+ Rows

  1. Navigate to your report
  2. Append "&limit=5000" to the URL and hit enter
  3. Select export to CSV format and voila! 500+ rows
Bryan Eisenberg
Bryan Eisenberg

30+ Google Analytics Plugins, Hacks & Tricks

Google Analytics provides some great information about what is happening on your website. But what if you want to take it to the next level? Thanks to the many smart people who have created these wonderful hacks and plugins to get you some powerful additions to Google Analytics. Please note most of these need the truly awesome GreaseMonkey FireFox extension.

Highlights from the List of Google Analytics Hacks include:

Better Google Analytics Firefox extension – This wraps up several scripts into one. Among the MUST HAVE plugins. This super-script will allow you to:

  • Auto press the “Access Analytics” button, if it is displayed
  • Remembers settings you set when you switch between profiles, and allows you to open another profile in a new tab quickly.
  • Allows you to export any report available as CSV to Google Spreadsheets.
  • Converts percent values to absolute values in tables.
  • Provides one-click access to year-over-year reports in Google Analytics.
  • Sorts the visible table rows.
  • and Adds Digg, Sphinn, Mixx, Reddit, StumbleUpon, Del.icio.us, and Yahoo InLink Metrics to your content detail reports.
Unusual Keyword Trends in Google Analytics With Greasemonkey – provides a “What’s Changed” report which tells a) which referrers have sent most traffic in last few days and b) which have sent most traffic where they never did before.

Google Website Optimizer multivariate experiment data to show up in Google Analytics – While Google Website Optimizer by itself can give you a quick look at which combination is best at improving conversion, it tells you nothing about transactions, revenue, micro-conversions, navigation, segmentation by source, and bounce rate. If you integrate Google Analytics into your Google Website Optimizer experiments, you will get much richer data, and be able to get a true idea of how your test is doing.

Bas van den Beld
Bas van den Beld

Bas's Google Analytics Tips

First off, I use the "Better Google Analytics" add on for Firefox, which gives me some good insights in some social media numbers, something which GA isn't sufficient enough in themselves.

Second, the Google Analytics plugin by Yoast is a must have for everyone working with GA and Wordpress. Saves loads of time.


Find profitable keywords