He configurado Google Analytics para rastrear enlaces salientes. Sin embargo, también he instalado un complemento de WordPress llamado Localizador de enlaces de Amazon que modifica la URL saliente de modo que su formato final sea prourls.com?url=www.amazon.com
en vez de www.amazon.com
.
¿Es posible modificar la secuencia de comandos de Analytics para que estos clics en enlaces salientes aún puedan rastrearse?
Sally C.J.
PASO 1: Agrega el trackOutboundLink
script para su sitio web.
Agrega este código en el <head></head>
sección del HTML de la página: (el guión completo se encuentra en la parte inferior de esta página, pero use este para ayudar a minimizar el tamaño de la página)
<script>
var trackOutboundLink=function(t,e){var n,o="object"==typeof t?t.href:t,a=document.createElement("a");function c(){document.location=o}e=e||o,a.href=e,/\bprourls\.com?$/i.test(a.host)?e=(n=/[\?&]url=([^&#]+)/.test(a.search)&&RegExp.$1||"")?decodeURIComponent(n):e:/\blinksynergy\.com$/i.test(a.host)&&(e=(n=/[\?&]murl=([^&#]+)/.test(a.search)&&RegExp.$1||"")?decodeURIComponent(n):e),"function"==typeof gtag?gtag("event","click",{event_category:"outbound",event_label:e,transport_type:"beacon",event_callback:c}):ga("send","event","outbound","click",e,{transport:"beacon",hitCallback:c})};window.addEventListener("load",function(){var t,e,n=document.getElementsByTagName("a")||[];function o
</script>
Tenga en cuenta que el script es una versión modificada/personalizada del script proporcionado por Google Analytics:
-
https://support.google.com/analytics/answer/1136920?hl=en – para el viejo
analytics.js
(oga.js
) biblioteca. -
https://support.google.com/analytics/answer/7478520?hl=es — por lo nuevo
gtag.js
biblioteca.
PASO 2: Agregar data-outbound-link="1"
al HTML de los enlaces salientes.
Para cada enlace saliente que desee rastrear, agregue esto al HTML del enlace:
data-outbound-link="1"
(Y si previamente añadiste onclick="trackOutboundLink('http://www.example.com'); return false;"
al HTML del enlace, luego reemplácelo con el código anterior).
Así que en lugar de: <a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return false;">Check out example.com</a>
..utilizar este: <a href="http://www.example.com" data-outbound-link="1">Check out example.com</a>
EL GUIÓN COMPLETO
A continuación se muestra la versión completa y sin minificar del disfraz trackOutboundLink
guión: (use esto solo como referencia)
<script>
var trackOutboundLink = function(link, url2track) {
var url2visit = ('object' === typeof link) ? link.href : link,
a = document.createElement('a'),
b;
url2track = url2track || url2visit;
a.href = url2track;
// Dynamic redirect URLs via Prourls.com; this was for Amazon URLs.
if (/\bprourls\.com?$/i.test(a.host)) {
b = (/[\?&]url=([^&#]+)/.test(a.search) && RegExp.$1) || '';
url2track = b ? decodeURIComponent(b) : url2track;
// Dynamic redirect URLs via Link Synergy; this was for Footlocker URLs.
} else if (/\blinksynergy\.com$/i.test(a.host)) {
b = (/[\?&]murl=([^&#]+)/.test(a.search) && RegExp.$1) || '';
url2track = b ? decodeURIComponent(b) : url2track;
}
// All other URLs are not parsed and expected to be valid outbound URLs.
function onTracked() {
//alert('Tracked: ' + url2track);
document.location = url2visit;
}
if ('function' === typeof gtag) {
gtag('event', 'click', {
'event_category': 'outbound',
'event_label': url2track,
'transport_type': 'beacon',
'event_callback': onTracked
});
} else {
ga('send', 'event', 'outbound', 'click', url2track, {
'transport': 'beacon',
'hitCallback': onTracked
});
}
};
window.addEventListener('load', function() {
var links = document.getElementsByTagName('a') || [],
i, a;
function _go(e) {
e.preventDefault();
// Track a custom URL address, if specified.
var b = this.getAttribute('data-outbound-link');
trackOutboundLink(this.href, '1' === b ? '' : b);
}
for (i = 0; i < links.length; i++) {
a = links[i];
if (!a.href || /^#/.test(a.href) || location.host === a.host) {
continue;
}
if ('' !== a.getAttribute('data-outbound-link')) {
a.addEventListener('click', _go, false);
}
}
}, false);
</script>
-
Pruebe primero con los controladores en un clic incluidoo sin eliminar los controladores al hacer clic existentes.
– Sally C.J.
29/04/2018 a las 21:50
-
Podemos detectar los clics con el botón derecho (y deshabilitar el clic con el botón derecho para algunos, si no la mayoría de los navegadores) o la acción de mostrar el menú contextual/clic con el botón derecho, pero si el usuario eligió abrir el enlace en una nueva pestaña (o ventana) o no; eso es algo que yo no creemos que podemos detectar. Sin embargo, si desea rastrear el enlace al haciendo clic derecho sobre él, entonces eso podemos hacerlo. Quiero decir, podemos rastrearlo en, por ejemplo, la categoría “clic derecho” en lugar de “clic”. Déjame saber lo que piensas. Y lo siento si este mensaje no fue útil…
– Sally C.J.
2 de mayo de 2018 a las 9:03
-
Gracias Sally por la explicación detallada. Resulta que en realidad hay un problema mayor en el sentido de que los enlaces que no son de Amazon solo se rastrean aproximadamente el 20% del tiempo. No tengo idea de lo que está pasando. Este ha sido un problema tan frustrante de resolver.
– zgall1
2 de mayo de 2018 a las 12:41
-
Rastreé los clics en el enlace en tiempo real usando GA y puedo ver los clics en el enlace de Amazon el 100% del tiempo, pero solo veo los otros clics en el enlace aproximadamente el 20% del tiempo. Estoy seguro de que arreglar esto requeriría un enfoque práctico. ¡Agradezco toda la ayuda que has brindado!
– zgall1
2 mayo 2018 a las 16:37
-
Desearía poder ayudarlo más, pero aparte del lado técnico/de codificación, mis habilidades de GA son bastante “regulares”, así que le deseo todo lo mejor y espero que resuelva el problema. ¡Salud!
– Sally C.J.
2 mayo 2018 a las 17:53
vinoaj
Prueba esto:
PrimeroQuitar el onclick
controladores en todos sus enlaces.
Segundo Incluya el siguiente código en su <head>
bloquear
var trackOutboundLink = function(url) {
var newUrl = url;
var re = /prourls\.co.*\?.*url=(.*)/
var matches = url.match(re);
if (matches && matches.length > 0) {
newUrl = matches[1]
}
// console.log(newUrl);
ga('send', 'event', 'outbound', 'click', newUrl, {
'transport': 'beacon',
'hitCallback': function(){document.location = url;}
});
};
var btns = document.querySelectorAll('a.btn');
for (var i = 0, l = btns.length; i < l; i++) {
btns[i].addEventListener('click', function(e) {
// console.log(e.target.href);
trackOutboundLink(e.target.href);
});
}
Modificado trackOutboundLink()
ahora:
- Comprueba si es de la forma
prourls.com?url=XXXX
- Extrae el valor de la
url
parámetro - Pasa ese valor a la llamada de seguimiento de eventos de GA
-
He añadido el código pero parece que no funciona. Si desea verificar la configuración usted mismo, consulte el enlace “Verificar precio (Amazon)” en la siguiente página: ballershoesdb.com/shoes/adidas-crazy-explosivo-2017
– zgall1
23 de abril de 2018 a las 12:47
-
Las URL en su sitio son diferentes a las que describió en su pregunta. Modifiqué la expresión regular en mi código. Vuelva a intentarlo y avíseme cómo le fue.
– vinoaj
24 de abril de 2018 a las 9:54
-
Perdón por la confusion. Actualicé el código pero todavía no veo el evento correspondiente dentro de Analytics cuando se hace clic en el enlace. Sé que funciona en general, ya que puedo ver clics en otros enlaces clasificados como eventos.
– zgall1
24 de abril de 2018 a las 13:41
-
Por favor revise mi información adicional arriba
– vinoaj
25 de abril de 2018 a las 0:32
-
Todavía no parece estar funcionando. Los enlaces de Footlocker y eBay están siendo rastreados, pero nada relacionado con Amazon (Captura de pantalla: evernote.com/l/Adw8uB6rMgtKiqHeUXrZVSLhkxNNRDv2LCo). Si desea echar un vistazo al backend del sitio, envíe un correo electrónico a la dirección en el pie de página del sitio y puedo proporcionarle la información necesaria.
– zgall1
25 de abril de 2018 a las 4:34