之前有好几位做SEM的童鞋都问过我类似的问题,其大意是:在GA中怎么才能看到SEM渠道的用户使用的搜索词。我们知道,百度自2015年年中调整后,来自百度自然搜索部分的关键词几乎都获取不到了,但是付费搜索部分的关键词信息却依然在referrer中传递着。

对于百度SEM渠道的流量,我们习惯于将投放词信息作为投放链接中utm_term参数的值,这样的话关键词(keyword)维度的值就是投放词了,正是因为如此,百度SEM渠道的搜索词也就变得“无处安放”。既然百度这边的搜索词在GA中可以说只剩下付费搜索这根独苗,那么获取百度SEM渠道的搜索词也就变得十分必要了。

本文将从数据收集、配置、数据处理等层面介绍几个针对该问题的解决办法。您可以从中选择一个最适合您的解决方案。

解决办法一:投放链接不使用utm_term,投放词信息写在utm_content部分

要理解这个的用法,就要先理解GA中关键词维度的值的计算方法,不清楚的童鞋可以参考下之前我在知乎上的这个回答 。简单地说就是,当使用了utm_term,那么关键词维度的值就会是utm_term参数等号后的那个值。如果没有使用utm_term,那么关键词维度就会是搜索词的值。

所以,如果将投放词信息拼在utm_content参数上,到时候百度SEM渠道的流量的数据就会体现为广告内容维度为投放词信息,关键词维度为搜索词信息。

显然,这种方法不好的地方是占用了utm_content这个维度,而一般情况下这个维度可能会存放广告创意版本之类的信息的。

举个例子,原来的投放链接为:www.example.com/?utm_source=baidu&utm_medium=cpc&utm_term=p2p,使用这种方法就得改为:www.example.com/?utm_source=baidu&utm_medium=cpc&utm_content=p2p

解决办法二:手动获取并存储搜索关键词到广告内容维度

适用情况:百度SEM渠道的投放链接未使用utm_content参数(否则utm_content相当于设置不生效)

参考代码:

<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','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-58722781-1', 'auto');
var keyword_regex = /^https?:\/\/(m|www)\.baidu\.com\/baidu\.php.*(word|wd)=([^&]+)/;
var referrer = document.referrer;
var keyword;
if (keyword_regex.test(referrer)) {
keyword = decodeURIComponent(referrer.match(keyword_regex)[3]);
ga('set', 'campaignContent', keyword)
}
ga('send', 'pageview');

</script>

使用这种方法,搜索词最终将出现在广告内容(Ad Content)维度下,如果设置投放链接时将投放词设置在utm_term,那么投放词将在关键词(Keyword)维度下

解决办法三:配置过滤器提取被编码的搜索词

GA 的过滤器功能非常的强大,这里我们也可以使用过滤器来实现这个需求。

这里使用两个高级过滤器,将搜索词放在括号内并以“,"与投放词区分开,比如搜索词为"google analytics premium",投放词为"google analytics",使用者两个高级过滤器之后,最终体现到报表中的关键词维度报表将会出现google analytics,(google+analytics+premium),效果如下图所示:

paid-keyword-with-organic-sample

第一个过滤器可称为“获取百度SEM的搜索词”,配置如下:

get-baidu-sem-search-keyword-filter1

第二个过滤器可称为“将获取到的搜索词显示在竞价词后边”,配置如下:

get-baidu-sem-search-keyword-filter2

两个过滤器配置的顺序决不可颠倒,第一个过滤器中引荐之后使用的正则表达式为

^https?:\/\/(m|www)\.baidu\.com\/baidu\.php.*(word|wd)=([^&]+)

需要提醒大家的是,使用这种方法获取到的搜索词是url encode的,所以如果想看到实际的搜索词,可能还得导出数据后解码,解码地址比如站长之家,支持批量解码。

还可以使用其他的过滤器配置也可达到上述效果,可以参考本站其他与过滤器配置有关的博文,比如这篇

解决办法四:使用自定义维度

自定义维度几乎总是解决GA 中各种问题的可选方法,解决办法可参考方法二和本站获取更准确浏览器信息一文。

因此,此方法不再赘述。

总结:方法1需要改动投放链接的命名规则,方法2需要在GA基础代码中添加新的代码逻辑,这两种方法都能获取到直接可用的搜索关键词;方法3直接通过过滤器的方式来获取搜索关键词,不过是url encode的,可能还需要decode才可看到搜索词;方法4可以结合方法3或方法2来完成,不过这又要占用一个自定义维度的“坑”(总共才20个)了。

5 Thoughts on “在GA中获取百度SEM渠道的搜索词

  1. 您好,请问现在想获取百度搜索关键词,文中的哪些方法还有用?

  2. 方法2有问题

  3. 你好,如果是好搜或者搜狗等搜索引擎用方法三怎么做呢?

    • 为各个搜索引擎SEM流量分别配置视图,类似文中方法3百度SEM渠道的设置,引荐后的正则表达式修改为对应搜索引擎的,下边的过滤器设置也要相应的更改。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Post Navigation