Com um toque de mágica e alguns pequenos passos, traquearemos a origem do usuário sem precisar de UTMs. Os códigos são grandes e complexos, mas o processo é bem simples. Vamos lá!

Dentro do Google Analytics

  1. Vamos copiar o código do Google Analytics que está na sua conta. Ele terá este estilo (mas você deve copiar o seu):

    <!-- Google tag (gtag.js) -->
    <script async src="<https://www.googletagmanager.com/gtag/js?id=G-YZZWE4QX2K>"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());
    
      gtag('config', 'G-XXXYYYZZZA');
    </script>
    
  2. Em seguida, vamos colar este código dentro do Merlin:

    1. No subitem ‘Adicione um código Javascript’, na aba de ‘Configurações’:

    Sem título.png

Feita a instalação do código do GA, vamos instalar um código de Javascript que será responsável por ler os cookies do navegador e enviar os dados de origem para o Merlin.

Código Javascript

Você vai instalar o código de Javascript a depender de como estará utilizando o Merlin:

  1. Merlin embedado no seu site: instale o código na <head> do seu site.
  2. Merlin como uma página: instale o código no mesmo local onde instalou o do GA, logo abaixo do código do GA (terá um print abaixo para demonstrar).
    1. ‘Configurações’
    2. ‘Adicione um código Javascript’

Código:

<script>
var domains = ["<https://site.com.br>"];
var source, medium, term, content,campaign, session_count, pageview_count;
var hostname = document.location.hostname;
hostname = hostname.match(/(([^.\\/]+\\.[^.\\/]{2,3}\\.[^.\\/]{2})|(([^.\\/]+\\.)[^.\\/]{2,4}))(\\/.*)?$/)[1];
hostname = hostname.toLowerCase();
var _gaq = _gaq || [];
// DON'T UPDATE THE GA ACCOUNT ID - Your site should be tracked using Universal Analytics outside this JavaScript code
//_gaq.push(['sfga._setAccount', 'UA-XXXYYYZZ-0']);
_gaq.push(['sfga._setDomainName', hostname]);
_gaq.push(['sfga._setAllowLinker', true]);
_gaq.push(['sfga._trackPageview']);
_gaq.push(function(){get_campaign_info();});
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? '<https://ssl>' : '<http://www>') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
/*******  Set Up Cross Domain Tracking  *******/
var arr = document.getElementsByTagName("a");
 for(i=0; i < arr.length; i++) {
    var tmp = arr[i].getAttribute("onclick");
    var doname ="";
    try
     {
        doname = arr[i].hostname.match(/(([^.\\/]+\\.[^.\\/]{2,3}\\.[^.\\/]{2})|(([^.\\/]+\\.)[^.\\/]{2,4}))(\\/.*)?$/)[1];
        doname = doname.toLowerCase();
     }
    catch(err)
     {
        doname = arr[i].href;
     }
    if (tmp != null)
        {
            tmp = String(tmp);
            if (tmp.indexOf('_gasf.push') > -1)
                continue;
        }/tools/167c4580-bcec-497d-b268-b6269e379773/edit
        for (var j = 0; j < domains.length; j++)
        {
            //Auto-Linker
            if ( doname != hostname && doname.indexOf(domains[j]) != -1 && doname.indexOf("mailto:") == -1)
            {
                arr[i].setAttribute("onclick",""+((tmp != null) ? tmp + '; ' : '')+"_gaq.push(['sfga._link', '"+arr[i].href+"']); return false;");
            }
        }
 }
