Estoy creando una página de redireccionamiento donde quiero transmitir un evento a Google Analytics 4 usando gtag.js
Escribí un script usando la documentación ( https://developers.google.com/analytics/devguides/collection/gtagjs/sending-data?hl=cs ) y funciona para enlaces regulares, ejemplo de código:
<script type = 'text/javascript'> gtag('config', '<COUNTER ID>', { 'transport_type': 'beacon'}); gtag('event', 'event_name', { 'event_callback' : redir() }); function redir() { document.location = "https://www.instagram.com/<INSTAGRAM USERNAME>"; } </script>Es decir, el script establece el tipo de transporte, envía un evento y, después de enviar el evento, llama a 'event_callback', que redirige al usuario al sitio.
Cuando trato de redirigir a un usuario a la aplicación de Instagram y no a una página web, Google Analytics no muestra ni el evento transmitido ni la visita a la página.
Ejemplo de código con un enlace diferente:
<script type = 'text/javascript'> gtag('config', '<COUNTER ID>', { 'transport_type': 'beacon'}); gtag('event', 'event_name', { 'event_callback' : redir() }); function redir() { document.location = "instagram://user?username=<INSTAGRAM USERNAME>"; } </script>Todo es igual, solo que con un enlace diferente que abre una página en la aplicación del teléfono. Pero esta versión no funciona: el evento no llega a Google Analytics
¿Cual podría ser el problema? Intenté eliminar el tipo de transporte, pero no tuve éxito. Espero su ayuda, cualquier comentario es bienvenido.
Está llamando a la redirección en el momento en que se invoca, pero debe llamarla después de que se haya enviado el evento. event_callback espera una función, le das undefined en ambos casos.
La razón por la que su primer ejemplo puede funcionar es porque los sitios pueden completar las solicitudes iniciadas de manera predeterminada, incluso si abandona la página.
Abrir una aplicación directamente podría interrumpir la ejecución del código JavaScript.
Usar:
gtag('event', 'event_name', { 'event_callback' : redir });o envuelva la llamada de redirección en otra función.
gtag('event', 'event_name', { 'event_callback' : () => redir() });