雨果跨境学习网
登录

如何排除掉谷歌分析师GA4里的重复购买次数

莆秀16122023-03-18 21:18:28

如果你使用的是WordPress建站系统,且按照我之前写的转化价值追踪教程安装了GTM4WP插件的话,那么,你就可以继续看完这个教程,并按照教程去实践,从而排除GA4里的重复购买次数。

为什么会出现重复的购买次数

在使用Google analystics 去追踪WooCommerce的转化次数数,你可能会遇到这种情况:purchase事件追踪的数量是远远大于真实的转化次数的。而在GA4的报表中,有一个指标叫做“交易量“,你会发现交易量可以反馈真实的订单数量,但是我们自己追踪到的purchase数据却不准确。这是为什么?

这是因为大部分营销人员在进行购买成功的转化追踪时,采用的是页面被浏览的次数来追踪, 他们通常会采用这样的正则表达式,如:

Page location contains /checkout/order-received (woocommerce的付款成功页面URL)

Page path contains thank-you (Shopify付款成功的thank you page)

当然我自己也会这样设置,但是这种设置在以下情形下就会多次触发事件,导致重复记录。

通过电子邮件链接或书签返回页面

刷新付款成功页面

导航到不同的页面并通过后退按钮返回

从关闭的浏览器会话或手机上恢复页面

所以想要从根本上解决这个问题,就需要从追踪转化成功的方式来着手。URL的正则表达式已经证明是不靠谱的了,所以只能寻求其他的追踪方式。

直到我找到了这个老外的教程,英文好的同学可以直接看原文,我也按着这个教程走了一遍

https://www.simoahava.com/analytics/prevent-Google-analytics-duplicate-transactions-with-customtask/

注意:前方高能预警,这套解决方案再次涉及到了大量的代码使用,调用逻辑和参数,变量之间的关系。实践起来有些烧脑,如果你有技术的同事,可以让让技术同学一起协助解决。

再次强调,使用这套方案的前提是你已经在网站安装了transactionId的数据层变量,并在GTM创建了相应的变量。如果没有transactionID的变量,那么这套方案,你便无法使用。

排除重复购买的原理

页面会刷新,但是交易ID是唯一的,如果我们以交易ID为维度,去记录购买次数,不就可以拿到100%正确的购买成功次数了吗。

实现的思路是在创建一个叫做customtask的变量,它会在每一次事件被触发的时候开始运行,在任务过程中,该方法会在触发事件的模型中查找键值,如果在浏览器存储中找到触发中的交易 ID,此 customTask 会阻止命中被触发,从而防止重复信息到达 Google Analytics。

直接用老外的图来解释吧

如何排除掉谷歌分析师GA4里的重复购买次数 第1张

需要注意的时, 要使用这个方案, 你必须要要使用增强型电子商务, 对于 Standard Ecommerce,customTask 只会更新浏览器存储,但不会阻止任何内容。

如何排除重复的购买

我先放一张最终的完成图,按照教程实践后, 你的Google tag manger里会增加3个变量,2个触发器,和对purchase的tag修改。如下图所示。

如何排除掉谷歌分析师GA4里的重复购买次数 第2张

我们先看变量部分,虽然是增加了3个变量,但是这3个变量当中, 需要调用到之前已经创建好了的transactionID变量,所以,我圈出了4个变量名称。因为你有可能需要根据你自己的transactionID的名称来修改其中一个变量中的代码。

如何排除掉谷歌分析师GA4里的重复购买次数 第3张

触发器里有新增了2个。分别代表着发送transactionID为true 和购买完成

如何排除掉谷歌分析师GA4里的重复购买次数 第4张

最后就是一个purchase的tag啦,可以看到, 它的触发已经不再依赖于page location的正则表达式了, 而是通过自定义JS来实现。

如何排除掉谷歌分析师GA4里的重复购买次数 第5张

具体怎么做呢?

首先,创建好3个变量。

第一个变量A:customtask-transaction deduper

如何排除掉谷歌分析师GA4里的重复购买次数 第6张

以下代码直接复制粘贴进去:

