如何通过服务器上的Google跟踪代码管理器设置Analytics(分析)变量?

时间:2018-11-09 18:28:20

标签: google-analytics google-tag-manager google-optimize

我正在使用Google Optimize创建A / B测试。如本指南所述,我在服务器端模式下使用它:https://developers.google.com/optimize/devguides/experiments

该指南通过在服务器上呈现设置实验ID和变体ID的JS代码,展示了一种简单的方法来设置哪个实验运行哪个变体:

  // 2. Create a tracker.
  ga('create', 'UA-XXXXX-Y', 'auto');

<?php
<<<HTML
  // 3. Set the experiment ID and variation ID.
  ga('set', 'exp', '$experimentId.$variationId');
HTML;
?>
  // 4. Send a pageview hit to Google Analytics.
  ga('send', 'pageview');

但是,我使用的是Google跟踪代码管理器,到目前为止,还没有找到任何指南来显示如何使用服务器设置变量。 ga是未定义的变量,因此以上操作无效。

1 个答案:

答案 0 :(得分:3)

由于GTM会为每个标签调用常规代码段,因此您可以设置分析代码段可以理解的任何字段,即使这些代码段尚未在标签编辑器下拉列表中自动列出。

例如,作为页面查看字段: Fields to set

然后设置DataLayer变量,以便可以从外部源接收它,例如: DataLayer Variable

使用完成的Tag中的变量来引导字段: Field using the DataLayer Variable

现在,您可以在服务器端设置DataLayer变量,该变量将传递给标签。由于我选择了页面视图,因此最好在加载GTM之前预先填充dataLayer,以便它们在初始代码触发之前就存在,例如:

<!-- Google Tag Manager -->
<?php or other backend language wrapping...
 <script>window.dataLayer = [{exp:"$experimentId.$experimentVariant"}] 
 </script>
?>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-0');</script>
<!-- End Google Tag Manager -->