GA4多gtag代码环境下如何向指定gtag代码发送事件
GA4多gtag代码环境下如何向指定gtag代码发送事件
兄弟,你猜得完全没错!问题根源就是你调用gtag('event')的时候没指定发送目标——默认情况下,这个调用会把事件推送给所有已经通过gtag('config')初始化的GA4跟踪器,所以哪怕你分两次调用sendGaEvent,每次的事件都会同时发给两个GA账户,导致每个报告里都出现重复的事件记录。
解决这个问题其实很简单,只需要在发送事件的时候,给gtag('event')的参数加上send_to字段,明确指定要发送到的GA测量ID就行。
你只需要修改你的sendGaEvent函数,把传入的gTag参数加到事件配置里:
public sendGaEvent(gTag: string, eventData: AnalyticsEvents, sku: string) { const ga4Instance = this[$analyticsMap].get(gTag); const ga4ProductData = this[$ga4AnalyticsUniqueEventMap].get(sku); const ga4Tracker = ga4Instance!.tracker; this[$ga4AnalyticsUniqueEventMap].set(gTag, eventData); gtag('event', eventData.event_action, { 'event_action': eventData.event_action, 'event_category': eventData.event_category, 'event_label': eventData.event_label, 'value': eventData.value, 'send_to': gTag // 关键新增:指定发送目标的测量ID }); }
这样修改之后,当你调用analyticsService.sendGaEvent(this[$clientGtag], ...)时,事件就只会发送给G-CLIENT-GTAG对应的GA账户,而不会触发自家的跟踪器;同理,调用自家的gTag时,也只会给自家的GA报告发事件,完美解决重复计数的问题。
另外补充一种可选方案:你也可以在初始化跟踪器的时候给它们命名,比如:
gtag('config', 'G-CLIENT-GTAG', {'tracker_name': 'clientTracker'}); gtag('config', 'G-OUR-GTAG', {'tracker_name': 'ourTracker'});
然后发送事件时用tracker参数指定跟踪器名称:
gtag('event', eventData.event_action, { // 其他参数... 'tracker': 'clientTracker' // 使用跟踪器名称指定目标 });
不过这种方式需要额外维护跟踪器名称和测量ID的对应关系,相比之下直接用send_to+测量ID的方式更贴合你现在的代码逻辑,更省心。
备注:内容来源于stack exchange,提问作者Cameron Crane
相关产品推荐
相关产品推荐

