如何通过Nuxt Google Analytics模块追踪流量来源?
解决Nuxt中@nuxtjs/google-analytics流量来源显示为Stripe的问题
问题根源是用户完成支付从Stripe跳转回站点时,Stripe被GA识别为最后一个引荐来源,覆盖了用户最初的流量来源。以下是具体解决方案:
1. 留存原始流量来源到本地存储
在用户首次访问站点时,将初始的UTM参数或引荐来源存入本地存储,避免后续跳转丢失数据:
创建客户端插件plugins/ga-source-tracker.js:
export default ({ app }) => { if (process.client) { if (!localStorage.getItem('originalTrafficSource')) { const urlParams = new URLSearchParams(window.location.search); const utmSource = urlParams.get('utm_source'); const utmMedium = urlParams.get('utm_medium'); const utmCampaign = urlParams.get('utm_campaign'); const referrer = document.referrer; let sourceData = {}; // 优先读取UTM参数 if (utmSource) { sourceData = { source: utmSource, medium: utmMedium, campaign: utmCampaign }; } // 无UTM时读取非本站的引荐来源 else if (referrer && !referrer.includes(window.location.hostname)) { const referrerHost = new URL(referrer).hostname; sourceData = { source: referrerHost, medium: 'referral' }; } if (Object.keys(sourceData).length) { localStorage.setItem('originalTrafficSource', JSON.stringify(sourceData)); } } } };
在nuxt.config.js中注册该插件:
plugins: [ { src: '~/plugins/ga-source-tracker.js', mode: 'client' } ]
2. 发送购买事件时手动指定原始来源
在支付成功的回调逻辑中,从本地存储取出原始来源数据,手动覆盖GA的默认来源参数:
// 支付成功后触发 const originalSource = JSON.parse(localStorage.getItem('originalTrafficSource')) || {}; this.$ga.event({ eventCategory: 'Ecommerce', eventAction: 'Purchase', eventLabel: 'Order Completed', fieldsObject: { trafficSource: { source: originalSource.source || 'direct', medium: originalSource.medium || 'none', campaign: originalSource.campaign || '(not set)' } } });
3. 在GA后台添加引荐排除列表
进入UA版本的GA后台,依次点击「管理」→「属性设置」→「引荐排除列表」,添加Stripe的相关域名(如stripe.com、checkout.stripe.com)。GA会忽略这些域名的引荐,保留用户最初的流量来源记录。
4. 避免数据重复的处理方案
不要同时启用@nuxtjs/google-analytics和rudderstack的GA集成:
- 若使用rudderstack,直接通过它配置GA数据源,关闭Nuxt的GA模块;
- 若坚持使用Nuxt模块,在rudderstack中禁用GA的自动事件发送,只保留必要的自定义事件追踪。
内容的提问来源于stack exchange,提问作者geder768
相关产品推荐
相关产品推荐

