Hack din Google Analytics cookie
Vidste du at man nemt kan hacke den cookie, som Google Analytics sætter? Og på den måde få fat i informationer om, hvor den besøgende kommer fra, som man så kan bruge til alt muligt i sin backend?
Hold fast, denne artikel blive en smule teknisk.
Sådan ser cookien ud
Som du nok ved, så er en cookie en simpel tekstfil placeret i browseren på din computer. Og der er ikke noget specielt mystisk i disse cookies, faktisk kan de fleste åbnes og læses i en ganske almindelig text editor.
Åbner man cookien for Google Analytics, så ser den f.eks. sådan her ud:
Kig godt på indholdet af denne cookie. Det er rimeligt nemt at se at den består af et eller andet tal, efterfulgt af de klassiske traffic source værdier i Google Analytics adskilt med tegnet |.
Her har du en oversigt over samtlige af de traffic source parametre, der kan optræde i cookien:
utmcsr | Source |
utmcmd | Medium |
utmctr | Keyword |
utmcct | Content |
utmccn | Name |
utmgclid | Adwords Campaign ID |
Så er det egentligt bare lidt string parsing på den cookie, og så har du fat i hvor Google Analytics ser at den besøgende er kommet fra.
Gi' mig noget kode
Her kommer et C# kodeeksempel på, hvordan den slags kan
gøres.
Eller spring over, hvis du ikke er til
den slags.
public static string
GetGoogleCampaign()
{
// set some default values
string utmcSource = "";
string utmcMedium = "";
string utmcKeyword = "";
string utmcContent = "";
string utmcName = "";
string utmcGCLID = "";
string cookie = "";
string retval = "";
try
{
// load the Google Analytics cookie
cookie = Request.Cookies["__utmz"].Value;
// remove the first part, the visitor
identifier
cookie =
cookie.Substring(cookie.IndexOf("utm"));
// split the cookie into each utmc value
string[] cookievals = cookie.Split('|');
foreach (string cookieval in cookievals)
{
string[] valset =
cookieval.Split('=');
if (valset.Length ==
2)
{
// check which utmc value we've got
switch (valset[0].ToLower())
{
case "utmcsr": utmcSource = valset[1]; break;
case "utmcmd": utmcMedium = valset[1]; break;
case "utmctr": utmcKeyword = valset[1]; break;
case "utmcct": utmcContent = valset[1]; break;
case "utmccn": utmcName = valset[1]; break;
case "utmgclid": utmcGCLID = valset[1]; break;
}
}
}
// force Adwords if there's a GCLID in the
cookie
if (utmcGCLID != "")
{
utmcSource =
"google";
utmcMedium =
"cpc";
}
// do some decoding, trimming etc.
utmcKeyword =
Server.UrlDecode(utmcKeyword);
utmcKeyword = utmcKeyword.Replace("http://",
"");
utmcMedium =
utmcMedium.Trim('(').TrimEnd(')');
utmcSource =
utmcSource.Trim('(').TrimEnd(')');
utmcKeyword =
utmcKeyword.Trim('(').TrimEnd(')');
// construct the return value
retval = utmcMedium + " | " + utmcSource;
if (utmcKeyword.Length > 2) retval += " | "
+ utmcKeyword;
return retval;
}
catch (Exception ex)
{ return ""; }
}
Disclaimer: Lad være med at grine alt for meget over koden, jeg er ikke nogen specielt hardcore programmør. Men i det mindste er den fyldt med kommentarer :-)
Og nej, jeg har den ikke i en PHP udgave eller som et WP / Magento plugin. Men så er det godt, der findes andre ninjaer derude.
Bliver Google ikke sur over hacks?
For det første, så er et "hack" ikke nødvendigvis en negativ ting. At "hacke" betyder såmænd bare, at bruge noget på en facon, der ikke oprindeligt var udtænkt. Og det er der egentligt ikke noget galt i.
Google har intet imod at man forsøger at læse cookien. De fraråder kun at man selv forsøger at rette i den, men det er kun fordi man så risikerer at ødelægge ens Google Analytics data.
Så hack du bare løs!
Og hvad skal man så bruge det til?
Jeg er glad for at du spørger!
Jeg plejer selv at hacke cookien på denne facon på en webshops ordrekvitterinsside, og gemme informationerne ned som et felt på selve ordren:
Det har to fordele:
- Det er ekstra motiverende for shop-ejeren at kunne se, hvor
hver individuelle ordre kommer fra.
De fleste shop-ejere har ikke tid til at logge sig ind i Analytics hver eneste dag, og sidde og nørde. Men står de pludseligt og pakker en masse ordrer, som de kan se kommer fra en eller anden finsk blog, så kan de se, at der nok lige er noget de skal have kigget på.
- En professionel web analytikers fornemmeste opgave er, at
forudse hvilke data forretningen har brug for i fremtiden. For
ellers render man ind i, at når forretningen spørger: "Kan du
levere oplysninger på x?", så bliver svaret "Sagtens. Tager mig en
uge at udvikle, og så skal vi lige vente 6 måneder på at der bliver
samlet data ind".
Ikke godt for forretningen. Men svarer analytikeren derimod: "Det kan jeg sagtens, faktisk har vi samlet data ind på det i over et år".
Ja, så er det du bliver betragtet som en Analytics ninja :-)
Hvis en ordres kilde på denne facon står direkte nede i dit ERP system, så åbner det nemlig op for nogle fantastiske business intelligence muligheder, bl.a. for at lave avancerede analyser af customer lifetime value begrebet. Men det er en helt anden blog post.
Men man kan sagtens bruge disse informationer til alt muligt andet. For eksempel til at udløse rabatkoder eller kampagner, hvis den besøgende kommer et bestemt sted fra.
Håber du kan bruge dette lille "hack". Og hvis du finder andre ting at bruge det til, så læg mægtigt gerne en kommentar herunder med det.