/*******  Set Up Cross Domain Tracking  *******/
//This function extracts the "_utma", "_utmb", "_utmc" and "_utmz" strings from the cookies set by Google Analytics
//This function was originally written by the Google Analytics team (urchin.js)
function get_campaign_info()
{
    var utma = get_utm_value(document.cookie, '__utma=', ';');
    var utmb = get_utm_value(document.cookie, '__utmb=', ';');
    var utmc = get_utm_value(document.cookie, '__utmc=', ';');
    var utmz = get_utm_value(document.cookie, '__utmz=', ';');
    source = get_utm_value(utmz, 'utmcsr=', '|');
    medium = get_utm_value(utmz, 'utmcmd=', '|');
    term = get_utm_value(utmz, 'utmctr=', '|');
    content = get_utm_value(utmz, 'utmcct=', '|');
    campaign = get_utm_value(utmz, 'utmccn=', '|');
    gclid = get_utm_value(utmz, 'utmgclid=', '|');
    session_count = get_session_count(utma);
    pageview_count = get_pageview_count(utmb, utmc);
    if (gclid !="-") {
     source = 'google';
     medium = 'cpc';
    }
}
function get_utm_value(l,n,s) {
    if (!l || l=="" || !n || n=="" || !s || s=="") return "-";
    var i, j, k, utm="-";
    i=l.indexOf(n);
    k=n.indexOf("=")+1;
    if (i > -1) {
        j=l.indexOf(s,i);
        if (j < 0) {
            j=l.length;
        }
        utm=l.substring((i+k),j);
    }
    return utm;
}
//This function extracts the "Count of Sessions" value from the _utma cookie
function get_session_count(str) {
var i, vc='-';
    if (str != '-') {
        i = str.lastIndexOf(".");
        i++;
        vc = str.substring(i);
    }
return vc;
}
//This function extracts the "Count of Pageviews" value from the _utmb cookie
function get_pageview_count(utmb,utmc) {
    var i, j, pc='-';
        if(utmb != '-' && utmc != '-'){
            utmc=utmc+'.';
            i=utmc.length;
            j=utmb.indexOf(".", i);
            pc=utmb.substring(i,j);
        }
    return pc;
}
window.addEventListener('load', function() {
    // Split the GA cookie
    var GATrafficSource = (function () {
        var pairs = (/(?:^|; )__utmz=([^;]*)/.exec(document.cookie) || []).slice(1).pop().split('.').slice(4).join('.').split('|');
        var vals = {};
        for (var i = 0; i < pairs.length; i++) {
          var temp = pairs[i].split('=');
          vals[temp[0]] = temp[1];
        }
        return {
          'utm_source': (vals.utmgclid) ? "google" : vals.utmcsr,
          'utm_medium': (vals.utmgclid) ? "cpc" : vals.utmcmd,
          'utm_campaign': vals.utmccn,
          'utm_content': vals.utmcct,
          'utm_term': vals.utmctr
        };
    }());
    // Find and split campaign name cookie
    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;
    }
    var campaignName = /[^(=)]*(?=\\|utmcmd)/.exec(readCookie('__utmz'))
    var conversion_page = window.location.pathname;
    var landing_page = window.location.pathname;
      // Create cookie function
    function setCookie(cname, cvalue, exdays, path) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
        var expires = "expires=" + d.toGMTString();
        document.cookie = cname + "=" + cvalue + "; " + expires + ";domain=.site.com.br;" + "path=" + path;
    }
    if(readCookie('_utm_first_source') == null) {
        //SOURCE
        setCookie('_utm_first_source', GATrafficSource.utm_source, 180);
        setCookie('_utm_first_medium', GATrafficSource.utm_medium, 180);
        setCookie('_utm_first_content', GATrafficSource.utm_content, 180);
        setCookie('_utm_first_keyword', GATrafficSource.utm_term, 180);
        setCookie('_utm_first_campaign', campaignName, 180);
        setCookie('_utm_first_page', landing_page, 180);
        //LAST
        setCookie('_utm_last_source', GATrafficSource.utm_source, 180);
        setCookie('_utm_last_medium', GATrafficSource.utm_medium, 180);
        setCookie('_utm_last_content', GATrafficSource.utm_content, 180);
        setCookie('_utm_last_keyword', GATrafficSource.utm_term, 180);
        setCookie('_utm_last_campaign', campaignName, 180);
        setCookie('_utm_last_page', landing_page, 180);
    }
    if(readCookie('_utm_last_source') != null) {
      //LAST UPDATE
      setCookie('_utm_last_source', GATrafficSource.utm_source, 180);
      setCookie('_utm_last_medium', GATrafficSource.utm_medium, 180);
      setCookie('_utm_last_content', GATrafficSource.utm_content, 180);
      setCookie('_utm_last_keyword', GATrafficSource.utm_term, 180);
      setCookie('_utm_last_campaign', campaignName, 180);
      setCookie('_utm_last_page', landing_page, 180);
    }
});
</script>

Importante (1): no código acima há dois campos que contém um dado de website. Nesse campo deverá conter o domínio do seu site. Para isso, substitua esses campos pelo seu domínio (colocamos prints abaixo demonstrando onde esses campos estão).

Importante (2): além dos campos de website, tem também um campo com o código que identifica a sua conta do Google Analytics. Esse campo também deve ser substituído pela sua id (colocamos print abaixo demonstrando onde está esse campo).