Google跟踪代码管理器虚拟页面视图

时间:2017-08-08 07:34:12

标签: javascript google-analytics google-tag-manager google-datalayer

我在设置虚拟页面视图时遇到一些问题,该虚拟页面视图应覆盖在没有结果时发送给谷歌的网址。

以下是我的JavaScript代码:

function returnNoSearchResultsGoogleTagManagerCode($searchterm){
    if ($searchterm == "") return "";

    $requestUri = $_SERVER['REQUEST_URI'] . "&no_result=".$searchterm;


    $js = "<script>
        $(document).ready(function(){
             dataLayer.push({
                 'event':'empty_result',
                 'virtualPageURL':'".$requestUri."'
                });
            });


    </script>";

    return $js;
}

如您所见,我想使用事件触发器(empty_result)。

在谷歌中,我使用触发器来确定页面是否为无结果页面。首先,我使用自定义JS

创建了一个自定义变量
    function(){
       if (document.getElementsByClassName('ga-no-result').length > 0){
            return true;
       }else{
            return false
       }
   }

如果SearchEngine无法找到结果,则设置该类。到现在为止还挺好。 我还创建了一个dataLayer变量来保存virtualPageURL

dataLayer

现在我需要一个在变量为真时触发的事件。

Event SearchEmptyResult

最后,我创建了一个带有PageView类型的标签,该标签在事件发生时被触发:

Google Tag

到目前为止似乎没问题,标签已正确配置(我猜)但如果我进行的搜索没有结果,则页面网址不会被覆盖

enter image description here

正确触发标记并填充变量。 dataLayer的概述显示了正确的dataLayer事件。 但是PageURL没有被覆盖......即使我等了一整天,该类别也没有被发送到谷歌。

我做错了什么? 如果有人有想法甚至是解决方案,我将非常感激。)

提前致谢

exa.byte

更新:

嘿,我忘了提及,我想使用新的页面变量作为谷歌应该用来确定searchterm和searchcategory的字符串 在Google Analytics中,我将搜索配置为&#34; q&#34;参数和&#34; no_result&#34;作为类别。 是否甚至可以更改谷歌最终会解析的字符串?

5 个答案:

答案 0 :(得分:2)

要向Google Analytics发送虚拟综合浏览量,您需要更改的字段是页面而非 {{Page url}} ,还有标题字段。

这是发送简单虚拟网页浏览所需要做的唯一两件事。

额外:我总是使用 / virtual / 启动我的页面路径,以便能够在GA中轻松识别哪些是虚拟网页浏览

答案 1 :(得分:1)

对于虚拟页面视图,您必须更改字段“页面” - 在GTM-OnSearchEmptyResult中您正在更改“{{Page URL}}” - 我认为这不是发送虚拟页面视图的正确方法。此外,如果您需要更改主机名,请使用Fieldname“hostname”。

在预览模式下,您不会在“变量”选项卡中看到页面URL更改,您必须转到触发的实际GA标记并检查其值。您可以在GTM的预览工具中执行此操作,也可以使用标准开发人员工具 - 网络选项卡查看向GA发送的值:

enter image description here

您可以看到“dl”参数是当前页面,如果您设置虚拟页面,您还应该看到名为“dp”的参数,这将是您的GA中页面的新值。

答案 2 :(得分:1)

如果您要设置虚拟网页浏览,则必须在字段名称中使用页面而不是{{Page URL}},并使用文档标题在您的fieldname中使用标题。 有关谷歌分析的更多字段参考,请点击以下链接 https://developers.google.com/analytics/devguides/collection/analyticsjs/field-reference#hitType

答案 3 :(得分:1)

如果您不想使用自定义跟踪代码管理器事件,即使您没有包含Google Analytics代码,也仍然可以使用旧的ga方法在页面上。您只需动态获取正确的跟踪器,如Simo Ahava in this thread所述。

if (typeof ga === "function") {
  ga.getAll().forEach((tracker) => {
    tracker.set('page', '/my/path'); // <- change here
    tracker.send('pageview');
  });  
}

我也把它放在gist here

答案 4 :(得分:0)

感谢您的帮助。我想我摆脱了问题,现在已经解决了。我将在下面描述我的解决方案:

解决方案非常简单。

  1. 我有一个错误/拼写错误@ google后端。我将search_category参数设置为“no_results”,但使用“no_result”进行实现... 相当愚蠢,但有时你只是看不到树木...

  2. 我创建了一个新的Trigger作为助手“HelperDomReady”,只有当DOM准备好并且变量“isEmptySearch”等于“(bool)true”时才触发

  3. 现在我可以在“sitesearch类别”摘要中看到没有导致google后端的搜索结果。由于我根本不设置参数,如果搜索至少有一个匹配,则网站搜索类别显示“未设置”以获得成功结果。因此,类别部分仅显示没有匹配的搜索。问题解决了:))

    缺点:searchterm也列在普通列表中。但我认为这可以忽略不计