Skip to content

Instantly share code, notes, and snippets.

@RitwikGA
Created January 31, 2018 13:44
Show Gist options
  • Save RitwikGA/cdd686cf80bd58390f94d9850492b426 to your computer and use it in GitHub Desktop.
Save RitwikGA/cdd686cf80bd58390f94d9850492b426 to your computer and use it in GitHub Desktop.
Facebook Custom Event - UTM Tracking - Last Attribution
/* UTM Tracking - Last Attribution - Facebook
* @Ritwikga
* Digishuffle
*/
var cookie_name = 'fb_utm' //Name of Cookie
var cookie_duration = 180 //days
if(/utm_source/g.exec(location.search) && /utm_medium/g.exec(location.search))
{
cookieModify(cookie_name, true)
} else {cookieModify(cookie_name, false)}
function cookieModify(cookie_name, utms)
{
if(utms)
{
var source = /utm_source=([^&]+)/g.exec(location.search)[1]
var medium = /utm_medium=([^&]+)/g.exec(location.search)[1]
var campaign = /utm_campaign=([^&]+)/g.exec(location.search)?/utm_campaign=([^&]+)/g.exec(location.search)[1]:undefined
fbq('trackCustom','UTMs',{'Source': source ,'Medium': medium, 'Campaign': campaign })
if(readCookie(cookie_name) != null)
{eraseCookie(cookie_name)}
var cookie_value = 'utm_source='+source+'&utm_medium='+medium+'&utm_campaign='+campaign;
createCookie(cookie_name, cookie_value ,cookie_duration)
} else
{
if(document.referrer.search(location.hostname) == -1 )
{
var source = (document.referrer =="")?"direct" : document.referrer.replace(/(http|https):\/\/www\.|\//g,"")
var medium = (source == "direct") ? "none" : "organic"
var campaign = undefined
fbq('trackCustom','UTMs',{'Source': source ,'Medium': medium, 'Campaign': campaign })
if(readCookie(cookie_name) != null)
{eraseCookie(cookie_name)}
var cookie_value = 'utm_source='+source+'&utm_medium='+medium+'&utm_campaign='+campaign;
createCookie(cookie_name, cookie_value ,cookie_duration)
} else {
var old_utms = readCookie(cookie_name)
var source = /utm_source=([^&]+)/g.exec(old_utms)[1]
var medium = /utm_medium=([^&]+)/g.exec(old_utms)[1]
var campaign = /utm_campaign=([^&]+)/g.exec(old_utms)?/utm_campaign=([^&]+)/g.exec(old_utms)[1]:undefined
fbq('trackCustom','UTMs',{'Source': source ,'Medium': medium, 'Campaign': campaign })
}
}
}
// Source : https://www.quirksmode.org/js/cookies.html ///
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment