1. Inici
  2. Blog
  3. Google Analytics
Google Analytics

Enviar fonts de trànsit amb contact form 7

Eric Jorge Seguí Parejo7 min de lectura
0%
Enviar fonts de trànsit amb contact form 7

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:

https://www.align.ly/blog/values-google-analytics-form-salesforce-campaign/

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.

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>

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.

activació cookie

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«:

cookie tag manager

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:

camps formulari font trànsit

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:

valors formularis name
Eric en pixel art llegint un llibre
Eric Jorge Seguí Parejo

Consultor SEO tècnic a València des de fa més de 16 anys. Ponent i organitzador en WordCamp Valencia i autor en els blogs de Semrush i Publisuites. Més sobre mi

Compartir

Ho apliquem a la teua web?

Conta'm què està passant en la teua web i et dic si puc ajudar-te i quan tinc disponibilitat.