我们正在使用 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
}
}]
})
});
}
为了能够将事件从我的后端发送到 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 容器(服务器)。
您应该只提供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 错误。
作为一个选项,您可以使用数据客户端来实现此目的。 https://stape.io/solutions/data-tag-client
使用起来比square s2s客户端更简单。