How do I extract Google Analytics campaign data from their cookie with Javascript?

Shawn Steward picture Shawn Steward · Nov 6, 2009 · Viewed 13k times · Source

I'd like to be able to pull out the data stored in the Google Analytics tracking cookie with all the campaign tracking information using Javascript. It needs to work with the newer version of GA using ga.js, not urchin.js. I found a method that works with urchin.js but we don't use that for our tracking. Does anybody know how to extract the Campaign, Source, Medium, Content and Term from the cookie Google uses?

Answer

Shawn Steward picture Shawn Steward · Nov 6, 2009

I ended up figuring this out on my own. I just dug into what the cookie had stored and extracted the information. Here's what I came up with:

var ga_source = '';
var ga_campaign = '';
var ga_medium = '';
var ga_term = '';
var ga_content = '';
var gc = '';
var c_name = "__utmz";
if (document.cookie.length>0){
    c_start=document.cookie.indexOf(c_name + "=");
    if (c_start!=-1){
        c_start=c_start + c_name.length+1;
        c_end=document.cookie.indexOf(";",c_start);
        if (c_end==-1) c_end=document.cookie.length;
        gc = unescape(document.cookie.substring(c_start,c_end));
    }
}
if(gc != ""){
    var z = gc.split('.'); 
    if(z.length >= 4){
    var y = z[4].split('|');
        for(i=0; i<y.length; i++){
            if(y[i].indexOf('utmcsr=') >= 0) ga_source = y[i].substring(y[i].indexOf('=')+1);
            if(y[i].indexOf('utmccn=') >= 0) ga_campaign = y[i].substring(y[i].indexOf('=')+1);
            if(y[i].indexOf('utmcmd=') >= 0) ga_medium = y[i].substring(y[i].indexOf('=')+1);
            if(y[i].indexOf('utmctr=') >= 0) ga_term = y[i].substring(y[i].indexOf('=')+1);
            if(y[i].indexOf('utmcct=') >= 0) ga_content = y[i].substring(y[i].indexOf('=')+1);
        }
    }
}

I'm sure it could be more streamlined but I was just happy to get this far with it. Once you have these variables you can do whatever you need with them.