Note: currently, this integration does not work with asynchronous code aspect (which is in beta). Whenever asynchronous code comes out of beta, it will support Google Analytics integration.
It is #1 feature requested and here you have it. This blog post introduces the new plugin for the Google Analytics. Using the plugin, you can easily benchmark multiple metrics across different variations. For example, you may find out that while your winning variation has reduced bounce rate significantly, it may actually be reducing average visitor time on site as well. Viewing results from multiple perspectives allows one to get a better idea on the expected behavior of winning variation.
For integrating Google Analytics with Visual Website Optimizer, you will have to sandwich a snippet of code (in bold font below) in your existing Google Analytics tracking code (most likely present at the bottom of your website HTML):
<script type="text/javascript"> var pageTracker = _gat._getTracker("XX-XXXXXX-X"); pageTracker._initData(); if (typeof(_vis_opt_GA_track) == "function") { _vis_opt_GA_track(); } pageTracker._trackPageview(); </script>
The process for Asynchronous code snippet is similar:
_gaq.push(['_setAccount', 'XX-XXXXXX-X']); if(typeof(_vis_opt_GA_track) == "function") { _vis_opt_GA_track(); } _gaq.push(['_trackPageview']);
In other words, the code in bold (javascript function _vis_opt_GA_track()) needs to be added just before the Google Analytics code snippet _trackPageview
After you have added the code, the integration is done. No more settings, no more configuration. For all tests, the Google Analytics intergration will start automatically.
To see A/B test reports in Google Analytics, click on Visitors in the sidebar and then click on Custom Variables report. Then click on the test id (available from VWO reports page) corresponding to the test you want to see a report for. An example of the report name in GA would be “VWO-2” which means it is a report corresponding to test with id 2. In the report you can see goal values for different variations plus you can also see different metrics such as bounce rate, time on site, return visit, pages/visit, etc. corresponding to the variations. The reports look something like the following screenshot (click to expand):
As you can see, different variations have different bounce rate and time on site. If we had configured goals in GA for this site, we could have tracked performance of variations on multiple goals as well. We can also define an advanced segment for a variation to do any kind of complex analysis that GA allows us to do. How cool!
Before you get too excited, please note following important points regarding the plugin:
Technical note:VWO uses GA’s 4th custom variable slot by default. If you would like to change it (either because you already use if for a different purpose or you want to track multiple tests in GA), add the following code before any GA code:
<script type="text/javascript"> var _vis_opt_GA_slot = YOUR_CUSTOM_SLOT; // a number between 1-5 </script>
Leave a comment here if you cannot get the plugin to work for you or you have trouble understanding what code to add or where to add.
RSS feed for comments on this post. TrackBack URL

