Javascript 使用Google Analytics跟踪没有查询字符串参数的活动?

Javascript 使用Google Analytics跟踪没有查询字符串参数的活动?,javascript,google-analytics,Javascript,Google Analytics,Google Analytics中是否有一种受支持的方法来跟踪活动,而不必使用查询字符串参数 pageTracker._setAllowAnchor(true); 在分析中,您可以使用查询字符串参数,例如utm_活动和utm_媒体,这些参数携带有关活动的信息,以便对其进行跟踪 事实上,谷歌在创建此类链接方面有很多帮助 例如,如果StackOverflow在Experts Exchange上做广告,他们可能会有如下链接: http://www.example.com/?cid=2dae88a8

Google Analytics中是否有一种受支持的方法来跟踪活动,而不必使用查询字符串参数

pageTracker._setAllowAnchor(true);
在分析中,您可以使用查询字符串参数,例如
utm_活动
utm_媒体
,这些参数携带有关活动的信息,以便对其进行跟踪

事实上,谷歌在创建此类链接方面有很多帮助

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

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

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

  • 我想鼓励推特,长链接不鼓励这样做
  • 我不想让人们把他们的竞选活动ID加入书签
  • 我希望人们看到一个干净的网址
  • 我不想搜索引擎索引这些链接
  • 我想完全控制发送给谷歌分析的参数,而不是让我的合作伙伴来搞乱他们访问我网站的URL
不久前,我试图找到一种可以设置这些参数的方法。乍一看,这似乎是解决方案,但实际上并非如此。该页面描述了如何将查询字符串参数的名称更改为其他名称-例如,使用
src
而不是
utm\u source
,您将运行:

 pageTracker._setCampSourceKey("src");     
我真的不明白为什么他们不让显式设置
utm_source
键的值变得容易,而不仅仅是为它设置一个可选的参数名

我记得有一段时间以前,我发现有人有一种令人讨厌的黑客行为,但我现在似乎都找不到。我似乎还记得,不管是谁,他拿走了一份分析代码的副本,并从本质上对其进行了分支和黑客攻击。这对我来说不是个好办法

有没有一种官方支持的方式可以做到这一点,而不需要一些讨厌的重定向

简而言之,我想做类似的事情(ASP.NETMVC站点)。为partnet提供指向我的网站的链接,URL如下:

 http://www.example.com/?cid=2dae88a8-66b1-475d-8a35-2978bd1a158c
在我的MVC控制器页面中,我将找出此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();
var-activemedium=;
var-source=;
变量名称=;
页面跟踪器。_设置活动数据({
utm_来源:活动来源,
utm_媒介:运动媒介,
utm_活动名称:活动名称
});
页面跟踪器。_trackPageview();
重要提示:此_setActivationData方法实际上不存在。这只是我理想情况下希望能够做到的“伪代码”。


有人成功地做到了这一点吗?

嗯,我没有测试它,但尝试将这些参数添加到
.trackPageview()
方法中,即:

pageTracker._trackPageview("?utm_source=...")
无论如何,您必须以某种方式传递这些参数。这意味着,你总是会有长的URL-s,里面有一些竞选垃圾。它不会阻止为错误的URL-s添加书签,搜索引擎为它们编制索引,等等

如果要保持对这些参数的控制,请为合作伙伴设置单独的URL-s,以重定向到标记的目标URL:

http://example.com/campaigns/1 -> http://example.com/?utm_source=...

在您的示例中,您可以使用Google Analytics API自定义对_trackPageview的调用

pageTracker._trackPageview("/inbound/" + campaignSource + "/" + campaignMedium );
所有入站链接将显示在Google Analytics中的/inbound/“pseudo directory”下,其中有一个单独的“directory”用于活动源和活动介质。

Trackin API中有一个函数,允许您在锚文本中指定标记,而不是作为查询参数

pageTracker._setAllowAnchor(true);
因此,您可以使用
http://www.stackoverflow.com/#utm_source=expertexchange
,GA会理解的。这样可以避免SEO问题


对于推特问题,我建议您使用帖子中描述的方法。

Török Gábor给了我一个想法

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

// save the old hash
var oldHash = document.location.hash;

// add campaign data to the hash
document.location.hash = 'utm_source=' + escape(campaignSource) + ...;
pageTracker._setAllowAnchor(true);
pageTracker._trackPageview();
// restore the old hash:
document.location.hash = oldHash;
/。。。
var=中等;
var-source=;
变量名称=;
//保存旧散列
var oldHash=document.location.hash;
//将活动数据添加到哈希中
document.location.hash='utm_source='+转义(活动源)+。。。;
pageTracker._setAllowAnchor(真);
页面跟踪器。_trackPageview();
//还原旧哈希:
document.location.hash=oldHash;

这样,您可以在后端创建活动数据,然后动态地将其传递给哈希,然后在用户没有注意到的情况下恢复它。也就是说,活动跟踪100%独立于真实URL。

我将此发布到Google帮助论坛

谷歌请阅读!!!伟大的增强机会!!!这导致很多用户无法使用广告参数。允许从trackPageview(URL)上使用的URL读取广告参数

在任何情况下,如果没有这种能力,我必须使用变通方法。而不是将参数附加到URL。我临时将它们作为书签附加到URL。然后我在调用trackPageview后删除了它们。通过将它们添加为书签,页面不会重新加载。请参见下面的示例

var pageTracker = _gat._getTracker(param);
var orighash = document.location.hash;
if (orighash == "") {
    orighash = "none";  // this is done to prevent page scrolling
}
document.location.hash = 'utm_source='+source+'&utm_campaign='+campaign+'&utm_medium='+medium+'&utm_content='+content;
pageTracker._setAllowAnchor(true);
pageTracker._trackPageview();
document.location.hash = orighash
_设置参数 您的理论“活动数据集”最终以
[“活动参数集”、“活动参数”…]的形式存在。

如果可以通过编程方式注入要设置的值(例如,通过重定向上的cookie设置,或在服务器端设置并打印到页面上),则可以使用
\u 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]);
var-activemedium=;
var-source=;
变量名称=;
_gaq.push([''设置','活动参数',
“utm_campaign='+campaignName+'&utm_source='+campaignSource+'&utm_medium='+campaignMedium]);
2017年更新 详细说明如何使用
ga('set', 'campaignName', 'TheCampaignName...');
ga('set', 'campaignSource', 'someCampaignSource');
ga('set', 'campaignMedium', 'email');