3

我正在使用 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是一个未定义的变量,所以上面的方法不起作用。

4

1 回答 1

9

由于 GTM 为每个标签调用普通代码段,您可以设置分析代码段理解的任何字段,即使它们尚未自动列在标签编辑器下拉列表中。

例如,作为页面视图字段: 要设置的字段

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

使用已完成标记中的变量导致字段: 使用 DataLayer 变量的字段

现在,您可以在服务器端设置将传递给标签的 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 -->
于 2018-11-11T22:13:41.873 回答