数据层值更改后触发标记

Fire Tag after Datalayer Values have changed

我们确实有一个如下所示的数据层:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
Example1: 'false'
Example2: 'false'
Example3: 'false'
Example4: 'false'
Example5: 'false'
});

我们想在某些值发生变化后触发标签,而不需要重新加载页面。 当示例 1 和示例 3 的状态为真时,应立即触发标记。

有人告诉我要向数据层添加一个事件,例如:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'exampleHappened',
Example1: 'true'
});

是否可以毫无问题地将 5 个事件添加到数据层?

编辑: 我将数据层拆分为 5 个数据层,每个数据层都有

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'exampleHappened',
Example1: 'true'
});

最后一件事: 如何将 Tagmanager 设置设置为在触发事件时触发?

提前致谢

是的,您需要一个事件 - GTM 覆盖数据层数组上的本机 "push" 方法以扫描传入对象的 "event" 关键字。只有存在事件关键字时,GTM 才会更新其内部状态并使新值可用于标签和触发器。但是,您不能在一次推送中使用多个事件。

但是您的第一个示例只需要一个事件:

window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
"Example1": "false",
"Example2": "false",
"Example3": "false",
"Example4": "false",
"Example5": "false",
"event":"examplesHappened"
});

如果您坚持将其拆分为多个推送,您可以使用 trigger group - 首先使用 "exampleAdded" 事件创建一个自定义事件触发器,然后创建一个触发器组并添加触发器 5次数:

Note that you can add a trigger more than once. By adding a trigger more than once into the group, that particular trigger must fire as many times as it has been added to the group for the Trigger Group to work.

(Source)

缺点是每页只能使用一次。

如果您的推送是由某种循环创建的,您可以只增加事件编号:

for(i=1;i<6;i++) {
 var obj = {};
 obj["example"+i] = "false";
 obj["event"] = "exampleHappened_"+i
 dataLayer.push(obj);
}

然后触发事件 "exampleHappened5"。这将工作多次。