Shoptet网站Purchase事件在Google Tag Assistant中触发3次的问题求助
解决Shoptet网站Purchase事件重复触发3次的问题
问题背景
基于Shoptet搭建的网站,在Google Tag Assistant中预览时,Purchase事件被重复触发3次,每次事件带有独立的gtm.uniqueEventId,最终都会同步到GA4和Google Ads。事件触发顺序为:Purchase → set(对应gtag("set", {currency: "CZK"})) → Purchase → fbloaded(对应dataLayer.push({fbpixel: "loaded", event: "fbloaded"})) → Purchase。解绑Facebook账号后fbloaded事件仍存在,解绑GA4账号则无任何追踪事件,已排查过重复标签和例外规则未发现异常,三次Purchase的DataLayer内容量依次递减。
可行解决方案
1. 通过GTM过滤重复的Purchase事件(最快捷)
利用订单ID(transaction_id)的唯一性,在GTM中设置触发条件,仅允许首次出现的同订单ID触发Purchase标签:
- 步骤1:创建自定义JavaScript变量
变量作用是记录已触发过的订单ID,判断当前事件是否为重复:function() { window.trackedTransactions = window.trackedTransactions || []; const currentTxId = {{`DLV - transaction_id`}}; // 替换为你获取transaction_id的DataLayer变量 if (window.trackedTransactions.includes(currentTxId)) { return false; } window.trackedTransactions.push(currentTxId); return true; } - 步骤2:修改Purchase标签的触发条件
在原触发条件(event equals purchase)基础上,添加「上述自定义变量 equals true」,确保仅首次有效触发的Purchase事件会触发标签。
2. 关闭Shoptet内置的自动追踪,统一用GTM管理
Shoptet后台的Analytics设置中,若同时开启了GA4、Google Ads、Facebook像素的自动追踪,可能会各自独立触发Purchase事件,叠加后导致三次触发:
- 进入Shoptet后台的「Analytics & Tracking」页面,关闭所有平台的自动追踪选项;
- 完全通过GTM配置GA4、Google Ads、Facebook像素的事件追踪,确保逻辑统一。
3. 排查fbloaded事件的触发源
即使解绑Facebook账号仍存在fbloaded事件,可能是Shoptet主题或第三方插件残留的代码:
- 检查网站代码中是否有硬编码的Facebook像素加载逻辑,手动清理相关代码;
- 在GTM中设置规则,当
fbloaded事件触发时,阻止后续的Purchase事件触发(可通过自定义触发器排除,或在标签中添加触发条件排除fbloaded后的事件)。
4. 验证DataLayer推送逻辑
在GTM预览模式中查看三次Purchase事件的transaction_id:
- 若三次事件的
transaction_id相同:说明Shoptet核心代码重复推送了Purchase事件,可联系Shoptet官方支持反馈问题,同时用方案1的过滤逻辑临时解决; - 若
transaction_id不同:需排查是否存在订单重复生成的业务逻辑问题。
内容的提问来源于stack exchange,提问作者Tushy
相关产品推荐
相关产品推荐

