Rails:服务器端 Google 分析 'Direct' 源中的所有流量

Rails: Server side Google Analytics all trafic in 'Direct' source

我尝试了几个 gem 来使用服务器端 GA。

=>断音

=> 加巴

=> ...

但我总是遇到同样的问题,在 google 分析中,我所有事件的来源都在 "Direct"(直接流量)中,即使我使用 utm_source,.. .

我说过,每次我触发一个事件时,Google 分析都会创建一个新会话,源 "Direct"(以及美国的一个位置),我认为该事件归因于此session 而不是我的有效会话。

我的配置(使用 gem Gem Gabba https://github.com/hybridgroup/gabba):

查看application.html.erb

<script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-XXXXXXXX-1', 'auto');
    ga('send', 'pageview');
  </script>

模范用户

Gabba::Gabba.new("UA-XXXXXX-1", "mysite.com").event('User', 'Signup', 'Profile completed')

我怀疑这是配置问题还是使用服务器端 GA 时经常出现的问题?

谢谢@eike & @RaV,你帮我找到了解决办法。

我删除了 gabba gem 并添加了 staccato gem。 问题是一样的(staccato 默认生成一个新的 client_id,这就是为什么我有一个副本),但我想出了如何解决它。

1.Just 从应用程序控制器的 google 分析 cookie 中保存 client_id

before_action :tacking_ga


def client_id
  cookies["_ga"].split(".").last(2).join(".")
end

  private

  def tacking_ga
    @tracker = Staccato.tracker('UA-XXXXXXXXX-1', client_id, ssl: true) if Rails.env == "production"
  end

2.After 在我的控制器中(示例 user_controller)我只需要在正确的位置添加我的事件:

@tracker.event(category: 'User', action: 'Signup', label: "Profile completed", value: nil)

谢谢你的帮助