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

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

3478
2023-03-18 15:00
2023-03-18 15:00
3478

如果你使用的是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跨境头条,如有疑问,请联系客服。
最新热门报告作者标签
俄罗斯电商市场快速增长,综合平台优势大于独立站
AMZ123获悉,近日,Euromonitor、EMARKETER及Yakov and Partners发布了《俄罗斯电商市场发展现状》报告。报告基于2020-2024年的数据,对俄罗斯电商市场的发展趋势、综合电商平台与独立电商的竞争格局、各品类表现、未来市场预测进行了系统分析。一、俄罗斯电商趋势1.互联网渗透率增长放缓2020至2024年,俄罗斯互联网使用率从78.1%(约9560万用户)提升至85.5%(约1.04亿用户),四年间增加7.4%(新增约790万用户)。俄罗斯的互联网渗透率增速正在逐年放缓,预计到2029年互联网渗透率将达到89%(约1.08亿用户)。
越南加强进口商品监管,修订多项增值税和海关规则
AMZ123获悉,近日,越南海关公布了2026年对增值税(VAT)、特别消费税(SCT)及电子交易管理的多项修订,核心在于统一税制规则、扩大免税范围并加强跨境与电子化申报管理。此次调整既有减轻企业合规成本、扶持出口与产业链升级的内容,也伴随对部分消费品与临时进口再出口环节的更严监管,直接影响生产、进出口和跨境电商卖家。在增值税方面,新法律将此前零散的官方函件并入法律和配套法令,提升透明度并便于电子化处理。关键变化包括扩大增值税免税目录:列入政府清单的自然资源与矿产(无论原料还是加工品)在出口时被明确归为增值税免税项目。
TikTok Shop黑五复盘,一堆中国卖家晒出百万GMV
黑五复盘,TikTok卖家:“库存差点给我爆完了!”
存生命危险!美国CPSC紧急召回超1万件儿童手写板玩具
AMZ123获悉,近日,美国消费品安全委员会(CPSC)宣布,紧急召回亚马逊在售的KTEBO品牌的儿童书写板玩具,原因是该产品未能符合玩具类产品的强制性安全标准,电池仓固定螺丝无法保持牢固,可能导致纽扣电池外露。若儿童误吞纽扣电池,可能造成严重伤害、内部化学灼伤,甚至威胁生命。此次召回涉及KTEBO品牌的双件套书写平板玩具,召回数量约10,380件,产品提供四种颜色组合,包括粉色/蓝色、绿色/黄色、橙色/蓝色以及紫色/红色,并有8.5英寸与10英寸两种规格,每套配有与机身同色的手写笔。
AliExpress波兰11月增长显著,双十一活动日活用户增长37%
AMZ123获悉,近日,AliExpress的数据显示,平台11月的消费者参与度与卖家销售额大幅增长。今年11月11日至19日举行的AliExpress双十一购物节活动期间,波兰用户的参与度显著提升,日活跃用户数量同比增长37%。随着去年秋季AliExpress开放波兰本地卖家入驻,今年波兰本地卖家的参与度也明显提高,他们在此次双十一促销期间的GMV同比增长74%。从消费偏好来看,智能生活类产品持续吸引波兰消费者,智能家居与清洁设备成为销售榜单的主导品类。Dreame、ILIFE、Laresar等品牌的扫地机器人和自动吸尘设备进入最畅销产品行列,反映波兰家庭对智能化、便捷化生活方式的需求不断上升。
亚马逊印度计划投资127亿美元,推动本地云和AI基础设施建设
AMZ123获悉,近日,亚马逊宣布,将在2030年前进一步推动人工智能在印度的普及,计划投入127亿美元建设本地云和AI基础设施。亚马逊表示,这项长期投资将为超过1500万家中小企业带来AI应用能力,同时在2030年前为400万名公立学校学生提供AI素养课程与职业教育,提高数字技能普及度。亚马逊认为,AI正成为提升印度数字包容性的关键力量,能够突破语言、读写能力与访问渠道的限制,让更多个人与企业受益。在中小企业领域,亚马逊正在推出新一代AI工具,以降低经营门槛、简化业务操作并提升增长效率。
“黑五网一”DTC投放数据复盘,流量都去哪了?
2025 年“黑五网一”大战,终于落下帷幕。除了 GMV ,这场仗花了多少“弹药”,你算清楚了吗?流量场上的每一发子弹,都正中靶心了吗?偏离的原因找到了吗?除了看自己后台的数据,还要看清整个大盘的趋势——这决定了我们下一步该往哪儿走。基于 GoodsFox 监控的投放数据,我们有以下发现:服装、美妆的竞争力度只增不减3D 打印与机械键盘,从“小众圈层”跃升为热门赛道宠物经济的流量稳定,不靠爆点也能撑起大盘这些变化背后,都在重塑今年“黑五网一”的投放结构,我们先从流量基本盘讲起——尽管每年都有新风口,但从广告投放的绝对体量来看,传统大盘仍在支撑整体流量水位。
还在“索评”?亚马逊Review管理的红线与出路
亚马逊的评论管理格局是如何改变的?首先要明确一点:过去几年,亚马逊的Review生态系统发生了剧变,这对各类管理工具产生了深远影响。在买家端,那些专门用来标记“虚假评论”(或帮助买家鉴别真伪)的老一代工具正在失效甚至消失。不少买家就因为Fakespot在平台冲突、合规问题和数据接口变更的压力下关停而感到措手不及。Fakespot是一个分析电商产品评论真实性、帮助消费者识别虚假评价的平台。在卖家端,亚马逊的政策合规和风控机制变得更加严厉。这意味着Review的风险红线变了:以前那些“地毯式索评”或“送测(Giveaway)”的套路可能有效,但现在操作这些手段的封号风险极高。
AMZ123PayPal计算器使用指南及常见问题详解(内附计算公式)
Paypal手续费计算器介绍及计算公式分享 https://www.amz123.com/tools-paypal
重磅!亚马逊公布2026年战略重心变化
AMZ123获悉,12月4日,2025年亚马逊全球开店跨境峰会上,亚马逊回顾了过去一年里中国卖家在亚马逊上所取得的进展,并围绕2026年四大业务战略重点——供应链服务、AI赋能、全球拓展布局、本地服务,揭晓了40余项创新举措。根据亚马逊披露的数据:2025年以来,中国卖家通过亚马逊全球站点售出数十亿件商品,在美欧等成熟站点的销售额增长超过15%,在新兴站点的销售额增长超过30%;2025年以来,销售额达到200万、500万、800万美金的中国卖家数量,增长均超过20%;销售额超过1000万美金的中国卖家数量,增幅近30%。
卖家还在等口径!欠税公示制度却已明确落地
卖家还在“等政策”,但政策已明确趋严过去几个月里,跨境卖家对税务政策最大的期待就是——“能不能再等等,看会不会有新口径”。但事实上,政策并没有往宽松走,而是沿着“数据透明—提醒申报—强化监管”这条路径一步步推进。AMZ123了解到,目前已有超过7000家境内外平台完成涉税信息报送,卖家的线上线下销售数据已全面纳入监管体系。随着数据比对展开,税务部门对申报明显低于平台数据的经营者陆续发出提示,要求补充申报;多数卖家在收到提示后完成了更正,但也的确还有部分经营者迟迟没有动作,继续处于观望甚至低申报的状态。在这种情况下,监管的态度也开始变得更为明确:对于未按规定申报的行为,将从提醒阶段进入到强化管理阶段。
亚马逊新功能,能救你一整条链接!
最近有卖家后台发现,亚马逊多了一个新功能,看起来不起眼,实则很关键——绩效提醒(Performance Notifications)。这个功能解决了我们运营过程中的一个老大难:链接出问题时能不能第一时间被提醒?以前我们发现Listing出状况,大多靠“事后诸葛”:出单突然断了,去查是不是被下架;关键词排名一夜暴跌,才想起去对比转化率;广告Acos拉爆、CTR异常,才知道图可能挂了;等你发现问题,可能已经晚了。这次,亚马逊终于“良心发现”,开始主动提醒你链接的数据异常了。这个新功能到底能干啥?说白了,它就是一个链接级别的数据异常预警系统。
汽配类目又现吸金王,TikTok卖家30天入账1100万
月销量暴涨36007900%,这一汽配用品在TikTok卖爆了
跨界AI失败?深圳大卖资产重组终止!
12月2日,跨境3C 配件大卖杰美特发布公告,宣布决定终止筹划以现金方式收购AI 算力解决方案提供商思腾合力(天津)科技有限公司(以下简称“思腾合力”)控制权的重大资产重组事项。这场筹划半年、备受行业关注的跨界收购突然落幕,消息一出引发市场热议。AMZ123获悉,杰美特于2025年6月21日首次披露了筹划重组的提示性公告,拟通过现金交易控股思腾合力,该交易初步测算构成重大资产重组,且不涉及发行股份、不构成关联交易,也不会导致公司控制权变更。杰美特是“中国手机壳第一股”,主营业务为移动智能终端保护类产品的研发、设计与销售,产品包括手机、平板及穿戴设备的保护壳与表带等。
TikTok Shop英国站黑五创历史新高,销售额同比飙升50%
AMZ123获悉,近日,根据TikTok的公告,TikTok Shop英国站在今年黑色星期五期间创下平台历史最高销售纪录,整体销售额较去年同期提升50%。高峰期出现在黑色星期五当天,当日每秒售出27件商品,刷新TikTok Shop在英国的单日销售纪录。今年消费者开始促销季的时间更早,“假黑五”(Fake Friday,即黑五前一周)的销售额达到去年黑色星期五的纪录水平。黑五周末期间,“TikTok Shop Black Friday”搜索量同比增长404%,成为2025年与黑五相关的最高热度搜索词。同期,平台活跃购物人数较去年增加28%。
宠物消费持续升温,亚马逊10款月销过万宠物产品推荐
AMZ123获悉,近日,亚马逊各类产品搜索量增长显著,以下10款产品在亚马逊上销量表现突出,深受消费者欢迎。1. 猫咪情绪舒缓喷雾预计销售额:139.84万美元/月销量:26,000+星级评分:4.4好评数量:12,694+图源:亚马逊产品描述:FELIWAY Optimum猫咪情绪舒缓喷雾的专利信息素复合物能显著减少猫咪的应激表现,包括喷尿、抓挠、恐惧反应、紧张冲突等。产品无药性、安全且不干扰人类与其他宠物,每个喷雾覆盖面积约 700 平方英尺。
《亚马逊生活日用品类攻略手册》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旗下亚马逊公告发布平台,实时更新亚马逊最新公告,致力打造最及时和有态度的亚马逊公告栏目!
跨境科普达人
科普各种跨境小知识,科普那些你不知道的事...
首页
跨境头条
文章详情
如何排除掉谷歌分析师GA4里的重复购买次数
Ada的跨境笔记
2023-03-18 15:00
3478

如果你使用的是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% 亚马逊卖家都在关注的微信公众号

二维码

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

回顶部