function() {// customTask Builder by Simo Ahavavar transactionDeduper = {keyName: '_transaction_ids',cookieExpiresDays: 365};// DO NOT EDIT ANYTHING BELOW THIS LINEvar readFromStorage = function(key) {if (!window.Storage) {// From: https://stackoverflow.com/a/15724300/2367037var value = '; ' + document.cookie;var parts = value.split('; ' + key + '=');if (parts.length === 2) return parts.pop().split(';').shift();} else {return window.localStorage.getItem(key);}};var writeToStorage = function(key, value, expireDays) {if (!window.Storage) {var expiresDate = new Date();expiresDate.setDate(expiresDate.getDate() + expireDays);document.cookie = key + '=' + value + ';expires=' + expiresDate.toUTCString();} else {window.localStorage.setItem(key, value);}};var globalSendHitTaskName = '_ga_originalSendHitTask';return function(customTaskModel) {window[globalSendHitTaskName] = window[globalSendHitTaskName] || customTaskModel.get('sendHitTask');var tempFieldObject, dimensionIndex, count, ga, tracker, decorateTimer, decorateIframe, iframe;customTaskModel.set('sendHitTask', function(sendHitTaskModel) {var originalSendHitTaskModel = sendHitTaskModel,originalSendHitTask = window[globalSendHitTaskName],canSendHit = true;var hitPayload, hitPayloadParts, param, val, regexI, trackingId, snowplowVendor, snowplowVersion, snowplowPath, request, originalTrackingId, hitType, nonInteraction, d, transactionId, storedIds;try {// transactionDeduperif (typeof transactionDeduper === 'object' && transactionDeduper.hasOwnProperty('keyName') && transactionDeduper.hasOwnProperty('cookieExpiresDays') && typeof sendHitTaskModel.get('&ti') !== 'undefined') {transactionId = sendHitTaskModel.get('&ti');storedIds = JSON.parse(readFromStorage(transactionDeduper.keyName) || '[]');if (storedIds.indexOf(transactionId) > -1 && ['transaction', 'item'].indexOf(sendHitTaskModel.get('hitType')) === -1) {canSendHit = false;} else if (storedIds.indexOf(transactionId) === -1) {storedIds.push(transactionId);writeToStorage(transactionDeduper.keyName, JSON.stringify(storedIds), transactionDeduper.cookieExpiresDays);}}// /transactionDeduperif (canSendHit) {originalSendHitTask(sendHitTaskModel);}} catch(e) {originalSendHitTask(originalSendHitTaskModel);}});};}

第二个变量B:cookie-_transactionId

这里的名字,请和我保持一模一样,不要改动,因为在其他变量里会调用这个名称。

如何排除掉谷歌分析师GA4里的重复购买次数 第7张

第三个变量C:transactionId_sent

注意大小写, 要一模一样哦

如何排除掉谷歌分析师GA4里的重复购买次数 第8张

在这段代码里,调用了之前已经创建过的transactionID的变量,所以这个为主,你自己需要检查下。

整段代码如下:

function() {// Change this to match the keyName you added to customTask:var keyName = '_transaction_ids';var ids = JSON.parse((!!window.Storage ? window.localStorage.getItem(keyName) : {{cookie - _transactionId}}) || '[]');return ids.indexOf({{Ecommerce_Transaction_ID}}) > -1;}

接下来,是2个触发器

如何排除掉谷歌分析师GA4里的重复购买次数 第9张

如何排除掉谷歌分析师GA4里的重复购买次数 第10张

最后, 就是purchase的Tag设置了。

如何排除掉谷歌分析师GA4里的重复购买次数 第11张

在你照着这套教程去使用的时候,也最好理清一下变量之间的调用关系。

变量B里调用了变量A里的key name:_transaction_ids, 变量C里调用了变量B的名称和已经创建过了的交易ID变量名称。

完成购物的触发器里的事件名称是woocommerce对于购买的事件名purchase,这个应该是写在GTM4WP这个插件里。

按照这个教程做好配置的后, 接下来要做的事情就是等待和调试了。毕竟购物成功这个东西,我可不想刷信用卡去支付购买再测试。因为我已经在GTM里做了屏蔽管理员访问的设置。。。

除此之外,我也看到另外一套解决方案,也是要写代码,但是它用到了一个叫做时间戳的变量, timestamp,这个数据层变量需要技术去操作。由于我的插件不支持这个数据层变量的植入,就无法尝试了,感兴趣的同学可以查看下面这个教程。


本文链接:https://www.sxwpls.com/9380.html ,转载需注明文章链接来源:https://www.sxwpls.com/

分享到:
  • 不喜欢(0

本文链接:https://www.sxwpls.com/9380.html

猜你喜欢

  • Google广告收费标准你了解吗

    Google广告收费标准你了解吗

    Google广告收费标准你了解吗Google广告收费标准你了解吗?谷歌作为搜索的巨头,拥有覆盖200多个地区的流量,成为受广告主欢迎的推广渠道之一。如果广告主想利用谷歌进行出海推广,首先要了解谷歌的收...

    谷歌2024-03-09
  • 如何提升google seo排名

    如何提升google seo排名

    如何提升google seo排名相信每一个外贸人都非常希望自己网站的关键词排名能够尽量的靠前,巴不得自己的关键词能够在SERP的排名中登上首页位置,那么如何提升googleseo排名?一、网站地图在外...

    谷歌2024-03-09
  • 独立站怎么使用Google广告进行引流

    独立站怎么使用Google广告进行引流

    独立站怎么使用Google广告进行引流Google广告已经成为众多商家除 Facebook广告以外的重要流量来源入口,也是营销人员必须了解的广告推广方式之一。那么独立站怎么使用Google广告进行引流...

    谷歌2024-03-09
  • Google Analytics数据错误原因分析

    Google Analytics数据错误原因分析

    Google Analytics数据错误原因分析Google Analytics数据错误原因分析,Google Analytics提供了数据可以帮助电商商家。但是如果安装不正确,GoogleAnaly...

    谷歌2024-03-09
  • 干货丨解密Google搜索广告

    干货丨解密Google搜索广告

    干货丨解密Google搜索广告Google 搜索上的搜索量每天约为 35亿次。人们随时随地都在搜索信息、在线购物、比较产品价格、查询路线,或者学习新东西。当人们想要了解什么信息、买什么东西、去什么地方...

    谷歌2024-03-09
  • 如何提高Google广告投放效果来提升曝光量

    如何提高Google广告投放效果来提升曝光量

    如何提高Google广告投放效果来提升曝光量如何提高Google广告投放效果来提升曝光量?Google作为搜索引擎,存在着巨大的广告价值。不容置疑的是,广告主都想用少的预算来获得优的推广效果,用户体验...

    谷歌2024-03-09
  • Google广告投放如何付款

    Google广告投放如何付款

    Google广告投放如何付款Google广告投放如何付款?要在Google上投放广告,需要确定合适的预算和出价选项。预算为每个广告系列确定了费用上限,因此应为每天愿意支出的平均金额。实际费用可能会更低...

    谷歌2024-03-09
  • 如何制作Google投放广告?谷歌视频广告制作方法

    如何制作Google投放广告?谷歌视频广告制作方法

    如何制作Google投放广告?谷歌视频广告制作方法如何制作Google投放广告?导视广告的时长只有 6 秒或更短,便于利用短小精炼的信息来吸引用户,同时尽量不影响观看体验。可以在 AdWords中使用...

    谷歌2024-03-09
  • Google广告投放注意事项有哪些

    Google广告投放注意事项有哪些

    Google广告投放注意事项有哪些Google广告投放注意事项有哪些?选择Google投放广告对于很多商家而言,是获得市场较大流量的一个选择,但并不是一旦做了Google广告投放就能获得大批流量,流量...

    谷歌2024-03-09
  • 如何提高Google广告投放率

    如何提高Google广告投放率

    如何提高Google广告投放率如何提高Google广告投放率?谷歌广告的作用一直不可小视,谷歌关键字广告能够帮助企业获得流量和询盘,不需要像谷歌优化那样需要几个月时间的积累。广告的目标网页具有移动设备...

    谷歌2024-03-09
热门商品
热门文章
热门标签
侧栏广告位
图片名称

服务热线

备注来意

微信客服

微信客服