将Google analytics client_id发送到Piwik

Send Google analytics client_id to Piwik

本文关键字:Piwik id Google analytics client      更新时间:2023-09-26

有没有办法通过使用javascript解决方案将Google analytics client_id发送到Piwik?事实上,我可以用官方文档中描述的以下代码片段获取谷歌的客户端id:

    ga(function(tracker) {
      var clientId = tracker.get('clientId');
    });

我相信问题是Google的ga.js和Piwik的跟踪代码异步运行,我无法将client_id发送给Piwik。我在Piwik中创建了一个自定义diemnsion,并将相关代码添加到我的跟踪脚本中,但Piwik说"没有定义值"。我尝试发送静态id(例如test123),它运行良好。

我试图在页面加载window.onload函数后加载Piwik的跟踪代码,但没有成功。我也尝试过等待clientId变量生成,但它都不起作用。我试图为这两个跟踪脚本打开异步选项,但没有成功。

我运行chrome的时间线调试来查看每个跟踪代码何时加载,但即使Piwik的js代码稍后加载,client_id也没有传递到我的服务器。

你知道我如何将这些信息发送到我自己的服务器以在Piwik中进行处理吗?如果有人能提到另一种调试的可能性,这可以帮助我识别问题,那也太好了。

正如EikePierstorff所提到的,一个更好的解决方案是从存储的cookie中读取谷歌的client_id。您可以通过发布以下内容来获取谷歌分析cookie的内容:

document.cookie.valueOf('_ga')

它列出了cookie的内容。cookie中的每个元素都用分号(;)分隔。我使用以下代码读取client_id:

    function getClientId(){
      var cookie_val_array = document.cookie.valueOf('_ga').split(';');
          for (i=0; i < cookie_val_array.length; i++){
            if(cookie_val_array[i].indexOf('_ga=') >= 0){
                client_id = cookie_val_array[i].split('.')[2] + '.' + cookie_val_array[i].split('.')[3];
            }
         }
       return client_id;
   }

我使用以下代码将其传递给Piwik:

_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue = getClientId()]);

注意:您应该在Piwik中创建一个自定义维度,您的自定义维度可能有不同的id。

我想强调的几件事:

  • 如果这是你第一次在您的页面和cookie尚未生成,此代码将给出错误所以如果你愿意的话,你需要处理它。

  • 谷歌可能会更改其cookie的格式和内容,因此请在开始阅读以下内容之前,请检查cookie的内容其价值。