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á!
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>
Em seguida, vamos colar este código dentro do Merlin:
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.
Você vai instalar o código de Javascript a depender de como estará utilizando o Merlin:
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).