【问题标题】:How can I set Analytics variables with Google Tag Manager from the server?如何从服务器使用 Google 跟踪代码管理器设置分析变量?
【发布时间】:2018-11-09 18:28:19
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

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

然后设置 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 -->

【讨论】:

  • 是的,谢谢。我不得不对用作 Google Optimize 的变量进行轻微更改(不推荐使用分析实验)使用称为“exp”而不是“expId”和“expVar”的不同变量,但原则上它是相同的方法。跨度>
  • @Gnuffo1 啊,我误解了为什么 GTM 不能识别 exp 字段。我已经更新了使用 exp 字段的答案/截图。
  • 谢谢,这对我有用,是我找到的最简单的方法和最清晰的指南。
猜你喜欢
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 2022-07-08
  • 2022-06-15
相关资源
最近更新 更多