ver total los google eventos evento etiqueta enviar editar donde datos categoria javascript jquery google-analytics google-tag-manager

javascript - total - Google Analytics enviar función de devolución de llamada de evento



onclick ga (3)

De los documentos: https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback

ga(''send'', ''pageview'', { ''page'': ''/my-new-page'', ''hitCallback'': function() { alert(''analytics.js done sending data''); } });

En este ejemplo, el objeto de nombre de campo configura tanto el parámetro de página como la configuración de hitCallback. Una vez que el rastreador haya completado el envío de datos, se mostrará un cuadro de alerta al usuario.

Puedes usar hitCallback para eventos, vistas de página, etc.

Estoy tratando de enviar el evento go google analytics después de que el usuario esté registrado y antes de que sea redirigido. Estoy usando Google Tag Manager y univerasl js.

Primero, estaba tratando de usar el objeto dataLayer , como se describe aquí: developers.google

Así se veía mi función:

//Registering new user via ajax $.ajax(''/register/'', { success: function() { //Pushing event to dataLayer dataLayer.push({ ''Category'': ''Registration Process'', ''event'': ''Registration Submit Btn'' }); //Logging in new user and redirecting the page with a timeout setTimeout(function(){ loginAction(); }, 500) } })

El problema es que estaba recibiendo aproximadamente el 25% de todos los eventos, todos los demás están perdidos . No sé si y cuándo se envía realmente el evento a Google después de agregar el objeto a dataLayer y creo que el 75% de los eventos no se enviaron en absoluto.

Ahora estoy tratando de implementar otro enfoque:

//Registering new user via ajax $.ajax(''/register/'', { success: function() { //Sending event through ga(''send'') parent.ga(''send'', ''event'', ''Registration Process'', ''Registration Submit Btn''); //Logging in new user and redirecting the page with a timeout setTimeout(function(){ loginAction(); }, 500) } })

Pero ga (''enviar'') no tiene ninguna función de devolución de llamada de nuevo!

¿Cómo puedo asegurarme de que el evento se envió realmente a google, usando dataLayer o ga ("enviar")?


Desde el documento de Google Analytic https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitCallback News

// Alerts the user when a hit is sent. ga(''send'', ''pageview'', { ''hitCallback'': function() { alert(''hit sent''); } });

Puedes editar la función hitCallback para el tuyo.

O

// Use a timeout to ensure the execution of critical application code. ga(''send'', ''pageview'', {''hitCallback'': criticalCode}); setTimeout(criticalCode, 2000); // Only run the critical code once. var alreadyCalled = false; function criticalCode() { if (alreadyCalled) return; alreadyCalled = true; // Run critical code here... }

Aquí puede definir su función ( criticalCode ) en el ejemplo anterior que puede garantizar los datos enviados a Google Analytic y luego trabajar con su código.

Para comprender mejor la API de analítica, fyr: https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference


Finalmente lo tengo. Es bastante complicado y no se describe en los documentos. En mi caso, uso el Administrador de etiquetas de Google, por lo que hay algunas soluciones que tuve que hacer para disparar un evento con éxito y obtener una devolución de llamada.

Primero, tenemos que obtener ClientId , que se requiere con cualquier evento enviado a los servidores de Google. En realidad, se mantiene en las cookies, pero Google no recomienda tomarlas directamente desde allí.

Aquí es cómo Google recomienda obtenerlo, pero esto no funcionará si está utilizando el Administrador de etiquetas de Google.

ga(function(tracker) { var clientId = tracker.get(''clientId''); });

En su lugar, tienes que obtener ClientId del método getAll.

var clientId = ga.getAll()[0].get(''clientId'');

Después, tienes que crear un nuevo rastreador.

ga(''create'', ''UA-XXX-YYY'', { ''clientId'': clientId });

Y después de eso podemos enviar un evento:

ga(''send'', ''event'', { ''eventCategory'': ''YOUR Category Name'', //required ''eventAction'': ''YOUR Action name'', //required ''eventLabel'': ''YOUR Label'', ''eventValue'': 1, ''hitCallback'': function() { console.log(''Sent!!''); //callback function }, ''hitCallbackFail'' : function () { console.log("Unable to send Google Analytics data"); //callback function } });