Как передать в GTM данные из массива DataLayer
Столкнулся с проблемой: как вытащить из массива DataLayer данные, для использования в Google Tag Manager.
Пример данных:
Я хотел значение ID из массива передавать через GTM в Facebook для динамического ремаркетинга.
Сначала определил в GTM переменную, чтобы использовать потом в скрипте. Вопрос в том, какое имя дать переменной, чтобы данные из массива присваивались ей корректно.
Разработчик, работающий с Javascript, скажет вам, что для вытаскивания данных этого массива нужно взять конструкцию вида ecommerce.add.products[0].id, где 0 — порядковый номер массива. Но это в GTM не сработает.
Хитрость в том, что синтаксис меняется и корректное имя для обращения, трансформируется в: ecommerce.add.products.0.id
А уже дальше — по стандартной схеме, вызываем переменную в нужном месте:
Вопрос следующего плана: а если у меня в даталеере есть несколько товаров, как мне вытянуть массив их 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
}]
}
}
});