AMZ123跨境卖家导航
拖动LOGO到书签栏,立即收藏AMZ123
首页跨境头条文章详情

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

3565
2023-03-18 15:00
2023-03-18 15:00
3565

如果你使用的是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。

直接用老外的图来解释吧

图片

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


如何排除重复的购买

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

图片

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

图片

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

图片

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

图片

具体怎么做呢?

首先,创建好3个变量。

第一个变量A:customtask-transaction deduper

图片

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









































































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);}}// /transactionDeduper
if (canSendHit) {originalSendHitTask(sendHitTaskModel);}
} catch(e) {originalSendHitTask(originalSendHitTaskModel);}
});
};}


第二个变量B:cookie-_transactionId

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

图片

第三个变量C:transactionId_sent

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

图片

在这段代码里,调用了之前已经创建过的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个触发器

图片

图片

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

图片

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

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

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

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

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

https://www.bounteous.com/insights/2020/09/02/duplicate-transactions-google-analytics-and-ga4-properties


免责声明
本文链接:
本文经作者许可发布在AMZ123跨境头条,如有疑问,请联系客服。
最新热门报告作者标签
25年亚太电商报告:新兴与成熟市场差异显著
AMZ123获悉,近日,PCMI发布了《2025年亚太电商消费者趋势报告》。随着电商持续渗透全球消费市场,支付方式的变化正成为影响电商增长结构和区域差异的重要因素。在亚太地区,电商市场快速增长,同时支付方式也呈现出高度多样化特征。此次报告通过图表和数据分析,系统呈现亚太地区(不含中国)11个国家消费者的支付习惯、电商市场规模变化以及潜在增长空间,为卖家和品牌判断市场机会、投资方向提供参考。一、亚太市场规模报告显示,亚太地区电商整体呈现高增长趋势。2025年亚太地区电商规模将首次突破1.1万亿美元,预计在2025至2027年间保持12%的年复合增长率,到2027年市场规模将超过1.5万亿美元。
Shopee越南双十二用户活跃度提升,直播售出超5000万件商品
AMZ123获悉,近日,2025年12月,Shopee在越南结束了12.12生日超级促销活动。作为Shopee成立10周年的重要节点,本次大促期间平台用户活跃度和转化表现显著提升,直播与短视频内容成为推动成交的重要渠道。数据显示,仅在12月12日当天,Shopee在越南的访问量就超过1200万次;为期两周的活动期间,用户累计节省金额超过4万亿越南盾。在促销活动之外,Shopee在本次12.12期间大幅强化内容与娱乐元素,通过音乐演出、综艺衍生内容和直播互动等形式提升用户参与度。
关税压顶、税单敲门!2025跨境电商十大事件回顾
专栏介绍2025年,跨境电商行业经历了一场深刻的范式转换。旧增长秩序已被改写,行业竞争已从流量争夺,升维为供应韧性、成本控制与合规运营的系统性较量。周期更迭,潮起潮落。行业的巨轮缓缓驶入深水区,有人在调整中登上新高,也有人就此转身离场。作为深度参与的行业观察者,AMZ123特此发起 【2025年度跨境专题报道】系列专栏。本专栏将不止记录赛道的高光与暗礁,更致力于解构穿越周期的密码,为从业者提供一份关于生存与进化的真实笔记。本文为专栏的第一篇报道,旨在通过回顾过去一年的行业大事,以此看清行业新秩序与未来破局方向。2025年,美国对华关税政策经历了从紧张升级到逐步缓和的过程。
25年美国社交电商市场将达870亿美元,TikTok推动增长
AMZ123获悉,近日,研究机构Emarketer的最新报告显示,TikTok正持续推动社交电商市场增长,其中TikTok Shop已成为该领域的重要组成部分。2025年,TikTok Shop的销售额占全球社交电商总量的近20%。按照预测,TikTok Shop的销售规模将在2026年超过200亿美元,并在2028年突破300亿美元。与此同时,2026年预计将有一半的美国社交购物用户在TikTok平台完成购买。从整体市场来看,社交电商目前仍仅占美国电商总规模的一小部分,但占比正在稳步提升。
双十二期间,印尼消费者更偏好本地品牌与高品质商品
AMZ123获悉,近日,电商平台Shopee与Lazada的数据均显示,印尼消费者的线上购物行为在 12.12 全国网购日(Harbolnas)活动期间呈现出明显变化。消费者在年终促销节点的购物重点正在发生转移,从单纯追求低价,逐步转向对本地产品和高质量商品的关注。Shopee 的数据显示,2025 年 12.12 活动期间,印尼消费者对本地产品的兴趣显著上升。平台观察到,用户通过多种活动和功能,更积极地寻找并支持本地中小微企业(UMKM)及本土品牌。该趋势不仅体现在购物热度上,也反映出 12.12 已从单一的促销活动,逐渐演变为消费者了解和选择本地产品的重要窗口。
每日低价跨境包裹数高达5万,希腊呼吁加强监管
AMZ123获悉,近日,随着Shein、Temu等电商平台在欧洲快速扩张,大量单价不超过150欧元的跨境包裹每天通过免税政策进入希腊市场,希腊相关行业组织正呼吁欧盟建立统一的监管措施。希腊商贸与企业联合会(ESEE)的数据显示,欧盟范围内,91%以上的低于150欧元的跨境包裹来自中国。2024年,欧盟市场共进口约46亿件单价不超过150欧元的包裹,预计2025年将增至约60亿件。在希腊,每天进入市场的低价跨境订单数量最高可达5万单,且仍在增长。相关研究估算,希腊消费者在电商平台上的支出中,每5欧元就有1欧元流向中国,年交易规模约为5.29亿至6.27亿欧元。
AMZ123星球专享丨12月第三周资讯汇总
亚马逊亚马逊于12月16日上午9点启动了“圣诞限时特卖”活动,此次促销将持续到12月25日23点59分,可能成为平台年内的最后一场大型促销。亚马逊宣布自2026年3月31日起将全面终止共享库存(混仓)模式,并更新制造商条码的使用标准。根据新规,完成品牌备案的品牌所有者将可以直接使用UPC等制造商条码进行入库,而无需粘贴亚马逊条码。亚马逊正在与人工智能公司OpenAI就一笔潜在投资展开磋商,投资规模约为100亿美元。亚马逊向美国华盛顿州提交了一份新的通报,将在当地裁减84个岗位。亚马逊说明,这一调整属于各业务部门在日常运营中进行的人员结构优化,并不涉及其在今年10月宣布的全球性裁员计划。
冬季需求拉动增长,10款汽配产品在亚马逊月销过万
AMZ123获悉,近日,亚马逊各类产品搜索量增长显著,以下10款产品在亚马逊上销量表现突出,深受消费者欢迎。1. 便携轮胎充气泵预计销售额:679.99万美元/月销量:100,000+星级评分:4.3好评数量:23,615+图源:亚马逊产品介绍:这款便携式轮胎充气泵采用电池供电设计,体积小巧,可放置于手套箱或后备箱,适用于汽车、SUV、摩托车、自行车及球类等。支持最高 120 PSI 的精准充气,内置数字胎压显示屏,可在 PSI、kPa、Bar 等多种单位间切换,并通过按键设定目标胎压,到达设定值后自动停止,降低过度充气风险。配套多种充气接口和LED照明灯,满足日常补气和应急使用需求。
关税压顶、税单敲门!2025跨境电商十大事件回顾
专栏介绍2025年,跨境电商行业经历了一场深刻的范式转换。旧增长秩序已被改写,行业竞争已从流量争夺,升维为供应韧性、成本控制与合规运营的系统性较量。周期更迭,潮起潮落。行业的巨轮缓缓驶入深水区,有人在调整中登上新高,也有人就此转身离场。作为深度参与的行业观察者,AMZ123特此发起 【2025年度跨境专题报道】系列专栏。本专栏将不止记录赛道的高光与暗礁,更致力于解构穿越周期的密码,为从业者提供一份关于生存与进化的真实笔记。本文为专栏的第一篇报道,旨在通过回顾过去一年的行业大事,以此看清行业新秩序与未来破局方向。2025年,美国对华关税政策经历了从紧张升级到逐步缓和的过程。
25年亚太电商报告:新兴与成熟市场差异显著
AMZ123获悉,近日,PCMI发布了《2025年亚太电商消费者趋势报告》。随着电商持续渗透全球消费市场,支付方式的变化正成为影响电商增长结构和区域差异的重要因素。在亚太地区,电商市场快速增长,同时支付方式也呈现出高度多样化特征。此次报告通过图表和数据分析,系统呈现亚太地区(不含中国)11个国家消费者的支付习惯、电商市场规模变化以及潜在增长空间,为卖家和品牌判断市场机会、投资方向提供参考。一、亚太市场规模报告显示,亚太地区电商整体呈现高增长趋势。2025年亚太地区电商规模将首次突破1.1万亿美元,预计在2025至2027年间保持12%的年复合增长率,到2027年市场规模将超过1.5万亿美元。
AMZ123星球专享丨12月第三周资讯汇总
亚马逊亚马逊于12月16日上午9点启动了“圣诞限时特卖”活动,此次促销将持续到12月25日23点59分,可能成为平台年内的最后一场大型促销。亚马逊宣布自2026年3月31日起将全面终止共享库存(混仓)模式,并更新制造商条码的使用标准。根据新规,完成品牌备案的品牌所有者将可以直接使用UPC等制造商条码进行入库,而无需粘贴亚马逊条码。亚马逊正在与人工智能公司OpenAI就一笔潜在投资展开磋商,投资规模约为100亿美元。亚马逊向美国华盛顿州提交了一份新的通报,将在当地裁减84个岗位。亚马逊说明,这一调整属于各业务部门在日常运营中进行的人员结构优化,并不涉及其在今年10月宣布的全球性裁员计划。
每日低价跨境包裹数高达5万,希腊呼吁加强监管
AMZ123获悉,近日,随着Shein、Temu等电商平台在欧洲快速扩张,大量单价不超过150欧元的跨境包裹每天通过免税政策进入希腊市场,希腊相关行业组织正呼吁欧盟建立统一的监管措施。希腊商贸与企业联合会(ESEE)的数据显示,欧盟范围内,91%以上的低于150欧元的跨境包裹来自中国。2024年,欧盟市场共进口约46亿件单价不超过150欧元的包裹,预计2025年将增至约60亿件。在希腊,每天进入市场的低价跨境订单数量最高可达5万单,且仍在增长。相关研究估算,希腊消费者在电商平台上的支出中,每5欧元就有1欧元流向中国,年交易规模约为5.29亿至6.27亿欧元。
25年美国社交电商市场将达870亿美元,TikTok推动增长
AMZ123获悉,近日,研究机构Emarketer的最新报告显示,TikTok正持续推动社交电商市场增长,其中TikTok Shop已成为该领域的重要组成部分。2025年,TikTok Shop的销售额占全球社交电商总量的近20%。按照预测,TikTok Shop的销售规模将在2026年超过200亿美元,并在2028年突破300亿美元。与此同时,2026年预计将有一半的美国社交购物用户在TikTok平台完成购买。从整体市场来看,社交电商目前仍仅占美国电商总规模的一小部分,但占比正在稳步提升。
双十二期间,印尼消费者更偏好本地品牌与高品质商品
AMZ123获悉,近日,电商平台Shopee与Lazada的数据均显示,印尼消费者的线上购物行为在 12.12 全国网购日(Harbolnas)活动期间呈现出明显变化。消费者在年终促销节点的购物重点正在发生转移,从单纯追求低价,逐步转向对本地产品和高质量商品的关注。Shopee 的数据显示,2025 年 12.12 活动期间,印尼消费者对本地产品的兴趣显著上升。平台观察到,用户通过多种活动和功能,更积极地寻找并支持本地中小微企业(UMKM)及本土品牌。该趋势不仅体现在购物热度上,也反映出 12.12 已从单一的促销活动,逐渐演变为消费者了解和选择本地产品的重要窗口。
《亚马逊生活日用品类攻略手册》PDF下载
作为日常生活不可或缺的重要组成,生活百货品类覆盖范围广泛,包括家居用品、家具、车用配件、户外装备、园艺 工具、运动器材、家装用品、厨房、玩具以及宠物用品等众多领域。这类产品不仅是满足基本生活所需,更体现了人们对美好生活的向往和追求。
《掘金泰国-市场洞察与战略机遇报告2025》PDF下载
随着全球经济一体化的加速,泰国作为东盟的核心枢纽,凭借其独特的地缘优势庞大的消费市场以及持续优化的营商环境,成为众多企业战略布局的重要目标。本报告深入剖析泰国市场的政策红利、消费趋势、产业机遇以及合规挑战,旨在为有志于开拓泰国市场的中国企业提供行动指南,助力企业在东盟这片充满活力的土地上把握机遇、应对挑战、!实现可持续发展。
《2025欧美假日购物季营销指南》PDF下载
2025年美国假日购物季零售额预计同比仅增长1.2%,总销售额约1.359万亿美元,虽仍保持正增长,但为2009年以来最低增速,市场正在步入低增长的新常态。
《2025年跨境电商东南亚市场进入战略白皮书》PDF下载
东南亚电商,正以惊人的速度复刻中国电商高速增长的黄金时代。2024年东南亚电商GMV达到1284亿美元,短短5年涨幅超过3倍。全球电商2024年GMV增幅最快的十大市场中,东南亚独占四席。东南亚是拥有约6.7亿人口的广阔市场,在现今全球关税的不确定性大格局下,因其电商基建完善,利好的贸易政策,和更高的年轻人口占比,成为跨境卖家生意拓张焦点之一。
《2025年TikTok Shop玩具品类行业报告(欧美站)》PDF下载
分析TikTok Shop美国市场、英国市场、西班牙市场、墨西哥市场等主流市场点短视频及直播电商数据,选取TikTok与玩具爱好品类相关的内容进行分析报告。
《2025 洗护品类趋势与创新洞察》PDF下载
本报告独特价值:将消费者的“行为结果”据),揭示消费者深层心理动机、并能精准预判未来增长机会
《亚马逊双轨增长指南》PDF下载
亚马逊以“以客户为中心”为核心理念,通过整合B2B与B2C的全渠道服务,帮助卖家实现“一店双拓”-- 一次上架,同步触达个人消费者与企业买家,获得双重收益。同时,基于Direct to Buyer(直接触达买家)的模式,更能有效减少中间环节,提升利润空间与品牌掌控力。
《亚马逊全球线上商采趋势与区域洞察》PDF下载
随着全球企业数字化转型的深入推进,B2B商采有望成为下一个万亿级别的蓝海市场然而,中国卖家在开拓海外企业商采市场时往往面临着一个关键挑战:难以准确把握海外企业买家的商采行为和决策模式。这种认知偏差不仅影响了产品开发方向,也制约了市场拓展策略的制定。
亚马逊公告
AMZ123旗下亚马逊公告发布平台,实时更新亚马逊最新公告,致力打造最及时和有态度的亚马逊公告栏目!
亚马逊资讯
AMZ123旗下亚马逊资讯发布平台,专注亚马逊全球热点事件,为广大卖家提供亚马逊最新动态、最热新闻。
跨境电商干货集结
跨境电商干货集结,是结合亚马逊跨境电商卖家交流群内大家在交流过程中最常遇到的问题,进行收集整理,汇总解答,将会持续更新大家当前最常遇见的问题。欢迎大家加入跨境电商干货集结卖家交流群一起探讨。
AMZ123卖家导航
这个人很懒,还没有自我介绍
亚马逊全球开店
亚马逊全球开店官方公众号,致力于为中国跨境卖家提供最新,最全亚马逊全球开店资讯,运营干货分享及开店支持。
AMZ123会员
「AMZ123会员」为出海者推出的一站式私享服务
跨境平台资讯
AMZ123旗下跨境电商平台新闻栏目,专注全球跨境电商平台热点事件,为广大卖家提供跨境电商平台最新动态、最热新闻。
侃侃跨境那些事儿
不侃废话,挣钱要紧!
首页
跨境头条
文章详情
如何排除掉谷歌分析师GA4里的重复购买次数
Ada的跨境笔记
2023-03-18 15:00
3565

如果你使用的是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。

直接用老外的图来解释吧

图片

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


如何排除重复的购买

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

图片

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

图片

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

图片

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

图片

具体怎么做呢?

首先,创建好3个变量。

第一个变量A:customtask-transaction deduper

图片

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









































































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);}}// /transactionDeduper
if (canSendHit) {originalSendHitTask(sendHitTaskModel);}
} catch(e) {originalSendHitTask(originalSendHitTaskModel);}
});
};}


第二个变量B:cookie-_transactionId

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

图片

第三个变量C:transactionId_sent

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

图片

在这段代码里,调用了之前已经创建过的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个触发器

图片

图片

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

图片

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

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

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

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

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

https://www.bounteous.com/insights/2020/09/02/duplicate-transactions-google-analytics-and-ga4-properties


咨询
官方微信群
官方客服

扫码添加,立即咨询

加群
官方微信群
官方微信群

扫码添加,拉你进群

更多
订阅号服务号跨境资讯
二维码

为你推送和解读最前沿、最有料的跨境电商资讯

二维码

90% 亚马逊卖家都在关注的微信公众号

二维码

精选今日跨境电商头条资讯

回顶部