※ この募集は締め切られました。
自社サーバーからssGTMにイベントデータを送信できるようにしたいです
【実現したいこと】
自社サーバーから ssGTM(サーバーサイド タグ マネージャー)に対して、Measurement Protocol を用いてイベントデータを送信できるようにする
【発生している問題】
自社サーバーから ssGTM へイベントデータを送信しようとすると、HTTP 400 Bad Request エラーが発生しており、データが正しく受信されません。Measurement Protocol の仕様に沿った送信を試みていますが、エラーが解消できず、原因の特定や修正方法について助言をいただきたい状況です。
【エラーメッセージ】
Error: Request failed with status code 400
at createError (…省略…)
at settle (…省略…)
【該当のソースコードをコピペしてください】
import axios from "axios";
const url = "https://server-side-tagging-.a.run.app/batch";
// GA4 Measurement Protocol に合わせたペイロード例
const data = {
client_id: "12345678.12345678",
events: [
{
name: "ViewContent",
params: {
// event_time ではなく、timestamp_micros を使用(秒→マイクロ秒に変換し文字列で指定)
timestamp_micros: "1739314393000000",
event_id: "1739314483663_173931457190938"
}
}
],
// ユーザーデータはルートレベルで設定(キーはすべてスネークケース)
user_data: {
em: "cf00c783fb8a56e825712efcfa079aa5370df8553aa141ab2f06277c64072eac",
ph: "479289e9ee24a508a55472d77908ee56acd12e655123eca12cf811eaa1442f93",
media: "meta",
click_id: "fbclid"
}
};
const headers = {
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
};
axios
.post(url, data, { headers })
.then((response) => {
console.log("成功:", response.data);
})
.catch((error) => {
console.error("エラー:", error.response ? error.response.data : error.message);
});
【補足】
使用環境: Node.js v22.9.0、axios を利用
ssGTM のコンテナ設定は最新のものを使用しており、アクティベーションパスは /batch に設定済みです。
送信形式としては現在 JSON 形式で試していますが、Measurement Protocol ヒットは URL エンコードされたクエリ文字列形式で送信する必要がある可能性も考えています。