Google跟踪代码管理器为用户定义的查询URL变量传递了“未定义”

时间:2019-01-20 09:30:18

标签: google-analytics google-tag-manager

我的网站上有一些按钮可以打开以下格式的URL:

https://www.stackoverflow.com/?variable-1=value-1&variable-2=value-2&variable-3=value-3/

当前,我正在使用标记将此特定出站域的大多数默认点击变量传递给Google Analytics(分析)并设置目标。一切正常-我使用了本教程:https://www.youtube.com/watch?v=PXONXfZQfFo

我现在想做的是将变量3的值作为Google Analytics(分析)中的事件标签,而不是我现在正在做的按钮文本。

遵循以下答案:How to Use Google Tag Manager to Retrieve URL Parameters我创建了一个新的用户定义变量“ Click Referrer”。

GTM variable settings

但是,变量始终在控制台中输出为undefined。

Debug console

我尝试过:

  • 将参数更改为不带连字符的内容,例如“ value3”。
  • 将查询键括在''中。
  • 将“组件类型”更改为“完整URL”,以确保实际上已拾取了自定义变量。是的-仅当我包含查询键时才会出现此问题。如果未提供查询键(且组件类型=查询),则不会记录任何输出。
  • 尝试查询URL中其他参数的查询键,例如变量1和变量2。

1 个答案:

答案 0 :(得分:0)

您设置的变量将无济于事,因为它具有您的页面网址的variable-3参数的值,但没有点击URL 。您需要一个自定义JavaScript变量,以从{{CLick URL}}可以访问的参数中检索参数: 像这样的东西会为您工作:

function () {
  function parse_query_string(query) {
    var vars = query.split("&");
    var query_string = {};
    for (var i = 0; i < vars.length; i++) {
      var pair = vars[i].split("=");
      var key = decodeURIComponent(pair[0]);
      var value = decodeURIComponent(pair[1]);
      // If first entry with this name
      if (typeof query_string[key] === "undefined") {
        query_string[key] = decodeURIComponent(value);
        // If second entry with this name
      } else if (typeof query_string[key] === "string") {
        var arr = [query_string[key], decodeURIComponent(value)];
        query_string[key] = arr;
        // If third or later entry with this name
      } else {
        query_string[key].push(decodeURIComponent(value));
      }
    }
    return query_string;
  }

  return parse_query_string({{Click URL}})['variable-3']
}