【问题标题】:dataLayer with multiple rows is Possible?多行的dataLayer是可能的吗?
【发布时间】:2020-09-20 19:04:13
【问题描述】:

您好,我需要从后台进程发送多个订单。但只发送最后一个。

我的代码是这样的

最好的问候和 Thx 提前

<head>
...
<script type="text/javascript">
    dataLayer = [];

dataLayer.push({"orderID":"6488jmk","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-382","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""});
dataLayer.push({"orderID":"7209all","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-385","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""});
dataLayer.push({"orderID":"6723drw","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-379","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""});
dataLayer.push({"orderID":"6488jmk","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-382","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""});
dataLayer.push({"orderID":"6723drw","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-379","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""});
</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-XXXXX99');</script>
</head>

【问题讨论】:

  • 您好,您能分享一下如何使用 OrderID 吗?如果你想发送交易数据,也许你可以添加一个“事件”参数。
  • 目前一切都在谷歌标签管理器中配置,每次交易完成时,它都会使用 dataLayer.push 正确捕获它。但是这次我们希望后台能够发送各种订阅续订请求,这些请求直接来自支付网关到我们自己的 php 脚本,因此不需要 javascript 支持。这就是为什么我们决定尝试手动运行 php 来报告所有原始更新。简陋但要测试,我们遇到了这个事件。那只有最后一个规则。原谅我可怜的英语
  • 如果我理解正确,您希望从后端发送这些交易命中,例如“PHP”。在这种情况下,您可以跳过 GTM 和 Datalayer。您可以直接使用“Google Analytics Measurement Protocol”developers.google.com/analytics/devguides/collection/protocol/… 发送命中,当您从网关收到回调时,直接使用 php 发送请求。
  • 如果你想像以前一样使用 JavaScript。我猜您的交易命中是从带有订单信息的 PageView 发送的。这样它只会发送数组中的最后一个元素。根据我的经验,一个 GA 命中只包含一个交易数据。您可以添加类似“事件:customize_purchase”的参数。添加事件名称为“customize_purchase”的触发器类型“自定义事件”。它会根据你的数组长度发送多个交易命中(或者你可以说订单的数量)。

标签: google-tag-manager google-datalayer


【解决方案1】:

从不会导致错误的意义上说,它是“可能的”。但是,使用相同的键,每个新行都将覆盖前一行,并且您只能在第一个“事件”键之前推送的数据(在您的示例中,本机 gtm.js/“容器加载”事件) .这几乎肯定不是你想要的。

您需要将嵌套数组推送到 dataLayer:

items = [
{"orderID":"6488jmk","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-382","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""},
{"orderID":"7209all","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-385","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""},
{"orderID":"6723drw","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-379","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""},
{"orderID":"6488jmk","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-382","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""},
{"orderID":"6723drw","precio":"2.00","plataforma":"PAYMENTPLATFORM","moneda":"EUR","campana":"CLIENT","usuario":"TESTING-379","tipo_pago":"Pago TESTING","proveedor":"CLIENT","tracking":"","affiliateid":""}
];
dataLayer.push(items);

在 GTM 中,您需要在自定义 HTML 标记或通过自定义模板构建的内容中迭代数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-26
    • 2013-03-11
    • 2016-04-14
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    相关资源
    最近更新 更多