Руководство для разработчиков

В этом руководстве рассказывается, как реализовать Google Менеджер тегов на вашем сайте.

Как работать с уровнями данных

Чтобы создать максимально простое, гибкое и переносимое решение, рекомендуем использовать Google Менеджер тегов совместно с уровнем данных. Уровень данных – это объект, содержащий всю информацию, которую требуется передавать в Менеджер тегов. События, переменные и прочая информация могут передаваться в Менеджер тегов через уровень данных. При этом в Менеджере тегов можно настраивать триггеры, основанные на значении переменных (например, активацию тега ремаркетинга, когда purchase_total [общая_сумма_покупки] более 6000 руб.) или на определенных событиях. Значения переменных можно также передавать в другие теги (например, значение purchase_total [общая_сумма_покупки] в поле со значением тега).

Вместо ссылок на переменные, сведения о транзакциях, категории страниц и другие важные данные, находящиеся в разных частях страницы, Google Менеджер тегов может ссылаться на информацию, переданную на уровень данных. Уровень данных не является обязательным. Если вы не реализуете его, то все равно сможете получать доступ к значениям со страницы с помощью функции Переменные, однако не сможете использовать события. Если применять уровень данных с переменными и их значениями, то они будут доступны для активации тегов в любой момент, вам не придется ждать, пока страница с ними будет полностью загружена.

Как добавить на страницу переменные уровня данных

Чтобы настроить уровень данных, добавьте в начало страницы перед контейнером следующий фрагмент кода:

<script>
  dataLayer = [];
</script>

Приведенный выше фрагмент кода представляет собой пустой объект, который может быть заполнен информацией для передачи в Google Менеджер тегов. Например, нам может потребоваться задать на уровне данных переменные, чтобы указать, что это страница регистрации и что ее посетители считаются высокоценными клиентами. Для этого нужно заполнить уровень данных следующим образом:

<script>
  dataLayer = [{
    'pageCategory': 'signup',
    'visitorType': 'high-value'
  }];
</script>

Например, Google Менеджер тегов можно настроить так, чтобы теги активировались на всех страницах категории signup [регистрация] и/или на тех, посетители которых относятся к категории high-value [высокоценные]. Код уровня данных обязательно должен располагаться выше контейнера, как описано в кратком руководстве по началу работы.

Если код уровня данных вызывается после контейнера, переменные, заданные на уровне данных, будут недоступны для Менеджера тегов, и он не сможет выборочно активировать теги при загрузке страницы. Рассмотрим примеры ниже:

Неверно

<!-- Google Tag Manager -->
...
<!-- End Google Tag Manager -->
<script>
  dataLayer = [{
    'pageCategory': 'signup',
    'visitorType': 'high-value'
  }];
</script>

Верно

<script>
  dataLayer = [{
    'pageCategory': 'signup',
    'visitorType': 'high-value'
  }];
</script>
<!-- Google Tag Manager -->
...
<!-- End Google Tag Manager -->

Все переменные, объявленные в объекте уровня данных, сохраняются, пока посетитель остается на текущей странице. Переменные уровня данных, которые релевантны для нескольких страниц (например, visitorType [тип_посетителя]), должны быть объявлены в уровне данных на каждой странице. Не обязательно задавать один и тот же набор переменных в уровне данных каждой страницы, но необходимо использовать единый принцип их именования. Другими словами, если для страницы регистрации вы задаете категорию с помощью оператора pageCategory [категория_страницы], необходимо использовать тот же оператор (pageCategory) и на странице покупки.

Уровень данных не обязательно задавать явным образом. Поэтому, если вы решили не добавлять код уровня данных (и не указывать в нем переменные), фрагмент-контейнер Google Менеджера тегов инициирует объект уровня данных самостоятельно.

Как использовать уровень данных в обработчике событий HTML

В Google Менеджере тегов доступна специальная переменная уровня данных event [событие], которая используется в блоках прослушивания событий JavaScript для активации тегов при взаимодействии пользователя с элементами сайта (например, кнопками). Допустим, вы хотите, чтобы тег отслеживания конверсий срабатывал при нажатии кнопки Submit [отправить] в форме подписки на рассылку. События могут вызываться в результате взаимодействия пользователя с элементами сайта (ссылками, кнопками, Flash-компонентами меню) или в результате срабатывания JavaScript (например, при задержке).

Для этого используется вызов push API в качестве метода для уровня данных страницы (например, привязанного к определенным элементам, которые нужно отслеживать). Самый простой синтаксис для настройки события выглядит так:

dataLayer.push({'event': 'event_name'});

В строке event_name [имя_события] указывается, что собой представляет конкретное событие или элемент.

Например, чтобы настроить событие для нажатия кнопки, можно изменить ссылку на кнопку, чтобы вызвать push() API:

<a href="#" name="button1" onclick="dataLayer.push({'event': 'button1-click'});" >Button 1</a>

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

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

В случае событий этот результат достигается вызовом push() API, который добавляет переменные в уровень данных и заменяет их. Самый простой синтаксис для настройки динамических переменных уровня данных выглядит так:

dataLayer.push({'variable_name': 'variable_value'});

Здесь variable_name – название переменной уровня данных, которую нужно настроить, а variable_value – значение переменной, которое нужно задать или заменить.

В примере ниже показано, как настроить динамическую переменную уровня данных для выбора цвета (например, в виджете конструктора автомобиля):

dataLayer.push({'color': 'red'});

Одновременная передача нескольких переменных

Вы можете передавать несколько переменных и событий одновременно с помощью одного оператора dataLayer.push(). Вот пример того, как это сделать:

dataLayer.push({
  'color': 'red',
  'conversionValue': 50,
  'event': 'customizeCar'
});

Этот же принцип можно использовать для обработчика событий ссылки:

<a href="#"
   name="color"
   onclick="dataLayer.push({
     'color': 'red',
     'conversionValue': 50,
     'event': 'customizeCar'});">Customize Color</a>

Следует учитывать, что передача на уровень данных переменной с тем же названием, что и у существующей, приведет к перезаписи текущего значения новым. Например, если в момент нажатия на ссылку выше на уровне данных уже была объявлена переменная color [цвет] со значением blue [синий], оно будет заменено новым (red [красный]).

Как работает асинхронный синтаксис

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

Асинхронный синтаксис возможен благодаря объекту dataLayer [уровень_данных]. Он срабатывает в порядке очереди, то есть обрабатывает вызовы API и активирует соответствующие теги по мере поступления обращений. Чтобы добавить в очередь событие, используется метод dataLayer.push. Также метод позволяет dataLayer.push передавать в Менеджер тегов дополнительные метаданные с помощью переменных и задавать события.

Создание объекта dataLayer можно задать перед фрагментом кода Менеджера тегов. Если объект dataLayer не определен, он будет создан Менеджером тегов.

Чтобы больше узнать об асинхронном синтаксисе, прочитайте о Ссылках на отслеживание для метода dataLayer.push.

Как избежать распространенных ошибок

При настройке Менеджера тегов следует учитывать перечисленные ниже особенности.

Слой данных dataLayer нельзя переопределять

Когда вы назначаете значения в уровень данных dataLayer (например, так: dataLayer = [{'item': 'value'}]), любые существующие значения будут перезаписаны. Рекомендуется задать уровень данных в коде как можно выше, над фрагментом-контейнером и любыми другими фрагментами кода Google Оптимизации для скрытия страницы. После того как вы объявите уровень данных dataLayer, можно использовать метод dataLayer.push({'item': 'value'}), чтобы позднее добавить в него дополнительные значения с помощью скриптов.

В имени объектов dataLayer учитывается регистр

Если вы в названии объекта используете неверный регистр, он не сможет передавать переменные или события. Примеры:

datalayer.push({'pageTitle': 'Home'});    // Won't work
dataLayer.push({'pageTitle': 'Home'});    // Better

Имена переменных должны быть заключены в кавычки

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

dataLayer.push({new-variable: 'value'});      // Won't work
dataLayer.push({'new-variable': 'value'});    // Better

Имена переменных должны быть одинаковыми на разных страницах

Если вы используете разные имена для одних и тех же переменных на разных страницах, Менеджер тегов не сможет последовательно запускать на них теги. Примеры:

Неверный код
// Homepage:
dataLayer.push({'visitorType': 'low-value'});

// Checkout Page:
dataLayer.push({'visitor_type': 'high-value'});
Рабочий код
// Homepage:
dataLayer.push({'visitorType': 'low-value'});

// Checkout Page:
dataLayer.push({'visitorType': 'high-value'});

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

Для того чтобы теги активировались при загрузке страницы и выполнении заданного условия (например, на страницах, для которых переменной pageCategory присвоено значение sports [спорт]), переменная pageCategory должна быть определена в слое данных, над фрагментом-контейнером (например, 'pageCategory': 'sports'). Если переменные, передаваемые на уровень данных (например, с помощью метода dataLayer.push()), расположены после фрагмента-контейнера, они не смогут активировать теги при загрузке страниц, соответствующих определенному условию.

Теги, внедренные с помощью Менеджера тегов, не должны быть одновременно заданы в коде или добавляться с помощью других инструментов

Все теги, активируемые Менеджером тегов, должны быть перенесены в Менеджер тегов, а не просто скопированы туда (о миграции тегов читайте здесь). Если одновременно внедрять теги как с помощью Менеджера тегов, так и с помощью других систем или через код сайта, это может привести к увеличению объема данных или проблемам с их целостностью. Например, если вы переносите тег отслеживания Google Аналитики в Менеджер тегов, это тег необходимо удалить из кода вашего сайта.

Переименование уровня данных

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

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','myNewName','GTM-XXXX');</script>
<!-- End Google Tag Manager -->

При этом название уровня данных также необходимо изменить во всех ссылках на уровень данных, например при определении уровня данных над фрагментом-контейнером или передаче событий и динамических переменных уровня данных с помощью push() API.

<script>
  myNewName = [{
    // ...
  }];
  myNewName.push({'variable_name': 'variable_value'});
</script>

Перенос тегов в Менеджер тегов

Чтобы использовать Менеджер тегов максимально эффективно, рекомендуем перенести в него большую часть ваших тегов (кроме неподдерживаемых). Ниже приводятся пошаговые инструкции для переноса.

  1. Создайте схему сайта (необязательно)

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

  2. Внедрите стандартный фрагмент кода Менеджера тегов

    Составив схему, добавьте на сайт один (пустой) фрагмент кода Менеджера тегов и разверните его. Подробную информацию об этом вы найдете в кратком руководстве.

  3. Добавьте события и переменные

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

  4. Добавьте теги и связанные с ними триггеры в интерфейс управления Менеджера тегов

    После того как вы добавите на сайт фрагмент кода Менеджера тегов и API сбора данных, необходимо добавить теги сайта в пользовательский интерфейс, но публиковать их пока НЕ НУЖНО. Просто добавьте теги с вашего сайта в интерфейс управления Менеджера тегов и настройте их, используя соответствующие шаблоны, а также настройте триггеры.

  5. Замена тегов

    Одновременно удалите старые теги и опубликуйте новые в Менеджере тегов. Для этого в течение нескольких минут выполните следующие операции:

    • Удалите теги сайта с помощью разовой передачи кода.
    • Убедитесь, что предыдущий шаг выполнен успешно, и опубликуйте текущую версию контейнера.

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

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

Работа с несколькими доменами

Вы можете использовать один и тот же контейнер для нескольких сайтов. Однако мы рекомендуем развертывать каждый веб-ресурс с собственным контейнером. Тогда изменения, произведенные на одном сайте, не будут затрагивать другие сайты, на которых используется тот же самый контейнер. Однако в ситуациях, когда несколько доменов верхнего уровня или субдоменов относятся к одному и тому же сайту, управление тегами на этих сайтах с помощью одного и того же контейнера Менеджера тегов оправданно.

Если у вас один контейнер для нескольких доменов, тщательно настройте теги и триггеры в Менеджере тегов. Использование в Менеджере тегов триггера по умолчанию для всех страниц ($url matches RegEx .*) приведет к срабатыванию тегов на всех страницах всех доменов, где размещен фрагмент-контейнер. Поскольку настройки или цели некоторых тегов зависят от доменов, на которых они размещаются, может понадобиться создать собственные триггеры (или даже удалить триггер "Все страницы"), чтобы обеспечить активацию тегов на всех страницах одного или всех доменов.

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

Изображение со схемой нескольких доменов

В этом случае вам потребуется вручную задать основной домен, на котором будут настроены файлы cookie Google Аналитики, добавив строку в код отслеживания Google Аналитики (например, настроить файлы cookie для общего домена .example-petstore.com на сайтах www.example-petstore.com и dogs.example-petstore.com). Однако для дополнительного сайта, например www.my-example-blogsite.com, вы можете установить файлы cookie для домена .my-example-blogsite.com. Таким образом, один из двух тегов отслеживания Google Аналитики (с настройками для .example-petstore.com и .my-example-blogsite.com) будет активировать теги в каждом из этих доменов. Если в оба домена добавить один и тот же контейнер Менеджера тегов (с помощью используемого по умолчанию триггера "Все страницы"), все теги будут срабатывать на всех страницах обоих доменов.

Использование нескольких контейнеров на одной странице

Чтобы обеспечить эффективную работу страницы, добавляйте на нее как можно меньше контейнеров Менеджера тегов.

Если вам необходимо использовать больше одного контейнера, внедрите все фрагменты-контейнеры в одном объекте уровня данных. Пример для двух контейнеров:

  1. Скопируйте приведенный ниже код JavaScript и добавьте его на страницу как можно ближе к открывающему тегу <head>.
    <!-- Google Tag Manager -->
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-XXXX');</script>
    
    <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
    new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
    j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
    'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-YYYY');</script>
    <!-- End Google Tag Manager -->
    
    
  2. Скопируйте следующий фрагмент и вставьте его сразу после открывающего тега <body>.
    <!-- Google Tag Manager (noscript) -->
    <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXX"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    
    <noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-YYYY"
    height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
    <!-- End Google Tag Manager (noscript) -->
    
    

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

Не внедряйте контейнер Менеджера тегов с помощью пользовательских тегов HTML в другой контейнер Менеджера тегов, поскольку это может привести к возникновению проблем, например задержке срабатывания тегов во вторичном контейнере.

Flash и ActionScript

Чтобы Менеджер тегов активировал теги в зависимости от контента Flash-ролика или взаимодействия с ним, используйте метод ActionScript ExternalInterface для передачи событий и динамических переменных уровня данных из ролика SWF в уровень данных на странице контейнера. Для этого необходимо внедрить фрагмент-контейнер Менеджера тегов в HTML-код родительской страницы SWF-ролика в соответствии с этими инструкциями.

События и динамические переменные уровня данных могут передаваться из компонента Flash в Менеджер тегов вызовом метода push с помощью ExternalInterface. Например, чтобы инициировать событие при нажатии кнопки mybutton_btn с помощью ActionScript 3, добавьте приведенный ниже код в файл SWF.

import flash.display.*;
import flash.events.*;
import flash.external.*;
mybutton_btn.addEventListener(MouseEvent.MOUSE_UP, onButtonClick);
function onButtonClick( Event:MouseEvent ):void {
  var name:String= "FLASH_EVENT";
  if (ExternalInterface.available) {
    ExternalInterface.call('dataLayer.push',{'event': name});
  }
}

Чтобы метод ExternalInterface работал корректно, атрибуту allowscriptaccess при встраивании в SWF должно быть присвоено значение always.

<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
        width='300' height='300' id='player1' name='player1'>
  <param name='movie' value='file.swf'>
  <param name='allowfullscreen' value='true'>
  <param name='allowscriptaccess' value='always'>
  <param name='flashvars' value='file=playlist.xml'>
  <embed id='player1' name='player1'
         src='file.swf'
         width='300' height='300'
         allowscriptaccess='always'
         allowfullscreen='true'
         flashvars="file=playlist.xml"/>
</object>

Как добавить переменные уровня данных для устройств, не поддерживающих JavaScript

Для устройств, которые не поддерживают JavaScript или на которых он отключен, в Менеджере тегов предусмотрен фрагмент кода <noscript>. С его помощью осуществляется развертывание независимых от JavaScript тегов в случаях, когда основной JavaScript Менеджера тегов не может быть загружен.

Важно отметить, что для работы уровня данных (содержащего переменные уровня данных, объявляемые при загрузке страницы), а также любых событий или динамических переменных уровня данных, передаваемых на уровень данных, требуется наличие JavaScript. Поэтому, если триггеры, которые активируют теги, не зависящие от JavaScript (и которые необходимо активировать, даже если JavaScript не может быть загружен), зависят от переменных уровня данных, вы должны передать эти переменные слоя данных в окно iframe <noscript> как параметры запроса. Например, чтобы тег активировался, когда категория страницы (pageCategory) – sports [спорт], а тип посетителя (visitorType) – returning [вернувшийся], фрагмент-контейнер на этой странице необходимо изменить следующим образом:

<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXX&pageCategory=sports&visitorType=returning" height="0"
                  width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

В примере выше все переменные уровня данных добавляются в конец исходного URL страницы окна iframe в виде текстовых параметров запроса, разделенных амперсандами.

Безопасность

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

Как ограничить внедрение тегов

Мы не рекомендуем ограничивать внедрение определенных типов тегов с помощью Менеджера тегов. Однако в некоторых случаях это может быть необходимо. Например, некоторые владельцы сайтов могут запретить пользователям Менеджера тегов добавлять на сайт определенные теги из соображений сохранения стабильности кода или обеспечения сбора данных. Это можно сделать с помощью функции черного списка тегов в момент установки фрагмента кода.

Контролировать, какие типы тегов, триггеров и переменных разрешены на странице, можно с помощью ключей gtm.whitelist и gtm.blacklist в уровне данных. Такие ключи переопределяют все настройки, заданные в контейнере. Если теги, триггеры и переменные добавлены в черный список корректно, они не будут срабатывать даже при настройке их активации в интерфейсе Менеджера тегов.

В примере ниже показано, как инициализировать уровень данных, содержащий черный и белый списки. Списки не являются обязательными. Их можно использовать как вместе, так и по отдельности. Обоим спискам должен быть присвоен тип Array, а их значениям – тип String.

dataLayer = [{
  ...
  'gtm.whitelist': ['<ID>', '<ID>', ...]
  'gtm.blacklist': ['<ID>', '<ID>', '<ID>', ...]
}];

Каждый ID [идентификатор] в списке соответствует определенному типу или классу типов тегов, триггеров или переменных. Классом считается группа тегов, триггеров или переменных с одинаковыми возможностями. Например, все теги, которые могут передавать пиксели в домены, не относящиеся к Google, будут иметь класс nonGooglePixels. Классы удобно использовать с целью ограничения срабатывания существующих и впоследствии добавленных тегов, триггеров и переменных.

Ниже приводятся правила для черных и белых списков.

  1. Белые списки
    Если вы применяете белый список, будут срабатывать только теги, триггеры и переменные, которые включены в этот список либо явным (указаны идентификаторы типов), либо неявным (указаны все классы объектов) образом.
  2. Черные списки
    Если вы применяете черный список, будут срабатывать все теги, триггеры и переменные, которые не включены в этот список явным (указаны идентификаторы типов) или неявным (указан какой-либо класс объектов) образом.
  3. Черные списки переопределяют белые
    Если вы применяете оба типа списков, приоритет будут иметь условия черного списка. Например, вы можете добавить в белый список класс тегов, а в черный – один тег этого класса. Обратное условие не сработает, то есть вы не можете добавлять в черный список класс тегов, а в белый – один тег из этого класса.
  4. Отношения между классами
    Некоторые классы могут быть взаимосвязаны. Например, теги, которые могут запускать скрипты, не относящиеся к Google, по определению также могут передавать пиксели, не относящиеся к Google. Поэтому блокировка пикселей nonGooglePixels приведет к автоматической блокировке скриптов nonGoogleScripts. Все теги, триггеры и переменные, принадлежащие к любой из этих групп, также будут заблокированы.

В таблице ниже приведен список тегов, триггеров и переменных, их типы, а также классы, к которым они относятся.

Тег ID Classes
Стандартный тег AB TASTY abtGeneric nonGoogleScripts
Тег AdAdvisor ta nonGoogleScripts
Тег Adometry adm google
Тег AdRoll Smart Pixel asp nonGoogleScripts
Тег отслеживания конверсий Google Рекламы awct google
Тег ремаркетинга Google Рекламы sp google
Тег Affiliate Window Conversion awc nonGoogleScripts
Тег Affiliate Window Journey awj nonGoogleScripts
Универсальный тег отслеживания событий Bing Ads baut nonGoogleScripts
Решение Bizrate Insights Buyer Survey bb nonGoogleScripts
Решение Bizrate Insights Site Abandonment Survey bsa nonGoogleScripts
Стандартный тег отслеживания ClickTale cts nonGoogleScripts
Тег comScore Unified Digital Measurement csm nonGoogleScripts
Тег IFRAME MCT (Conversant Mediaplex) mpm nonGoogleIframes
Стандартный тег IMG ROI (Conversant Mediaplex) mpr nonGooglePixels
Тег Crazy Egg cegg nonGoogleScripts
Criteo OneTag crto nonGoogleScripts
Пользовательский тег HTML html customScripts
Пользовательский тег изображения img customPixels
Тег DistroScale dstag nonGoogleScripts
Тег Floodlight Counter flc  
Тег Floodlight Sales fls  
Пиксель Dstillery Universal Pixel Tag m6d nonGooglePixels
Тег Eulerian Analytics ela customScripts
Тег Google Аналитики ga google
Google Опросы потребителей: удовлетворенность клиентов сайтом gcs google
Google Оптимизация opt google
Тег Google Trusted Stores ts  
Код отслеживания Hotjar hjtc nonGoogleScripts
Тег отслеживания звонков Infinity infinity nonGoogleScripts
Intent Media – Search Compare Ads sca nonGoogleScripts
Тег отслеживания K50 k50Init nonGoogleScripts
LeadLab ll nonGoogleScripts
Тег LinkedIn bzi nonGoogleScripts
Тег Lytics JS ljs nonGoogleScripts
Тег Marin Software ms nonGoogleScripts
Тег IFRAME MCT (Mediaplex) mpm nonGoogleIframes
Стандартный тег IMG ROI (Mediaplex) mpr nonGooglePixels
Message Mate messagemate nonGoogleScripts
Тег Mouseflow mf nonGoogleScripts
Пиксель Neustar Pixel ta nonGoogleScripts
Тег Nielsen DCR Static Lite Tag ndcr nonGoogleScripts
Тег Nudge Content Analytics nudge nonGoogleScripts
Тег (не код!) отслеживания Oktopost okt nonGoogleScripts
Тег отслеживания конверсий Optimise omc nonGoogleScripts
OwnerListens Message Mate messagemate nonGoogleScripts
Пиксель Perfect Audience pa nonGoogleScripts
Personali Canvas pc nonGoogleScripts
Placed placedPixel nonGoogleScripts
Платформа Pulse Insights Voice of Customer pijs nonGoogleScripts
Quantcast Audience Measurement qcm nonGoogleScripts
Rawsoft FoxMetrics fxm nonGoogleScripts
Тег JavaScript SaleCycle scjs customScripts
Пиксель SaleCycle scp customPixels
Тег отслеживания JavaScript SearchForce для страницы конверсии sfc nonGoogleScripts
Тег отслеживания JavaScript SearchForce для целевой страницы sfl nonGoogleScripts
Тег отслеживания SearchForce Redirection sfr nonGooglePixels
Shareaholic shareaholic nonGoogleScripts
Виджет Survicate svw nonGoogleScripts
Тег конверсии Tradedoubler Lead tdlc nonGooglePixels
Тег конверсии Tradedoubler Sale tdsc nonGooglePixels
Тег отслеживания конверсий Turn tc nonGoogleScripts
Тег сбора данных Turn tdc nonGoogleScripts
Универсальный тег Twitter для сайтов twitter_website_tag nonGoogleScripts
Тег Universal Analytics ua google
Upsellit Global Footer Tag uslt customScripts
Upsellit Confirmation Tag uspt customScripts
Тег JavaScript Ve Interactive vei nonGoogleScripts
Пиксель Ve Interactive veip nonGooglePixels
Тег отслеживания конверсий VisualDNA vdc nonGoogleScripts
Xtremepush xpsh nonGoogleScripts
Yieldify yieldify nonGoogleScripts
Триггер ID Classes
Прослушиватель видимости элемента evl google
Прослушиватель кликов cl google
Прослушиватель отправки формы fsl  
Прослушиватель истории hl google
Прослушиватель ошибок в JavaScript jel google
Прослушиватель кликов по ссылкам lcl  
Прослушиватель глубины прокрутки sdl google
Прослушиватель таймера tl google
Прослушиватель видео на YouTube ytl google
Переменная ID Classes
Основной файл cookie k google
Переменная автоматического события v google
Константа c google
Номер версии контейнера ctv google
Персонализированное событие e google
Пользовательская переменная JavaScript jsm customScripts
Переменная уровня данных v google
Режим отладки dbg google
Элемент DOM d google
Видимость элемента vis google
Ссылающийся домен HTTP f google
Переменная JavaScript j google
Таблица поиска smm google
Случайное значение r google
Таблица регулярных выражений remm google
URL u google

В таблице ниже приведен список доступных классов, а также их отношений с другими классами. В столбце Белый список (по умолчанию) представлен список классов, которые по умолчанию добавляются в белый список, если в него вносится класс из этой строки. Таким же образом в столбце Черный список (по умолчанию) приводится список классов, которые добавляются в черный список, если в него вносится класс из этой строки.

Класс Описание Белый список (по умолчанию) Черный список (по умолчанию)
customPixels Отправка пикселей на URL, указанные пользователем. nonGooglePixels customScripts
html
customScripts Запуск кода JavaScript, заданного пользователем. html
customPixels
nonGooglePixels
nonGoogleScripts
nonGoogleIframes
html
google Запуск скриптов Google и передача пикселей в Google.    
html Псевдоним для скриптов типа customScripts, а также ID пользовательского тега HTML. Позволяет пользователям с устаревшими аккаунтами пользоваться преимуществами класса customScripts. customScripts
customPixels
nonGooglePixels
nonGoogleScripts
nonGoogleIframes
customScripts
nonGooglePixels Отправка пикселей в домены, не относящиеся к Google.   customPixels
customScripts
html
nonGoogleScripts
nonGoogleIframes
nonGoogleScripts Запуск скриптов, предоставленных не компанией Google. nonGooglePixels
customScripts
html
nonGoogleIframes Внедрение окон iframes из доменов, не относящихся к Google. nonGooglePixels
customScripts
html
nonGoogleScripts

Использование URL без указания протокола

По умолчанию фрагмент-контейнер Менеджера тегов всегда использует для загрузки контейнеров протокол https (например, https://www.googletagmanager.com). Это помогает защитить контейнер от отслеживания и действий злоумышленников и, как правило, повышает эффективность его работы.

Если вы хотите загружать контейнеры Менеджера тегов без указания протокола, замените https:// на // в исходном URL фрагмента-контейнера (см. выделенный код в примере ниже).

<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXX');</script>
<!-- End Google Tag Manager -->
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

Если вы используете URL без указания протокола, контейнер будет загружен с использованием протокола http на страницах, адрес которых начинается с http://, и https на страницах, адрес которых начинается с https://.

В более старых версиях фрагмента-контейнера Менеджера тегов для загрузки контейнеров всегда используются URL без указания протокола (например, //www.googletagmanager.com). Эти версии будут продолжать работать, вносить в них изменения не требуется.

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