Изучаю и практикую интернет-маркетинг. Работаю джедаем.

Как передать в GTM данные из массива DataLayer

2 июля 2016, 14:44

Столкнулся с проблемой: как вытащить из массива DataLayer данные, для использования в Google Tag Manager.

Пример данных:

Я хотел значение ID из массива передавать через GTM в Facebook для динамического ремаркетинга.

Сначала определил в GTM переменную, чтобы использовать потом в скрипте. Вопрос в том, какое имя дать переменной, чтобы данные из массива присваивались ей корректно.

Разработчик, работающий с Javascript, скажет вам, что для вытаскивания данных этого массива нужно взять конструкцию вида ecommerce.add.products[0].id, где 0 — порядковый номер массива. Но это в GTM не сработает.

Хитрость в том, что синтаксис меняется и корректное имя для обращения, трансформируется в: ecommerce.add.products.0.id

А уже дальше — по стандартной схеме, вызываем переменную в нужном месте:

Поделиться
Запинить
3 комментария
Игорь

Вопрос следующего плана: а если у меня в даталеере есть несколько товаров, как мне вытянуть массив их id с помощью GTM? Можно ли это сделать?

Михаил Стерликов

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

Например, есть массив в DataLayer:
products: [
{
name: '123',
id: '123',
price: '123',
brand: '123',
},
{
name: '222',
id: '222',
price: '222',
brand: '222',
},
]

В этом случае нужно создать переменную у которой переменная «Data Layer Variable Name» = products и туда как раз и попадает заданный массив.

Владимир Крещенко

Михаил, спасибо за статью. Выручили. А вот по поводу нескольких ID я так и не понял. Нужно ли делать так:
content_ids: [{{ecommerce.add.products.0.id}}, {{ecommerce.add.products.1.id}}, {{ecommerce.add.products.2.id}}] ??

Не будет ли проблемой, если будет передаваться пустые значения, вот так: content_ids: [123, , ]

Михаил Стерликов

Владимир, рад, что оказалось полезно.
Если вы хотите передать массив вида
content_ids: [{{ecommerce.add.products.0.id}}, {{ecommerce.add.products.1.id}}, {{ecommerce.add.products.2.id}}, ...]
то при генерации не должно получаться конструкции content_ids: [123, , ], должно получиться content_ids: [123], если там только 1 переменная.
Массив может иметь несколько переменных внутри и они прописываются не жестко.

Владимир Крещенко

С purchase проблем нет, все передается нормально, а вот передавать добавление в корзину через такой кусок кода «
content_ids: [{{ecommerce.add.products.0.id}}, {{ecommerce.add.products.1.id}}, {{ecommerce.add.products.2.id}}, ...]» не выходит, т.к каждый раз id товара записывает идентификатор только в {{ecommerce.add.products.0.id}}.

Вас не затруднит подсказать мне, как должен выглядеть массив для передачи нескольких ID для addtocart?

Михаил Стерликов

Не совсем понятен сценарий, когда вы пушите в корзину сразу несколько разных товаров за раз.

Стандартная реализация использует, например такой массив:

dataLayer.push({
'event': 'addToCart',
'ecommerce': {
'currencyCode': 'EUR',
'add': { // 'add' actionFieldObject measures.
'products': [{ // adding a product to a shopping cart.
'name': 'Triblend Android T-Shirt',
'id': '12345',
'price': '15.25',
'brand': 'Google',
'category': 'Apparel',
'variant': 'Gray',
'quantity': 1
}]
}
}
});

Популярное