
Moltes vegades, pel que fa a la mesura de dades, per la raó que siga, necessitem aprofundir molt més en la font de procedència d’eixes dades i que s’envien per correu electrònic.
Generalment, això ens arriba i podem guardar-ho en una base de dades externa o connectar-ho amb algun tipus de gestor de contactes i/o clients per a tindre un millor seguiment de la font de procedència original del contacte.
Per a fer això que vos comente, he seguit els passos d’este post:
L’article està en anglés i vaig eliminar la part del seguiment de la pàgina del formulari i la conversió, però vaig afegir el seguiment del Client ID, que pot ser més útil.
Estos canvis estan reflectits en el segon pas d’este article
Instal·lació
Explicaré la instal·lació per a aquells que no entenguen el codi, i variaré lleugerament el codi perquè pugues extraure:
- Client ID: ací, en principi, no tindràs problemes sempre que s’execute l’script d’analytics
- Campanya: únicament amb utm_campaign.
- Mitjà: sempre, excepte en el trànsit directe. Es pot modificar amb utm_medium.
- Font: sempre, excepte en el trànsit directe. Es pot modificar amb utm_source.
- Contingut: únicament amb utm_content.
- Terme: únicament amb utm_keyword.
Creem la cookie personalitzada
Copies el script següent i el guardes en una nova etiqueta de Google Tag Manager d’HTML personalitzat amb el nom «GA Custom Cookie Script«, que s’executarà en totes les pàgines.
Abans de guardar hauràs de canviar «align.ly» en el codi pel nom del teu domini, així: «queseo.es».
<script>
//
// .ooooo. ooo. .oo. .ooooo. oooo d8b
// d88' `88b `888P"Y88b d88' `88b `888""8P
// 888888888 88888 888 888 888 888 888
// 888 88888 888 888 888 888 888
// `"88888" o888o o888o `Y8bod8P' d888b
//
/***************************************************************************************************
Author: Allaedin Ezzedin
Company: E-Nor Inc
Last Updated: October 14, 2014
/***************************************************************************************************/
/******************* Google Analytics Legacy Tracking Code *******************/
// List all top-level domains that are belong to your organization for cross domain tracking
var domains = ["align.ly"];
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-XXXYYYZZZ-1']);
_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;
}
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;
}
</script>Traiem dades de la cookie per a inserir-les en el formulari
El pas següent és molt semblant a l’anterior, encara que este codi sí que inclou lleugeres modificacions respecte a l’original, com ja vaig indicar al principi.
Copies de nou un altre script, que veuràs a continuació, i el guardes en una nova etiqueta de Google Tag Manager d’HTML personalitzat amb el nom «GA Cookie Extraction Script«, també amb l’activador de totes les pàgines.
Ací també haurem de reemplaçar «align.ly» pel nostre nom de domini, en el meu cas seria «queseo.es».
<script>
// 2 second delay to let Google Analytics cookies load
setTimeout(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'))
// 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=.align.ly;" + "path=" + path;
}
// If cookie is empty, create cookie. This should be one loop.
if (readCookie("source") === null) {
setCookie("source", GATrafficSource.utm_source, 1, '/');
}
if (readCookie("medium") === null) {
setCookie("medium", GATrafficSource.utm_medium, 1, '/');
}
if (readCookie("content") === null) {
setCookie("content", GATrafficSource.utm_content, 1, '/');
}
if (readCookie("keyword") === null) {
setCookie("keyword", GATrafficSource.utm_term, 1, '/');
}
if (readCookie("campaign") === null) {
setCookie("campaign", campaignName, 1, '/');
}
var gaCookie = document.getElementById('gaCookie');
if(gaCookie) {
gaCookie.value = {{GA - Cookie de usuario}}.substr(6,45);
}
// Add cookie info to hidden fields for web to lead fields
jQuery('input:hidden[name=ga_source]').val(readCookie('source'));
jQuery('input:hidden[name=ga_medium]').val(readCookie('medium'));
jQuery('input:hidden[name=ga_content]').val(readCookie('content'));
jQuery('input:hidden[name=ga_term]').val(readCookie('keyword'));
jQuery('input:hidden[name=ga_campaign]').val(readCookie('campaign'));
}, 2000); // The 2 second delay from the beginning
</script>Important: una vegada creem esta etiqueta, hem d’anar a la que hem creat abans i indicar que, després de la seua activació, active esta etiqueta.

Creem la cookie d’usuari de Google Analytics
Este pas servix per a poder extraure el Client ID d’analytics.
Anem a variables i creem una nova variable personalitzada per l’usuari. Seleccionem Cookie d’origen i inserim el valor «_ga«. Després la guardem amb el nom de «GA – Cookie d’usuari«:

Inserim camps en el formulari de Contact Form 7
Segurament funcione en altres tipus de formularis, però de moment només l’he provat amb contact form 7, encara que l’article original estava pensat per a formularis de Sales Force.
El que has d’assegurar-te a l’hora de crear els camps en el formulari és que estiguen tal com s’especifica en el codi:

Per a guardar la cookie només necessitem un camp amb un valor de id=»gaCookie».
En el cas de les fonts, han de ser inputs invisibles i amb el name indicat, de manera que dins del formulari inserirem els camps següents:
[hidden gaCookie id:gaCookie]
[hidden ga_campaign]
[hidden ga_medium]
[hidden ga_source]
[hidden ga_content]
[hidden ga_keyword]Comprovacions
Guardem els canvis i publiquem el contenidor.
A continuació accedim des d’un navegador privat a Google o a una web que continga un enllaç a la nostra web, per a entrar-hi per una pàgina intermediària i comprovar que funciona correctament.
Una vegada accedim a la pàgina del formulari, hi fem clic amb el botó dret del ratolí i anem a l’opció d’inspeccionar per a veure el codi i confirmar que els camps s’omplin correctament:



