Как можно достичь отправки конверсии в Яндекс Метрику только после того, как код метрики загрузится, включая его через Google Tag Manager? Требуется ли использовать setTimeout для ожидания загрузки кода?
Да, событие может произойти до того, как метрика будет загружена, если код метрики не загружен на странице в момент совершения события. Для того чтобы отправить конверсию в Яндекс Метрику только после загрузки кода метрики через 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', '*********'); });