E commerce Google标签管理器和数据层交互操作

E commerce Google标签管理器和数据层交互操作,e-commerce,google-tag-manager,google-datalayer,E Commerce,Google Tag Manager,Google Datalayer,我使用GoogleTagManager脚本和数据层对象。我在文档中读到,数据层对象必须填充在GTM脚本的上方。 但是,当用户选择产品时,我需要添加一个产品详细信息,这发生在加载GTM脚本之后。 如果我使用dataLayer.push(chosenObject),这个操作会调用Google标记管理器脚本吗?它会工作吗?是的,您可以随时将变量推送到数据层,“诀窍”在于如何从标记中的数据层访问数据(另外,如果您在GTM代码上方声明数据层,则不称为“推送”-您将其声明为变量,以便以后可以推送) 如果您希

我使用GoogleTagManager脚本和数据层对象。我在文档中读到,数据层对象必须填充在GTM脚本的上方。 但是,当用户选择产品时,我需要添加一个产品详细信息,这发生在加载GTM脚本之后。
如果我使用dataLayer.push(chosenObject),这个操作会调用Google标记管理器脚本吗?它会工作吗?

是的,您可以随时将变量推送到数据层,“诀窍”在于如何从标记中的数据层访问数据(另外,如果您在GTM代码上方声明数据层,则不称为“推送”-您将其声明为变量,以便以后可以推送)

如果您希望在页面加载后立即使用数据层中的数据,则有必要在数据层中声明数据-标准的pageview触发器将在GTM代码加载后立即运行(即在页面完成加载之前),因此GTM显然只能访问代码中位于数据层之前的数据

GTM中的触发标记接受一个事件(不要与Google Analytics事件或Javascript事件混淆,GTM中的事件只是一个保留变量名)

GTM隐式地生成了一些事件—pageload事件、DOM就绪事件、click和submit事件

如果在稍后的某个时刻,您希望触发一个元素以响应推送到数据层的值,则需要一个自定义事件:

dataLayer.push({
'event':'i_pushed_a_value',
 'payload' : 'this is my data'
})
(请不要让数据以键->值对的形式出现)


现在,您可以有一个触发事件
i_pushed\u a_value
,并且您可以使用dataLayer类型的自定义变量(在本例中,输入键
payload
,作为变量配置中的键)来保存数据。

感谢您的解释!因此,如果我不需要在页面加载时发送数据,我可以使用所选产品扩展dataLayer对象,并使用带有js代码的dataLayer.push(chosenObject)?我建议您在标记管理器代码上方声明一个(空)dataLayer变量,以确保安全(因此,您可以通过将dataLayer=[];放在顶部(当然是在脚本标记中)来确定是否存在要推送的内容,即使GTM代码出于某种原因没有被执行)。除此之外,您可以简单地使用推送。