【问题标题】:utm_source and utm_medium gets lost in SPAutm_source 和 utm_medium 在 SPA 中丢失
【发布时间】:2021-06-11 22:03:11
【问题描述】:

我的 SPA 应用程序和分析出现了一个奇怪的问题。某些用户在会话期间丢失了源/媒体参数。

我按照建议使用 Google 跟踪代码管理器的历史 API,它可以正常工作。但是对于大约 30% 的用户来说,他们失去了他们的 utm 参数并成为了推荐人。我不明白这种行为,有人见过吗?

所以,我知道 100% 是

(source/medium) = mySource / affiliate

但在分析中,大约 30% 的人失去了他们的 utm 参数,结果变成:

(source/medium) = mySource / affiliate (70%)
(source/medium) = mysource.com / referral (30%)

有什么建议吗?我现在有点迷茫。

【问题讨论】:

    标签: google-analytics analytics single-page-application google-tag-manager


    【解决方案1】:

    由于网站是单页应用程序 (SPA),您很可能面临“流氓推荐”的问题。

    如果是这种情况,会发生什么情况,即您覆盖了 Analytics 匹配中的 location 字段,丢失了原始 UTM 参数,而引荐仍然与匹配一起发送,因此 Analytics 将第二个匹配识别为新匹配流量来源。一种解决方案是存储原始页面 URL 并将其作为location 发送,同时在page 字段中发送实际访问的 URL。

    Simo Ahava 提供了关于此主题的非常好的 article 以及更多提示,可以为您提供帮助。

    【讨论】:

    • 是的,谢谢你。我确实确实基于那篇文章进行了很多编程,所以我现在确实保留了源/媒体。但这并不能解释为什么它会消失所有其他链接点击。真的很奇怪。
    • 您可以在用户浏览器报告中识别这些用户,并检查是否存在强制他们开始新会话的特定页面或事件。 (也许有一个特定的标签,它的行为不同。)
    • 是的,我也这样做了! :-) 它表明每一次其他交互,源/媒介都会消失/重新出现。这是一个非常烦人的行为,现在我更关注 GA 的代码是如何工作的......
    【解决方案2】:

    这个article关于“流氓推荐”问题公开了一个只适用于谷歌跟踪代码管理器的解决方案,如果你按照这篇文章,你将为整个应用程序发送相同的页面位置(如果我理解正确的话) ,这是我们不想要的。

    此外,它没有考虑对参数进行一些过滤(仅在存在有用的参数时才发送参数),因此我们提出了这个解决方案。

    请注意,代码需要在页面第一次加载和每次路由更改时运行。

    获取参数的函数

    // return the whole parameters only if at least one of the desired parameters exists
    const retrieveParams = () => {
      let storedParams;
      if ('URLSearchParams' in window) {
        // Browser supports URLSearchParams
        const url = new URL(window.location.href);
        const params = new URLSearchParams(url.search);
        const requestedParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_content', 'gclid'];
        const hasRequestedParams = requestedParams.some((param) => {
          // true if it exists
          return !!params.get(param);
        });
        if (hasRequestedParams) {
          storedParams = params;
        }
      }
      return storedParams;
    }
    

    创建完整的 URL

    // look at existing parameters (from previous page navigations) or retrieve new ones
    const storedParams = window.storedParams || retrieveParams();
    let storedParamsUrl;
    if (storedParams) {
      // update window value
      window.storedParams = storedParams;
      // create the url
      const urlWithoutParams = document.location.protocol + '//' + document.location.hostname + document.location.pathname;
      storedParamsUrl = `${urlWithoutParams}?${storedParams}`;
    }
    

    将值发送到分析(使用 gtag)

    // gtag
    gtag('config', 'YOUR_GA_ID', {
      // ... other parameters
      page_location: storedParamsUrl ?? window.location.href
    });
    

    gtag('event', 'page_view', {
      // ... other parameters
      page_location: storedParamsUrl ?? window.location.href,
      send_to: 'YOUR_GA_ID'
    })
    

    【讨论】:

      【解决方案3】:

      答案是(可能)推荐人。当用户访问一个站点(在 url 中带有 utm)时,它具有引荐来源,例如 xyz.com,当它点击站点时 SPA 不会重新加载页面,这意味着引荐来源仍然是 xyz.com 但 url 现在不包括 utm

      因此,对于谷歌来说,这样的第二次页面浏览是一个新会话。为了解决这个问题,您需要在第一个页面视图(实际页面加载)上处理引荐来源网址,这将提供正确的引荐来源网址,而在所有其他点击中,它将提供 null 或域作为引荐来源网址:)

      详情: https://dronsom.com/2021/06/11/single-page-application-proper-pageview-measurement-solving-issue-with-google-and-referrer-traffic

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-14
        • 1970-01-01
        • 1970-01-01
        • 2017-07-12
        • 1970-01-01
        • 2020-01-25
        • 1970-01-01
        相关资源
        最近更新 更多