Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save robisatthefunction/bc1a3de05e78ca17cab5dd829057f8a4 to your computer and use it in GitHub Desktop.
Save robisatthefunction/bc1a3de05e78ca17cab5dd829057f8a4 to your computer and use it in GitHub Desktop.
{
"plugin_type": "analytics_integration",
"name": "Custom GA Integration Using Custom Dimensions",
"form_schema": [
{
"default_value": "",
"field_type": "text",
"name": "customTracker",
"label": "Custom Tracker",
"options": null
},
{
"default_value": "1",
"field_type": "dropdown",
"name": "customDimensionSlot",
"label": "Custom Dimension",
"options": {
"choices": [
{
"value": "1",
"label": "1"
},
{
"value": "2",
"label": "2"
},
{
"value": "3",
"label": "3"
},
{
"value": "4",
"label": "4"
},
{
"value": "5",
"label": "5"
},
{
"value": "6",
"label": "6"
},
{
"value": "7",
"label": "7"
},
{
"value": "8",
"label": "8"
},
{
"value": "9",
"label": "9"
},
{
"value": "10",
"label": "10"
},
{
"value": "11",
"label": "11"
},
{
"value": "12",
"label": "12"
},
{
"value": "13",
"label": "13"
},
{
"value": "14",
"label": "14"
},
{
"value": "15",
"label": "15"
},
{
"value": "16",
"label": "16"
},
{
"value": "17",
"label": "17"
},
{
"value": "18",
"label": "18"
},
{
"value": "19",
"label": "19"
},
{
"value": "20",
"label": "20"
},
{
"value": "21",
"label": "21"
},
{
"value": "22",
"label": "22"
},
{
"value": "23",
"label": "23"
},
{
"value": "24",
"label": "24"
},
{
"value": "25",
"label": "25"
},
{
"value": "26",
"label": "26"
},
{
"value": "27",
"label": "27"
},
{
"value": "28",
"label": "28"
},
{
"value": "29",
"label": "29"
},
{
"value": "30",
"label": "30"
},
{
"value": "31",
"label": "31"
},
{
"value": "32",
"label": "32"
},
{
"value": "33",
"label": "33"
},
{
"value": "34",
"label": "34"
},
{
"value": "35",
"label": "35"
},
{
"value": "36",
"label": "36"
},
{
"value": "37",
"label": "37"
},
{
"value": "38",
"label": "38"
},
{
"value": "39",
"label": "39"
},
{
"value": "40",
"label": "40"
},
{
"value": "41",
"label": "41"
},
{
"value": "42",
"label": "42"
},
{
"value": "43",
"label": "43"
},
{
"value": "44",
"label": "44"
},
{
"value": "45",
"label": "45"
},
{
"value": "46",
"label": "46"
},
{
"value": "47",
"label": "47"
},
{
"value": "48",
"label": "48"
},
{
"value": "49",
"label": "49"
},
{
"value": "50",
"label": "50"
},
{
"value": "51",
"label": "51"
},
{
"value": "52",
"label": "52"
},
{
"value": "53",
"label": "53"
},
{
"value": "54",
"label": "54"
},
{
"value": "55",
"label": "55"
},
{
"value": "56",
"label": "56"
},
{
"value": "57",
"label": "57"
},
{
"value": "58",
"label": "58"
},
{
"value": "59",
"label": "59"
},
{
"value": "60",
"label": "60"
},
{
"value": "61",
"label": "61"
},
{
"value": "62",
"label": "62"
},
{
"value": "63",
"label": "63"
},
{
"value": "64",
"label": "64"
},
{
"value": "65",
"label": "65"
},
{
"value": "66",
"label": "66"
},
{
"value": "67",
"label": "67"
},
{
"value": "68",
"label": "68"
},
{
"value": "69",
"label": "69"
},
{
"value": "70",
"label": "70"
},
{
"value": "71",
"label": "71"
},
{
"value": "72",
"label": "72"
},
{
"value": "73",
"label": "73"
},
{
"value": "74",
"label": "74"
},
{
"value": "75",
"label": "75"
},
{
"value": "76",
"label": "76"
},
{
"value": "77",
"label": "77"
},
{
"value": "78",
"label": "78"
},
{
"value": "79",
"label": "79"
},
{
"value": "80",
"label": "80"
},
{
"value": "81",
"label": "81"
},
{
"value": "82",
"label": "82"
},
{
"value": "83",
"label": "83"
},
{
"value": "84",
"label": "84"
},
{
"value": "85",
"label": "85"
},
{
"value": "86",
"label": "86"
},
{
"value": "87",
"label": "87"
},
{
"value": "88",
"label": "88"
},
{
"value": "89",
"label": "89"
},
{
"value": "90",
"label": "90"
},
{
"value": "91",
"label": "91"
},
{
"value": "92",
"label": "92"
},
{
"value": "93",
"label": "93"
},
{
"value": "94",
"label": "94"
},
{
"value": "95",
"label": "95"
},
{
"value": "96",
"label": "96"
},
{
"value": "97",
"label": "97"
},
{
"value": "98",
"label": "98"
},
{
"value": "99",
"label": "99"
},
{
"value": "100",
"label": "100"
},
{
"value": "101",
"label": "101"
},
{
"value": "102",
"label": "102"
},
{
"value": "103",
"label": "103"
},
{
"value": "104",
"label": "104"
},
{
"value": "105",
"label": "105"
},
{
"value": "106",
"label": "106"
},
{
"value": "107",
"label": "107"
},
{
"value": "108",
"label": "108"
},
{
"value": "109",
"label": "109"
},
{
"value": "110",
"label": "110"
},
{
"value": "111",
"label": "111"
},
{
"value": "112",
"label": "112"
},
{
"value": "113",
"label": "113"
},
{
"value": "114",
"label": "114"
},
{
"value": "115",
"label": "115"
},
{
"value": "116",
"label": "116"
},
{
"value": "117",
"label": "117"
},
{
"value": "118",
"label": "118"
},
{
"value": "119",
"label": "119"
},
{
"value": "120",
"label": "120"
},
{
"value": "121",
"label": "121"
},
{
"value": "122",
"label": "122"
},
{
"value": "123",
"label": "123"
},
{
"value": "124",
"label": "124"
},
{
"value": "125",
"label": "125"
},
{
"value": "126",
"label": "126"
},
{
"value": "127",
"label": "127"
},
{
"value": "128",
"label": "128"
},
{
"value": "129",
"label": "129"
},
{
"value": "130",
"label": "130"
},
{
"value": "131",
"label": "131"
},
{
"value": "132",
"label": "132"
},
{
"value": "133",
"label": "133"
},
{
"value": "134",
"label": "134"
},
{
"value": "135",
"label": "135"
},
{
"value": "136",
"label": "136"
},
{
"value": "137",
"label": "137"
},
{
"value": "138",
"label": "138"
},
{
"value": "139",
"label": "139"
},
{
"value": "140",
"label": "140"
},
{
"value": "141",
"label": "141"
},
{
"value": "142",
"label": "142"
},
{
"value": "143",
"label": "143"
},
{
"value": "144",
"label": "144"
},
{
"value": "145",
"label": "145"
},
{
"value": "146",
"label": "146"
},
{
"value": "147",
"label": "147"
},
{
"value": "148",
"label": "148"
},
{
"value": "149",
"label": "149"
},
{
"value": "150",
"label": "150"
},
{
"value": "151",
"label": "151"
},
{
"value": "152",
"label": "152"
},
{
"value": "153",
"label": "153"
},
{
"value": "154",
"label": "154"
},
{
"value": "155",
"label": "155"
},
{
"value": "156",
"label": "156"
},
{
"value": "157",
"label": "157"
},
{
"value": "158",
"label": "158"
},
{
"value": "159",
"label": "159"
},
{
"value": "160",
"label": "160"
},
{
"value": "161",
"label": "161"
},
{
"value": "162",
"label": "162"
},
{
"value": "163",
"label": "163"
},
{
"value": "164",
"label": "164"
},
{
"value": "165",
"label": "165"
},
{
"value": "166",
"label": "166"
},
{
"value": "167",
"label": "167"
},
{
"value": "168",
"label": "168"
},
{
"value": "169",
"label": "169"
},
{
"value": "170",
"label": "170"
},
{
"value": "171",
"label": "171"
},
{
"value": "172",
"label": "172"
},
{
"value": "173",
"label": "173"
},
{
"value": "174",
"label": "174"
},
{
"value": "175",
"label": "175"
},
{
"value": "176",
"label": "176"
},
{
"value": "177",
"label": "177"
},
{
"value": "178",
"label": "178"
},
{
"value": "179",
"label": "179"
},
{
"value": "180",
"label": "180"
},
{
"value": "181",
"label": "181"
},
{
"value": "182",
"label": "182"
},
{
"value": "183",
"label": "183"
},
{
"value": "184",
"label": "184"
},
{
"value": "185",
"label": "185"
},
{
"value": "186",
"label": "186"
},
{
"value": "187",
"label": "187"
},
{
"value": "188",
"label": "188"
},
{
"value": "189",
"label": "189"
},
{
"value": "190",
"label": "190"
},
{
"value": "191",
"label": "191"
},
{
"value": "192",
"label": "192"
},
{
"value": "193",
"label": "193"
},
{
"value": "194",
"label": "194"
},
{
"value": "195",
"label": "195"
},
{
"value": "196",
"label": "196"
},
{
"value": "197",
"label": "197"
},
{
"value": "198",
"label": "198"
},
{
"value": "199",
"label": "199"
},
{
"value": "200",
"label": "200"
}
]
}
}
],
"description": "",
"options": {
"track_layer_decision": "/*\n* Javascript written in this tab will run every time a user is\n* assigned to an experiment and variation, but before any experiment\n* code runs. This hook is useful for tracking which variations a\n * visitor has been assigned to. Click the help icon for more information.\n */\n\nvar logEnabled = true;\nvar debugEvents = true;\nvar timeoutInterval = 100;\nvar maxWait = 10000;\nvar waited = 0;\n\nfunction trackOptlyEvent(name, tags){\n try {\n if(debugEvents){\n tags = tags || {};\n window[\"optimizely\"].push({\n \"type\": \"event\",\n \"eventName\": name,\n \"tags\": tags\n });\n } \n } catch (error) {\n // console.log(error);\n } \n}\n\ntry {\n (function(){ \n function integrationLog(msg){\n if (logEnabled){ \n console.log(msg);\n }\n }\n// took out window.sendEvent in the if condition with && window.ga. It doesn't seem to be a part of GA.\n function waitForGaEventApi(method) {\n if (window.ga && window.ga.getByName) {\n if(window.ga.getByName(extension.customTracker)){\n method();\n }\n } else {\n if (waited < maxWait){\n setTimeout(function() { \n waited = waited + timeoutInterval;\n waitForGaEventApi(method); \n }, timeoutInterval);\n } else {\n trackOptlyEvent(\"failed_to_find_ga\");\n } \n }\n }\n\n var decisionString = optimizely.get('state').getDecisionString({\n campaignId: campaignId,\n shouldCleanString: true,\n maxLength: 255\n });\n\n waitForGaEventApi(function(){\n trackOptlyEvent(\"getting_decision_string\",{\n value: waited \n });\n if(!!decisionString) {\n var payload = {\n eventCategory: \"Optimizely\",\n eventAction: \"User Bucketed\",\n nonInteraction: true\n };\n \tpayload['dimension' + extension.customDimensionSlot] = decisionString;\n integrationLog(\"Sending decision event to GA\");\n \tvar prefix = extension.customTracker ? extension.customTracker + '.' : '';\n window.ga(prefix + 'send', 'event', payload);\n trackOptlyEvent(\"sent_ga_event\",{\n value: waited\n });\n } \n });\n })();\n} catch (error) {\n trackOptlyEvent(\"ga_error\",{\n errormessage: error.message\n });\n}\n"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment