从后端发送事件到 GTM 服务器容器
Send Event to GTM server container from a back-end
我们正在使用 GTM 容器服务器。
我们想从 Web 应用程序的后端将不同的事件直接发送到我们的 GTM 服务器容器。
我们的想法是能够激活将这些事件发送到不同来源(Mixpanel、SendinBlue 等)的标签
在 GTM server-side documentation 中,我们发现可以使用 Google Analytics 使用的测量协议。
为此,您需要创建或使用 MeasurementProtocol 客户端
因此我们创建了一个路径为 /mp/collect 的新客户端,并尝试将 MeasurementProtocole 用于 GA4,因为我们也将 GA4 用于 Analytics。
https://developers.google.com/analytics/devguides/collection/protocol/ga4
但是在example request中,它被要求提供一个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:
上使用了这个 repo
https://github.com/square/server-to-server-gtm-client
1 - 要安装它,您必须从存储库下载 template.tpl 文件。
2 - 然后在 sGTM 上,您转到左侧菜单的底部并单击“模板”
3 - 您必须单击“客户端模板”部分中的“新建”。
4 - 单击右上角的三点菜单并 select 导入后。
5 - 这是您导入之前下载的 template.tpl 文件的时刻。
6 - 现在您可以单击左侧菜单中的“客户端”项并创建一个新客户端
7 - 对于客户端配置 select 您之前创建的模板。
8 - 然后按照 readme of the repo on Github :-)
使用此解决方案,您将能够将事件从后端直接发送到 sGTM 容器(服务器)。
您应该只提供 measurementId。没有 apiSecret。
然后,如果您处于 gtm 预览模式,您应该使用 X-Gtm-Server-Preview HTTP header(在 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 错误
我们正在使用 GTM 容器服务器。
我们想从 Web 应用程序的后端将不同的事件直接发送到我们的 GTM 服务器容器。
我们的想法是能够激活将这些事件发送到不同来源(Mixpanel、SendinBlue 等)的标签
在 GTM server-side documentation 中,我们发现可以使用 Google Analytics 使用的测量协议。
为此,您需要创建或使用 MeasurementProtocol 客户端
因此我们创建了一个路径为 /mp/collect 的新客户端,并尝试将 MeasurementProtocole 用于 GA4,因为我们也将 GA4 用于 Analytics。 https://developers.google.com/analytics/devguides/collection/protocol/ga4
但是在example request中,它被要求提供一个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:
上使用了这个 repohttps://github.com/square/server-to-server-gtm-client
1 - 要安装它,您必须从存储库下载 template.tpl 文件。
2 - 然后在 sGTM 上,您转到左侧菜单的底部并单击“模板”
3 - 您必须单击“客户端模板”部分中的“新建”。
4 - 单击右上角的三点菜单并 select 导入后。
5 - 这是您导入之前下载的 template.tpl 文件的时刻。
6 - 现在您可以单击左侧菜单中的“客户端”项并创建一个新客户端
7 - 对于客户端配置 select 您之前创建的模板。
8 - 然后按照 readme of the repo on Github :-)
使用此解决方案,您将能够将事件从后端直接发送到 sGTM 容器(服务器)。
您应该只提供 measurementId。没有 apiSecret。 然后,如果您处于 gtm 预览模式,您应该使用 X-Gtm-Server-Preview HTTP header(在 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 错误