Last active
February 6, 2016 01:26
-
-
Save alhankeser/cde437c5fd4739f4bca3 to your computer and use it in GitHub Desktop.
Switch between no testing tool and something like Optimizely randomly and track it in GA
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function (global) { | |
// YOUR LIST OF TOOLS - REPLACE THE 'XXXXXXXXXX' WITH YOUR OPTIMIZELY PROJECT ID | |
var yourTools = [ | |
{tool: "None" }, | |
{ | |
tool: "optimizely", | |
projectID: "XXXXXXXXXX" | |
}]; | |
// CHECKS FOR EXISTING COOKIE ALONG WITH WHAT TOOL - IF ANY - SHOULD BE LOADED | |
var toolSwitcher = global.cookie.replace(/(?:(?:^|.*;\s*)toolSwitcher\s*\=\s*([^;]*).*$)|^.*$/, "$1"); | |
// IF THE COOKIE EXISTS, IT GRABS ITS VALUE AND MAKES SURE TO ADD THE RIGHT TOOL - OR NONE. | |
if (toolSwitcher) { | |
addTool(toolSwitcher); | |
} | |
// OR RANDOMLY PICKS ONE OF THE TOOS LISTED IN THE yourTools ARRAY OF OBJECTS | |
else { | |
var rand = Math.floor(Math.random() * yourTools.length); | |
// THE DIMENSION VALUE IS USED FOR GA AND THE COOKIE VALUE | |
var dimensionValue = yourTools[rand].tool; | |
setCookie(dimensionValue); | |
addTool(yourTools[rand]); | |
// RENAME "DIMENSION1" WITH THE CORRECT INDEX | |
ga('set', 'dimension1', dimensionValue); | |
} | |
// SETS PERSISTENT COOKIE SO THAT WHATEVER WAS LOADED WILL BE THE EXPERIENCE THE USER HAS THROUGHOUT | |
function setCookie(val) { | |
var d = new Date(); | |
d.setTime(d.getTime() + (189216000000)); | |
var expires = d.toUTCString(); | |
var host = location.hostname; | |
var path = "/"; | |
global.cookie = "toolSwitcher = " + val + "; domain = " + host + "; path = " + path + "; expires = " + expires; | |
} | |
// ADDS THE RIGHT TOOL - OR NONE | |
function addTool(tool) { | |
if (tool.projectID) { | |
var toolScript = global.createElement("script"); | |
toolScript.type = "text/javascript"; | |
toolScript.src = "//cdn.optimizely.com/js/" + tool.projectID + ".js"; | |
var pageHead = global.getElementsByTagName("head")[0]; | |
pageHead.insertBefore(toolScript, pageHead.firstChild); | |
} | |
} | |
}(document)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment