Менеджер тегов Google получает доступ к значениям объектов уровня данных

#google-tag-manager #google-datalayer

#google-tag-manager #google-datalayer

Вопрос:

Я пытаюсь получить доступ к переменным datalayer при событии добавления в корзину, но оно не отслеживается на сайте администратора менеджера тегов

* Событие запускается, но значения не отправляются

Нажатие на уровень данных:

 <script>
  dataLayer.push({
    'event': 'addToCart', 
    'ecommerce': {
      'currencyCode': 'EUR', 
      'add': {
        'products': [
          {
            'name': 'test',
            'id': 'ZZZ232323',
            'price': 33,
            'brand': '',
            'category': 'test',
            'variant': '','quantity': 1
          }
        ]
      }
    }
  });
</script>
  

И я пытаюсь получить доступ к datalayer, чтобы получить название продукта, используя:

 dataLayer.find(x => x.event == 'addToCart').ecommerce.add.products[dataLayer.find(x => x.event == 'addToCart').ecommerce.add.products.length - 1].price
  

Изображение сайта Google Tag Manager

Ответ №1:

Переменным уровня данных не обязательно ссылаться на определенный шаг (элемент массива) уровня данных. Когда вы создаете ссылку на переменную dataLayer, например, ecommerce , Google Tag Manager (GTM) попытается оценить ее при любом заданном событии GTM, но вернется к undefined или любому другому указанному вами значению.

Это означает, что если вы запустите свой код отслеживания Facebook Pixel, когда станут доступны данные о продукте (событие = AddToCart), правильная ссылка на данные электронной коммерции будет иметь значение. Существует несколько вариантов получения названия вашего продукта.

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

 var productName = {{Ecommerce}}.add.products[0].name; //assuming you'll always have just one product in products array
  

Или вы можете выбрать определенную переменную, где вы задаете «Электронная торговля — название товара, добавленного в корзину», на который вы ссылаетесь ecommerce.add.products[0].name . Таким образом, вы можете просто присвоить эту переменную соответствующей переменной Facebook Pixel, используя {{Ecommerce - name of product added to cart}}