使用Google Optimize和GTM进行多个服务器端实验



我想知道是否可以使用Google Optimize和Google Tag Manager设置多个服务器端实验。我们紧随其后https://stackoverflow.com/a/52157837/12936081它似乎可以很好地处理从数据层发送的值,但考虑到Analytics变量名(expId和expVar(,感觉我们在任何给定的时间都只能对一个实验这样做。

不要使用Google Analytics-Universal AnalyticsPageview发送单独的expIdexpVar,而是将exp设置为包含两者,并通过!分离多个实验。

将其与引用的SO问题和官方文档中的信息相结合,我们有.来分离实验ID和实验变体,-来分离多变量测试中的任何变体。

例如,如果您在第一节中提交变量索引为1(第一个非对照变量(的实验ID A(在现实生活中要长得多(,在第二节中提交变种0(对照变量(和变种2(第二个非对照变种(的实验IDB,则应将exp设置为A.1!B.0-2

设置数据层

如果您正在创建测试服务器端,则不需要在GTM中使用任何JavaScript。只需使用exp变量集设置dataLayer,然后创建一个引用GTM中dataLayer的变量。我发现,即使GTM和Google Analytics Pageview是异步运行的,我也必须尽早设置数据,以便GA能够获取数据。您可以在任何位置为此添加一个单独的脚本标记,或者将其添加到GTM片段本身(如果很容易修改的话(。在我的案例中,我只是通过使用HTMLRewriter的Cloudflare Worker将其注入到<head>的末尾,因为我的测试是在边缘实现的。

<script>var dataLayer=dataLayer||[];dataLayer.push({"exp":"A.1!B.0-2"})</script>

我是如何确定的

我通过临时添加客户端Google Optimize JavaScript,并启动两个并发实验,然后查看发送的网络请求,找到了这种格式。我在一个开发实例上简单地测试了一下,数据似乎进来了

最新更新