Javascript 将事件属性与自定义事件和GTM一起使用

Javascript 将事件属性与自定义事件和GTM一起使用,javascript,google-analytics,google-analytics-4,Javascript,Google Analytics,Google Analytics 4,我在使用GTM向GA4发送自定义事件时遇到问题。问题在于事件属性是使用数据层动态推送的。我似乎找不到可靠地将属性转发给GA4的方法 所以我们有一些javascript代码运行gtag('event','make_noise',{instrument:'gituar'}) 然后我们有一个GTM标签“Google Analytics:GA4事件”,它由上面的“make_noise”自定义事件触发。现在,这起作用了——我们可以看到“制造噪音”事件被转发到我们的GA4属性 我无法理解的是如何将“工具”属

我在使用GTM向GA4发送自定义事件时遇到问题。问题在于事件属性是使用数据层动态推送的。我似乎找不到可靠地将属性转发给GA4的方法

所以我们有一些javascript代码运行
gtag('event','make_noise',{instrument:'gituar'})

然后我们有一个GTM标签“Google Analytics:GA4事件”,它由上面的“make_noise”自定义事件触发。现在,这起作用了——我们可以看到“制造噪音”事件被转发到我们的GA4属性

我无法理解的是如何将“工具”属性从自定义事件转发到GA4。我不能只是将instrument:guitar属性添加到GTM标记中,因为instrument属性的值是动态的。它可以用各种各样的值调用,因此我应该能够真正使用通过javascript代码发送的任何内容,并将其转发给GA4

因此,我创建了一个“数据层变量”,读取“dataModel.instrument”,并在GA4事件标记中使用了这个变量。它工作正常(动态“instrument”属性按预期转发),但是,当我在短时间内发送两个事件时,例如:

gtag('event', 'make_noise', {instrument: 'gituar'});
gtag('event', 'do_stuff', {foo: 'bar'});
GA4侧的“make_noise”事件不再具有“instrument”属性。没有定义。可能是因为变量读取数据模型的最后一个状态(其中只定义了“foo”)

如何解决这个问题?

您需要在GA4中将“instrument”或“foo”定义为自定义参数。 或者坚持使用预定义的事件及其参数之一。

您需要在GA4中将“instrument”或“foo”定义为自定义参数。 或者坚持使用预定义的事件及其参数之一。

将您的问题想象为客户端使用搜索事件,并且在事件中有一个动态的“搜索术语”参数:

  • 您已经准备好了数据层

  • 您的GTM已设置为:

    • 变量:dataLayer变量->DataLayerVariableName:“仪器”
    • 触发器:customEvent->eventName:“制造噪音”
    • Tag:GA4 Event->eventName:'make_noise',参数:{{instrument from DLV}}
  • 在自定义事件(您应该添加“make_noise”)和自定义定义(您应该添加“instrument”)下设置分析

应该是这样的


编辑:


将您的问题想象为客户端使用搜索事件,并且在事件中有一个动态的“搜索术语”参数:

  • 您已经准备好了数据层

  • 您的GTM已设置为:

    • 变量:dataLayer变量->DataLayerVariableName:“仪器”
    • 触发器:customEvent->eventName:“制造噪音”
    • Tag:GA4 Event->eventName:'make_noise',参数:{{instrument from DLV}}
  • 在自定义事件(您应该添加“make_noise”)和自定义定义(您应该添加“instrument”)下设置分析

应该是这样的


编辑:


我正在阅读你的问题,突然意识到这个问题并不是专门针对谷歌分析的。当然,这是关于Google Analytics的,但问题是要问“如何在对象中设置动态键?”方法是将动态键括在括号中。下面的代码可以工作

gtag('event','make_noise',{instrument:'gituar'})
假设您想要发送自定义仪器:

let sender=prompt('Give me instrument');//=>鼓
gtag('event','make_noise',{instrument:sender})
/*
这就变成了:
gtag('事件','制造噪音',{仪器:'鼓'})
*/
TL;DR但发送自定义密钥的方式如下:

let customKey = prompt('Give me a key value'); //=> Fruit
gtag('event', 'make_noise', {[customKey]: 'Drums'})
/*
This becomes:
gtag('event', 'make_noise', {Fruit: 'Drums'})
*/

我读了你的问题,突然意识到这个问题并不是专门针对谷歌分析的。当然,这是关于Google Analytics的,但问题是要问“如何在对象中设置动态键?”方法是将动态键括在括号中。下面的代码可以工作

gtag('event','make_noise',{instrument:'gituar'})
假设您想要发送自定义仪器:

let sender=prompt('Give me instrument');//=>鼓
gtag('event','make_noise',{instrument:sender})
/*
这就变成了:
gtag('事件','制造噪音',{仪器:'鼓'})
*/
TL;DR但发送自定义密钥的方式如下:

let customKey = prompt('Give me a key value'); //=> Fruit
gtag('event', 'make_noise', {[customKey]: 'Drums'})
/*
This becomes:
gtag('event', 'make_noise', {Fruit: 'Drums'})
*/

我想你所要做的就是在[customKey]

中包装对象键。我想你所要做的就是在[customKey]

中包装对象键。好吧,在GA4中显示新参数完全不需要。这也不是我问题的核心。在我发送两个事件的情况下,第一个事件甚至没有得到发送到GA4.AFAIK的参数的值,新参数在GA4中显示完全不需要。这也不是我问题的核心。在我发送两个事件的情况下,第一个事件甚至没有得到发送到GA4的参数值。您能否确认您是使用gtag还是GTM将数据发送到GA4?我使用GTM注入UA并配置GA4。如果您使用GTM,您如何使用gtag()?您是否创建了自定义html或javascript?更新dataModel对象的代码是什么?我正在使用GTM<描述中使用的code>gtag函数是围绕数据层的一个简单包装:
gtag=function(){dataLayer.push(arguments);}
。您能否提供有关模型如何更新的示例代码?您能否确认是否使用gtag或GTM将数据发送到GA4?我使用GTM注入UA并配置GA4。如果您使用GTM,如何使用gtag()?您是否创建了自定义html或javascript?更新dataModel对象的代码是什么?我正在使用GTM<描述中使用的code>gtag函数是围绕数据层的一个简单包装:
gtag=function(){dataLayer.push(arguments);}
。您能否提供有关如何更新模型的示例代码?