Is it possible to create a version of this for Clicky analytics (http://www.getclicky.com)
~ David
Comment by David Crowther — March 3, 2010 @ 3:52 am
Hey David, I can help you with the integration if you want.
-Paras
Comment by Paras Chopra — March 4, 2010 @ 5:59 pm
Thanks Paras. It’s on my task list.
Comment by David Crowther — March 5, 2010 @ 7:17 pm
Which of the 5 slots do you use? Can we configure that?
Comment by André Scholten — April 13, 2010 @ 8:12 pm
VWO uses slot 4. Currently it isn’t possible to customize that but would you like to do it?
Comment by Paras Chopra — April 13, 2010 @ 8:17 pm
Well, sometimes we use something like gaTracker instead of pageTracker, and sometimes we use the async version of the Google Analytics tracking code. And some clients already use slot 1 to 4, and then it’s good to have a choice.
Comment by André Scholten — April 13, 2010 @ 8:21 pm
Great idea, we can easily build that feature into the integration code. Let us know when you are on it.
Comment by Paras Chopra — April 13, 2010 @ 8:22 pm
[...] integration with Google Analytics, Omniture SiteCatalyst and other analytics packages will let you track performance of variations on [...]
Pingback by Yummier than freshly baked cookies: multiple conversion goals for an A/B or multivariate test « I love split testing – Visual Website Optimizer Blog — April 28, 2010 @ 7:53 pm
Hi Paras
Just want to say that this is a killer integration. Reeeaaaally love this.
The option of choosing slot yourself would be real great, it makes it much more flexible. And would make it possible to track 5 different test on the same site at a time. That is relevant when having 5 landingpages with its own order flow
Comment by Jacob Kildebogaard — April 28, 2010 @ 9:34 pm
Hi Jacob,
Yes, in the next version (coming out this week) we will be providing a code snippet that allows specifying which slot to use. Stay tuned!
-Paras
Comment by Paras Chopra — April 28, 2010 @ 9:49 pm
To all who requested GA custom slot, updated the code and post to allow that!
Comment by Paras Chopra — April 29, 2010 @ 4:49 pm
Hi,
We’re using Google Analytics asynchronous tag.
Is the integration of VWO will be the same as the code you show upon?
Example:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxxx-x']);
if (typeof(_vis_opt_GA_track) == “function”) { _vis_opt_GA_track(); }
_gaq.push(['_trackPageview']);
(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);
})();
Thanks
Comment by Vincent — June 1, 2010 @ 2:08 pm
No, it won’t be the same. Just wait a couple of days – we are releasing a plugin compatible with Async code.
Comment by Paras Chopra — June 1, 2010 @ 2:30 pm
Paras,
Any reason why this doesn’t work?
if (typeof(_vis_opt_GA_track) == “function”) {
var pageTracker =
_gaq._createAsyncTracker(analyticsCode, ‘pageTracker’);
_vis_opt_GA_track();
}
Comment by Lachlan Donald — June 2, 2010 @ 7:08 am
The code doesn’t yet work with asynchronous GA snippet. We will be soon updating the VWO code to make it work. Will keep you informed.
Comment by Paras Chopra — June 2, 2010 @ 3:00 pm
UPDATE: It is now possible to use VWO plugin with GA asynchronous code snippet. See the update in the post.
Comment by Paras Chopra — June 3, 2010 @ 12:06 pm
Hey Paras, just stumbled across this the other day — apparently it is possible to have more than 5 custom variables: http://analyticsimpact.com/2010/05/24/get-more-than-5-custom-variables-in-google-analytics/
fwiw.
Comment by Luke Stevens — June 11, 2010 @ 9:46 am
Paras:
Do you have a plug-in that works with getclicky.com now?
Thanks,
- Alex -
Comment by Alex Nghiem — August 10, 2010 @ 8:54 pm
No, not yet. Are you looking forward to that?
Comment by Paras Chopra — August 10, 2010 @ 9:41 pm
Paras:
Yes, I need integration with GetClicky.com
Even if there isn’t a plug-in, is it possible to use your tool with GetClicky?
Thanks,
- Alex -
Comment by Alex Nghiem — August 23, 2010 @ 11:42 pm
Alex, yes of course, you can use it with Clicky. There will be no conflicts.
Comment by Paras Chopra — August 23, 2010 @ 11:47 pm
How is suggested that it’s implemented if using the format:
var _gaq = _gaq || [];_gaq.push(['_setAccount', 'UA-XXXXXX-1'],['_trackPageview'],['b._setAccount', 'UA-XXXXXX-2'],['b._trackPageview']);
Comment by Simon — September 10, 2010 @ 3:58 pm
@Simon: you can call _vis_opt_GA_track() function immediately after var _gaq = _gaq || []; Something like this:
var _gaq = _gaq || []; if (typeof(_vis_opt_GA_track) == “function”) { _vis_opt_GA_track(); } _gaq.push(['_setAccount', 'UA-XXXXXX-1'],['_trackPageview'],['b._setAccount', 'UA-XXXXXX-2'],['b._trackPageview']);
Let me know if it helps
Comment by Paras Chopra — September 10, 2010 @ 5:04 pm
Thanks Paras, worked a treat, in that there are no errors. Looking forward to seeing the results in GA!
Comment by Simon — September 10, 2010 @ 5:18 pm
Is there a known issue with _vis_opt_GA_track() causing visits to become treated as new visits (and thus jacking the bounce rate up to 100%)? This is really mauling our Analytics data. I’m guessing it’s some weird interaction with our setup, because third-party Analytics integration has done this in the past before, but I have no idea how to debug it.
The difference between our setup and yours is that we don’t have an _initData() line–is that necessary? http://www.google.com/support/forum/p/Google%20Analytics/thread?tid=6ae93fabba94b5fd&hl=en
Comment by Nick Winter — September 22, 2010 @ 8:50 pm
I don’t understand how I track multiple tests – sorry! Do I simply add that code snippet at the top of every page to change it to ‘5′?
Comment by david carruthers — December 16, 2010 @ 8:28 pm
@David: change what to ‘5′? Can you email us at support@wingify.com?
Comment by Paras Chopra — December 16, 2010 @ 8:36 pm
Hi Paras
We use Urchin Server, and it does not support custom variables only the User Defined Variable. Do you have a setting that will allow us to specify that the test group label be applied to the User Defined Var? Also, it seems that it would be simpler to use a single variable to label a visit regardless of the test participation (assuming that each visitor is limited to only a single test). Given that, could we just set the variable value with this structure “test name: test group”. That way, we don’t have to constrain GA/Urchin tracking of our active tests to the whatever the availability of multiple unique variables “slots.”
Thanks always for sharing your ideas so freely and moving your platform forward with such agility for all of us to benefit.
Comment by John — December 18, 2010 @ 3:27 am
@Hi John, why don’t you mail me and then we take from there?
Comment by Paras Chopra — December 18, 2010 @ 11:57 am
This is not the code that I have on my website for Google Analytics. The code I have is
_uacct = “NNNNNNNNNNNN”;
urchinTracker();
Can you please help me get this up and running?
Comment by Marco Gomes — February 3, 2011 @ 12:48 am
@Marco: can you email at support@wingify.com
Comment by Paras Chopra — February 3, 2011 @ 1:40 am
If I use the funtion:
pageTracker._trackPageview(“XXX.html”);
The pluging will work?
Comment by Yossy — February 9, 2011 @ 12:08 pm
@Yossy: yes it should.
Comment by Paras Chopra — February 9, 2011 @ 1:12 pm
Hello PARAS,
I am not able to add your given code in our website because so please let me know if you can do it
PS we are using Google analytical right now
Comment by Prashant Sharma — May 11, 2011 @ 2:29 pm
[...] is Visual Website Optimizer. After implementing this tool, the only thing left to do is report back to the Funnel Analysis tool with the test name and variation for each [...]
Pingback by Choosing the Best Web Analytic Tools for your Web Analytics Suite | Portal Analytics — May 12, 2011 @ 11:43 am
[...] One of the Visual Website Optimizer users, Jason Thompson did a great job in integrating VWO with Omniture SiteCatalyst. (We already have a Google Analytics plugin). [...]
Pingback by Official plugin for Omniture SiteCatalyst — May 13, 2011 @ 8:08 pm
Can you please add this page/content to the help section? I keep trying to search for it and don’t find it.
Comment by Anne Stahl — June 9, 2011 @ 1:30 am
@Anne: Thanks for pointing it out. Just adding the article.
Comment by Paras Chopra — June 9, 2011 @ 1:40 am
Is it in the near future going to be possible to run multiple tests at the same time?
Comment by Zorg John — November 4, 2011 @ 9:50 pm
@Zorg: yes, we are planning to update the snippet to allow for multiple tests.
Comment by Paras Chopra — November 5, 2011 @ 12:22 pm
Am I reading this correctly? I have a multiple URL based tests running on my site for a template test across course pages.
I also have a goal page tracking in the test. The goal is picked up by VWO, but I’m not seeing the goal tracking in GA. Is this because I have 29 individual tests for the course template split test and GA will only show the goal results if there is one test running?
The plugin is working for other queries. All 29 tests are on Custom Var 4.
Comment by Kevin — December 14, 2011 @ 8:07 pm
This is great feature!
But looks like it doesn’t work with async VWO code. In async VWO snippet, the javascript contanining the “_vis_opt_GA_track()” is loaded AFTER Google Analytics sends a beacon. So the code that should set GA custom variable is skipped. As a result, we don’t have integration.
The solution is using synchronous snippet, but I still hope this can be resolved somehow (e.g. by ordering calls to VWO and GA scripts).
Comment by Vasil — January 4, 2012 @ 6:13 pm
@Vasil: yes, we do have plans to make GA async work with GA script.
Comment by Paras Chopra — January 4, 2012 @ 6:41 pm
It’d be very nice. Anyway, I think you should mention using synchronous VWO snippet for Google Analytics integration in this post. It can save time of other people who can step on the same rake
Comment by Vasil — January 4, 2012 @ 6:50 pm