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

Вы когда-нибудь писали тег в GTM, чтобы сказать, запустить событие GA, и вы получите немного меньше, чем ожидалось, попаданий? И вы проявили должную осмотрительность и все проверили, применили научный метод сведения и изоляции проблемы, и ничего не обнаружилось? Что ж, это может быть сюрпризом, но виноват тот невинный маленький фрагмент кода, который вы написали для запуска события GA! Удивлен? Подозрительный? Читать дальше…

Теги GTM

Предположим, вы хотите отслеживать количество и идентификаторы продуктов в корзине. Итак, вы делаете тег GTM, который запускается на странице корзины. Как умный менеджер по продукту, вы решаете разделить сбор данных и триггер события. Ваш первый тег (для сбора данных) выглядит примерно так:

//using https://www.toysrusmena.com as example
$(function(){
 jQuery(“.b-cart-products > div”).each(function(i,v){
    console.log(jQuery(v).attr(“data-tau-pid”)); //gets all the pids
   //add values to variable
   });
 dataLayer.push(variable); //add values to data layer
});

Он создается как HTML-тег. Второй тег - это тег события (при условии, что вы выполнили присвоение переменной и т. Д.).

Следующим шагом, который вы предпримете, является его тестирование - предварительный просмотр в нескольких браузерах и устройствах, и он работает! Легкий лимонный сок.

Эта проблема

Откуда они (не установлены)? Вы уже исключили пустую страницу корзины - в чем проблема?

Давайте посмотрим на JS - ваша первая функция - это $(function(), которая по сути является обработчиком событий jQuery document.ready. Как вы знаете, jQuery должен вызываться из внешнего источника (ваши серверы, серверы Google, серверы того сайта, с которого вы скопировали свой код: P). Часто он может не загружаться или не загружаться вовремя, в результате чего вы получаете эту ошибку в консоли:

$ (or jQuery) not defined.

И это причина, по которой ваши переменные не устанавливаются, а значит, вы получаете (не устанавливаете).

Исправление

Переходя к старой школе - используйте простой Javascript, чтобы убедиться, что документ загружен, а затем вызовите функцию:

window.onload = function(){
 jQuery(“.b-cart-products > div”).each(function(i,v){
    console.log(jQuery(v).attr(“data-tau-pid”)); //gets all the pids
   //add values to variable
   });
 dataLayer.push(variable); //add values to data layer
}

Вы можете прочитать все о спорах между window.onload и document.ready здесь, здесь и здесь.

Создание тегов GTM может быть сложной задачей, особенно когда у вас нет разработчика, который мог бы вам помочь (и даже тогда это все равно может быть сложно). Если у вас есть определенные проблемы с GTM, не стесняйтесь написать мне или напишите мне на Medium - если вы можете напечатать свою проблему, я могу напечатать решение :)

Спасибо за чтение!