Может ли событие произойти до того, как метрика будет загружена?

Как можно достичь отправки конверсии в Яндекс Метрику только после того, как код метрики загрузится, включая его через Google Tag Manager? Требуется ли использовать setTimeout для ожидания загрузки кода?
  • 25 августа 2024 г. 13:54
Ответы на вопрос 2
Да, событие может произойти до того, как метрика будет загружена, если код метрики не загружен на странице в момент совершения события.

Для того чтобы отправить конверсию в Яндекс Метрику только после загрузки кода метрики через Google Tag Manager, можно использовать встроенный слушатель событий загрузки скрипта метрики. Необходимо создать пользовательское событие в Google Tag Manager, которое будет срабатывать при загрузке скрипта метрики. 

В этом пользовательском событии можно указать триггер на загрузку скрипта метрики, после чего поместить тэг отправки конверсии в Яндекс Метрику в этот триггер. Таким образом, конверсия будет отправляться только после загрузки кода метрики.

Использование setTimeout для ожидания загрузки кода не требуется, так как Google Tag Manager предоставляет более надежные и удобные способы контроля последовательности загрузки скриптов и отправки конверсий.
Вот написал такой хелпер, может пригодится кому. 
function ym_conversion(callback, checkInterval = 100) {
    const interval = setInterval(() => {
        if (typeof window['ym'] !== 'undefined') {
            clearInterval(interval);
            callback();
        }
    }, checkInterval);
}

ym_conversion(() => {
    ym('xxxxxxxx', 'reachGoal', '*********');
});
Похожие вопросы