如何从服务器使用 Google 跟踪代码管理器设置 Analytics 变量?
How can I set Analytics variables with Google Tag Manager from the server?
我正在使用 Google 优化创建 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
是一个未定义的变量,所以上面的方法不起作用。
由于 GTM 为每个标签调用普通代码段,您可以设置分析代码段理解的任何字段,即使它们尚未自动列在标签编辑器下拉列表中。
例如,作为页面视图字段:
然后设置 DataLayer 变量,使其可以从外部源接收,例如:
使用完成标签中的变量引导字段:
现在,您可以在将传递给代码的服务器端设置 DataLayer 变量。由于我选择了页面视图,因此最好在加载 GTM 之前预填充数据层,以便它们在初始标记触发之前就存在,例如:
<!-- 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 优化创建 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
是一个未定义的变量,所以上面的方法不起作用。
由于 GTM 为每个标签调用普通代码段,您可以设置分析代码段理解的任何字段,即使它们尚未自动列在标签编辑器下拉列表中。
例如,作为页面视图字段:
然后设置 DataLayer 变量,使其可以从外部源接收,例如:
使用完成标签中的变量引导字段:
现在,您可以在将传递给代码的服务器端设置 DataLayer 变量。由于我选择了页面视图,因此最好在加载 GTM 之前预填充数据层,以便它们在初始标记触发之前就存在,例如:
<!-- 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 -->