Advertisement
adrianvender

UTM Parser to Web Form

Jun 18th, 2016
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 7.16 KB | None | 0 0
  1. <script>
  2.   function UTMParserFormFill(
  3.     sourceSelector,
  4.     mediumSelector,
  5.     campaignSelector,
  6.     contentSelector,
  7.     termSelector,
  8.     utm_adgroup ){
  9.  
  10.   // SEARCH PARAMETERS
  11.   // search for any utm parameters within the query string
  12.   // create a cookie from those utm query string key values
  13.  
  14.   for (var i = sourceSelector.length - 1; i >= 0; i--) {
  15.    
  16.    // create function that establishes cookie from query string key / channel type values
  17.    function createCookie(utmcookie){
  18.    var now = new Date();
  19.    var time = now.getTime();
  20.    var expireTime = time + 1000*60*15;
  21.    now.setTime(expireTime);
  22.    document.cookie = "utmcookie=" + utmcookie+';expires='+now.toGMTString()+';path=/';
  23.    }
  24.  
  25.    // getCookie function
  26.    function getCookie(cname) {
  27.       var name = cname + "=";
  28.       var ca = document.cookie.split(';');
  29.       for(var i=0; i<ca.length; i++) {
  30.        var c = ca[i];
  31.        while (c.charAt(0)==' ') c = c.substring(1);
  32.        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
  33.      }
  34.      return "";
  35.    }
  36.  
  37.  // make sure there aren't any existing cookies
  38.  if( !getCookie("utmcookie").length > 0 ){
  39.    
  40.   // if url contains any utm parameters run code
  41.   if(window.location.href.indexOf("utm") > -1){
  42.  
  43.   // slice parameters to return query string
  44.   var QueryString = function () {
  45.     var query_string = {};
  46.     var query = window.location.search.substring(1);
  47.     var vars = query.split("&");
  48.     for (var i=0;i<vars.length;i++) {
  49.      var pair = vars[i].split("=");
  50.      if (typeof query_string[pair[0]] === "undefined") {
  51.        query_string[pair[0]] = pair[1];
  52.      } else if (typeof query_string[pair[0]] === "string") {
  53.        var arr = [ query_string[pair[0]], pair[1] ];
  54.        query_string[pair[0]] = arr;
  55.      } else {
  56.        query_string[pair[0]].push(pair[1]);
  57.      }
  58.    }
  59.    return query_string;
  60.  } ();
  61.  
  62.  // call each utm query string key value
  63.  // establish identifier of each key value followed by that key value ( separated by "=")
  64.  // separate each utm type by "|"
  65.  var utmcookie = "utm_source=" + QueryString.utm_source + "|" + "utm_medium=" + QueryString.utm_medium + "|" + "utm_campaign=" + QueryString.utm_campaign + "|" + "utm_content=" + QueryString.utm_content + "|" + "utm_term=" + QueryString.utm_term + "|" + "utm_adgroup=" + QueryString.utm_adgroup;
  66.  
  67.  createCookie(utmcookie);
  68.  }else{
  69.  // if UTM isn't present extract source / medium by
  70.  // Direct
  71.  // Organic
  72.  // Referral
  73.  // list of all prominent Search Engines
  74.  // can be found here http://antezeta.com/news/google-analytics-default-search-engines
  75.  var searchEngines = new RegExp("(about|alice|aol|ask|search\.avg|isearch\.babylon|baidu|bing|searchh\.conduit|google|incredimail}lycos|mamma|msn|naver|search\.netscape|pchome|search-results|terra|yahoo|yam|yandex)\.com|biglobe\.ne\.jp|cnn\.com\/SEARCH\/|search\.comcast\.net|daum\.net|eniro\.se|go\.mail\.ru|goo\.ne\.jp|kvasir\.no|najdi\.org\.mk|online\.onetcenter\.org|ozu\.es|rakuten\.co\.jp|\.rambler\.ru|search\.centrum\.cz|seznam\.cz|startsiden\.no|search\.virgilio\.it|voila\.fr|wp\.pl", "g");
  76.    if( document.referrer.match( searchEngines ) ){
  77.      var utmcookie = "utm_source=" + document.referrer + "|" + "utm_medium=" + "organic" + "|" + "utm_campaign=" + "undefined" + "|" + "utm_content=" + "undefined" + "|" + "utm_term=" + "undefined" + "|" + "utm_adgroup=" + "undefined";
  78.      createCookie(utmcookie);
  79.    }else if( document.referrer.length > 0 && !document.referrer.match(/safestep/g) ){
  80.      var utmcookie = "utm_source=" + document.referrer + "|" + "utm_medium=" + "referral" + "|" + "utm_campaign=" + "undefined" + "|" + "utm_content=" + "undefined" + "|" + "utm_term=" + "undefined" + "|" + "utm_adgroup=" + "undefined";
  81.  
  82.       createCookie(utmcookie);
  83.     }else{
  84.       var utmcookie = "utm_source=" + "direct" + "|" + "utm_medium=" + "none" + "|" + "utm_campaign=" + "undefined" + "|" + "utm_content=" + "undefined" + "|" + "utm_term=" + "undefined" + "|" + "utm_adgroup=" + "undefined";
  85.  
  86.       createCookie(utmcookie);
  87.     }
  88.   }
  89.   }
  90.  
  91.   if( sourceSelector != null || mediumSelector != null ){
  92.   // FORM FILL
  93.   // search for any utm cookies exist
  94.   // add the cookie values into the form
  95.  
  96.   for (var i = sourceSelector.length - 1; i >= 0; i--) {
  97.  
  98.   // identify each form element by ID and store in variable
  99.   var utm_source =  sourceSelector[i].value;
  100.   var utm_medium = mediumSelector[i].value;
  101.   var utm_campaign = campaignSelector[i].value;
  102.   var utm_content = contentSelector[i].value;
  103.   var utm_term = termSelector[i].value;
  104.   var utm_adgroup = adgroupSelector[i].value;
  105.  
  106.   // slice all cookies by cookie name
  107.   if (document.cookie.indexOf("utmcookie") > -1 == true){
  108.  
  109.     // get utm cookie
  110.     utmcookie = getCookie("utmcookie");
  111.  
  112.     // if utm cookie exists run code
  113.     if(utmcookie != null == true){
  114.  
  115.           // individually slice each utm parameter[i] value from
  116.           // the pipe delimiter and establish[i] value into the form per variable
  117.  
  118.           // if returned "undefined", do nothing
  119.  
  120.           // utm_source
  121.           if( utm_source != null == true ){
  122.             var source = utmcookie.split('|')[0].split('=').slice(1)
  123.             if( source == "undefined" ){ stop() }else{ sourceSelector[i].value = source; }
  124.           }
  125.           // utm_medium
  126.           if( utm_medium != null == true ){
  127.             var medium = utmcookie.split('|')[1].split('=').slice(1)
  128.             if( medium == "undefined" ){ stop() }else{ mediumSelector[i].value = medium; }
  129.           }
  130.           // utm_campaign
  131.           if( utm_campaign != null == true ){
  132.             var campaign = utmcookie.split('|')[2].split('=').slice(1)
  133.             if( campaign == "undefined" ){ stop() }else{ campaignSelector[i].value = campaign; }
  134.           }
  135.           // utm_content
  136.           if( utm_content != null == true ){
  137.             var content = utmcookie.split('|')[3].split('=').slice(1)
  138.             if( content == "undefined" ){ stop() }else{ contentSelector[i].value = content; }
  139.           }
  140.           // utm_term
  141.           if( utm_term != null == true ){
  142.             var term = utmcookie.split('|')[4].split('=').slice(1)
  143.             if( term == "undefined" ){ stop() }else{ termSelector[i].value = term; }
  144.           }
  145.           // utm_adgroup
  146.           if( utm_adgroup != null == true ){
  147.             var adgroup = utmcookie.split('|')[5].split('=').slice(1)
  148.             if( adgroup == "undefined" ){ stop() }else{ adgroupSelector[i].value = adgroup; }
  149.           }
  150.         }
  151.       }
  152.     }
  153.   }
  154.   }
  155.   }
  156.  
  157.   var sourceSelector = document.querySelectorAll('[name*="txtutm_source"]');
  158.   var mediumSelector = document.querySelectorAll('[name*="txtutm_medium"]');
  159.   var campaignSelector = document.querySelectorAll('[name*="txtutm_campaign"]');
  160.   var contentSelector = document.querySelectorAll('[name*="txtutm_content"]');
  161.   var termSelector = document.querySelectorAll('[name*="txtutm_term"]');
  162.   var adgroupSelector = document.querySelectorAll('[name*="txtutm_adgroup"]');
  163.  
  164.   UTMParserFormFill(
  165.     sourceSelector,
  166.     mediumSelector,
  167.     campaignSelector,
  168.     contentSelector,
  169.     termSelector,
  170.     adgroupSelector )
  171.  
  172. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement