Странное поведение: Google Analytics не передает событие, если перенаправление происходит в приложение instagram

#javascript #google-analytics #google-analytics-4 #gtag.js

Вопрос:

Задача

Я создаю страницу перенаправления, на которой я хочу передать событие в Google Analytics 4 с помощью gtag.js

Рабочая версия

Я написал сценарий, используя документацию (https://developers.google.com/analytics/devguides/collection/gtagjs/sending-data?hl=cs) и это работает для обычных ссылок, пример кода:

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

То есть скрипт задает тип транспорта, отправляет событие, а после отправки события вызывает «event_callback», который перенаправляет пользователя на сайт

Проблема

Когда я пытаюсь перенаправить пользователя в приложение Instagram, а не на веб-страницу, Google Analytics не отображает ни переданное событие, ни посещение страницы

Пример кода с другой ссылкой:

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

Все то же самое, только с другой ссылкой, которая открывает страницу в приложении для телефона. Но эта версия не работает — событие не приходит в Google analytics

В чем может быть проблема? Я попытался удалить тип транспорта, но это не увенчалось успехом. Я надеюсь на вашу помощь, любые комментарии приветствуются

Ответ №1:

Вы вызываете перенаправление в вызываемый момент, но вам нужно вызвать его после отправки события. event_callback ожидает функцию, вы даете ее undefined в обоих случаях.

Причина, по которой ваш первый пример может сработать, заключается в том, что сайтам по умолчанию разрешено выполнять запущенные запросы, даже если вы покидаете страницу.

Прямое открытие приложения может прервать выполнение кода JavaScript.

Воспользуйся:

 gtag('event', 'event_name', { 'event_callback' : redir });
 

или перенесите вызов перенаправления в другую функцию.

 gtag('event', 'event_name', { 'event_callback' : () => redir() });
 

Комментарии:

1. Я попробовал вариант, который вы описали. К сожалению, это не помогло