javascript - 在没有查询字符串参数的情况下使用 Google Analytics 跟踪事件?

标签 javascript google-analytics

Google Analytics 是否支持无需使用查询字符串参数即可跟踪事件的方法。

在 Analytics 中,您可以 tag a link to your site带有查询字符串参数,例如 utm_campaignutm_medium,它们携带有关事件的信息以便对其进行跟踪。

Google 实际上有一个 online tool帮助创建此类链接。

例如,如果 StackOverflow 在 Experts Exchange 上做广告,他们可能会有这样的链接:

http://www.stackoverflow.com/?utm_source=expertexchange&utm_medium=banner&utm_campaign=a-better-expert-exchange

出于多种原因,我不希望这些看起来笨拙的参数出现在我的 URLS 中:

  • 我想鼓励推特,而长链接不鼓励这样做
  • 我不希望人们在
  • 我希望人们看到一个干净的 URL
  • 我不希望搜索引擎索引这些链接。
  • 我想完全控制将哪些参数发送到 Google Analytics - 而不是让我的合作伙伴弄乱他们访问我网站时使用的 URL

我前一阵子试图找到一种可以设置这些参数的方法。 Google has a page乍一看似乎是解决方案,但实际上并非如此。该页面描述了如何将查询字符串参数的名称更改为其他名称 - 例如使用 src 而不是 utm_source 您将运行:

 pageTracker._setCampSourceKey("src");     

我似乎真的无法弄清楚为什么他们不让实际显式设置 utm_source 键的值变得容易 - 而不仅仅是为其设置一个替代参数名称。

我记得有一段时间我找到了一个有某种令人讨厌的黑客攻击的人,但我现在似乎找不到了。我似乎记得,无论是谁拿了一份分析代码的副本,基本上将其分支并对其进行了黑客攻击。这对我来说不是一个好的解决方案!

是否有官方支持的方式来执行此操作,而无需某种讨厌的重定向。

简而言之,我想做这样的事情(ASP.NET MVC 站点)。使用如下 URL 为 partnet 提供指向我网站的链接:

 http://www.example.com/?cid=2dae88a8-66b1-475d-8a35-2978bd1a158c

在我的 MVC 页面的 Controller 中,我会找出此 GUID 与哪个事件相关,并设置模型状态。注意:这给我带来的好处是我可以更改广告系列参数而无需重新发布 URL。

然后在页面本身中我会这样做:

var campaignMedium = <%= ViewData.Model.CampaignMedium %>;
var campaignSource = <%= ViewData.Model.CampaignSource %>;
var campaignName = <%= ViewData.Model.CampaignName %>;

pageTracker._setCampaignData({
    utm_source: campaignSource,
    utm_medium: campaignMedium,
    utm_campaignName: campaignName
});
pageTracker._trackPageview();

重要提示:这个 _setCampaignData 方法实际上并不存在。这只是我希望能够执行的操作的“伪代码”。

有没有人成功地做到了这样的事情?

最佳答案

_set campaignParams

您的理论“_setCampaignData”终于以 ["_set","campaignParams",...] 的形式存在

如果您有办法以编程方式注入(inject)您想要设置的值(例如,通过重定向时的 cookie 设置,或在服务器端设置并打印到页面上),您可以使用 _set API 用于对您要设置的广告系列参数进行硬编码。

它的格式是:

_gaq.push(['_set', 'campaignParams', 
'utm_campaign=CAMPAIGN&utm_source=SOURCE&utm_medium=MEDIUM']);

因此,使用您的原始示例:

 var campaignMedium = <%= ViewData.Model.CampaignMedium %>;
 var campaignSource = <%= ViewData.Model.CampaignSource %>;
 var campaignName = <%= ViewData.Model.CampaignName %>;
 _gaq.push(['_set', 'campaignParams', 
'utm_campaign=' + campaignName +  '&utm_source=' + campaignSource +'&utm_medium=' + campaignMedium]);

2017 年更新

This answer详细介绍了如何使用较新的 Google Analytics 库 analytics.js/Universal Analytics 来实现这一点。

关于javascript - 在没有查询字符串参数的情况下使用 Google Analytics 跟踪事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/934119/

相关文章:

iframe - 使用Youtube API跟踪嵌入的视频事件-未定义ytcfg(…)

python - 有没有办法使用 Node.js 按计划检索 Google Analytics 4 数据?

javascript - 页面上出现黑钻问号

javascript - jQuery 验证 ".error"字段 CSS

.htaccess - 谷歌分析多个域别名

javascript - 是否有用于 Javascript 的事件分析抽象层?

google-analytics - 如何在新版 Google Analytics 上设置 trackPageview?

javascript - 在 JavaScript ES6 中,可迭代对象和迭代器有什么区别?

javascript - 如何仅在 HTML5 验证通过时运行 reCaptcha?

javascript - DynamoDB 扫描返回多个扫描结果