如何提取Enhanced E-Commerce的revenue值为Tag Manager自定义JS变量
解决方案
原代码失效原因
ga.getByName()的入参是GA跟踪器的自定义名称,而非电子商务字段名,如果你未主动设置跟踪器名称,调用该方法也无法返回有效数据- GTM自定义JavaScript变量要求同步返回值,你原来的写法将return写在了ga的异步回调函数中,返回值无法被GTM变量捕获,因此永远返回空值
最优方案(可修改页面原生代码时推荐)
直接在页面原有GA购买事件上报代码处,同步将revenue值推入dataLayer,是最稳定的实现方式,修改后的页面代码如下:
// 原有代码 ga('ec:setAction', 'purchase', { 'id': '1014', 'revenue': '69.06', 'shipping': '0.00', 'tax': 0 }); // 新增代码,将revenue推入数据层 dataLayer.push({ 'purchase_revenue': '69.06' }); ga('send', 'pageview');
后续在GTM中新建「数据层变量」,变量名称填purchase_revenue即可直接获取对应值。
备选方案(无法修改页面原生代码时使用)
如果没有权限修改页面原生代码,可以使用以下自定义JavaScript变量代码实现取值:
function() { if (typeof ga !== 'function') return; var purchaseRevenue; ga(function(tracker) { // 获取已设置的电子商务动作配置 var ecAction = tracker.get('ec:action'); if (ecAction && ecAction.name === 'purchase' && ecAction.fields) { purchaseRevenue = ecAction.fields.revenue; } }); return purchaseRevenue; }
注意事项
- 需确保用到该变量的GTM标签触发时机晚于页面原生
ga('ec:setAction', 'purchase')的执行时间,建议将触发条件设置为DOM Ready或Window Loaded,避免取值为undefined。
内容的提问来源于stack exchange,提问作者Manuel-BWK
相关产品推荐
相关产品推荐

