从后端将事件发送到 GTM 服务器容器

问题描述 投票:0回答:3

我们正在使用 GTM 容器服务器。

我们希望将不同的事件从 Web 应用程序的后端直接发送到我们的 GTM 服务器容器。

这个想法是能够激活标签,将这些事件发送到不同的源(Mixpanel、SendinBlue...)

GTM 服务器端文档中,我们发现可以使用 Google Analytics 使用的测量协议。

为此,您需要创建或使用MeasurementProtocol客户端

因此,我们创建了一个路径为 /mp/collect 的新客户端,并尝试使用 GA4 的MeasurementProtocole,因为我们也使用 GA4 进行分析。 https://developers.google.com/analytics/devguides/collection/protocol/ga4

但是在示例请求中,要求提供measurementId和apiSecret。 这些是由 GA 提供的。 如果我们想直接将事件发送到GTM服务器客户端,我们应该提供哪些信息?

这是我们要测试的脚本:

function myFunction() {
const measurementId = `G-XXXXXXX`;
const apiSecret = `FFFFFFFFFFFFDDDDDDDDD`;

UrlFetchApp.fetch(`https://xxxxx.xxxxxxxx.com/mp/collect?measurement_id=${measurementId}&api_secret=${apiSecret}`, {
  method: "POST",
  payload: JSON.stringify({
    "client_id": "client_id",
    "events": [{
      "name": "generate_lead",
      "params": {
        "currency": "USD",
        "value": 99.99
      }
    }]
  })
});
}

但是我们有这个错误

google-analytics google-tag-manager google-analytics-api google-analytics-firebase
3个回答
3
投票

为了能够将事件从我的后端发送到 sGTM(GTM 服务器容器),我在 Github 上使用了这个存储库:

https://github.com/square/server-to-server-gtm-client

1 - 要安装它,您必须从存储库下载 template.tpl 文件。

2 - 然后在 sGTM 上,您可以转到左侧菜单的底部,然后单击“模板”

3 - 您必须单击“客户端模板”部分中的“新建”。

4 - 之后您可以点击右上角的三点菜单并选择导入。

5 - 这是导入之前下载的 template.tpl 文件的时刻。

6 - 现在您可以单击左侧菜单上的“客户端”项并创建一个新客户端

7 - 对于客户端配置,选择您之前创建的模板。

8 - 然后按照 Github 上存储库的 readme 进行操作 :-)

通过此解决方案,您将能够将事件从后端直接发送到 sGTM 容器(服务器)。


0
投票

您应该只提供measurementId。没有 apiSecret。 然后,如果您处于 gtm 预览模式,则应采用 X-Gtm-Server-Preview HTTP 标头(在 gtm 预览模式内,在右上角找到 3 个点)。您应该将其添加到请求中。 然后你创建 mp 客户端。 我的Python示例:

# for GA4
import requests
import json

data = { "client_id": '111222333',
        "events": [{"name":"page_view",
                    "params":{
                            "external_id": '123123123',
                            "action_source": "app"}
                   }]
          }
data = json.dumps(data).encode("utf-8")
url = "https://yourserverdomain.com/mp?measurement_id=G-XXXXXXX"
headers = {
         "x-gtm-server-preview" : "ASDADASDASDASFASFASFASFASF",
          "Content-Type": "application/json",
          "Origin": "https://google.com"
          }


resp = requests.post(url, headers=headers, data=data)

print(resp.status_code)\    
# for Facebook conversion API
url = "https://yourserverdomain.com/mp"
data = {"client_id": '123123',
        "events":[{ "name":"PageView",
                    "params":{"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36",
                             "ip_override": "89.1.1.1",

                              "page_location":"https://google.com/",
                              "action_source": "app",
                              "external_id": "12345",
                              "user_data": { "email_address": 'asdasd',
                                             "phone_number": "123",
                                            "external_id": "12345",
                                            "adress": {"country": "uk"}
                                           }
                            }
                          }]
        }
data = json.dumps(data).encode("utf-8")

headers = {
         "x-gtm-server-preview" : "ASDASFDFAFASDFASDFASDFASDF=",
          "Content-Type": "application/json",
          "Origin": "https://google.com"
          }


resp = requests.post(url, headers=headers, data=data)

print(resp.status_code)

如果仍然不起作用,请尝试不使用“collect”的路径,仅使用“/mp”。 根据我的经验,如果您的事件格式无效(例如丢失了必要的参数),您将收到 400 错误。


0
投票

作为一个选项,您可以使用数据客户端来实现此目的。 https://stape.io/solutions/data-tag-client

使用起来比square s2s客户端更简单。

© www.soinside.com 2019 - 2024. All rights reserved.