HTTPリクエストでGoogle Analyticsイベントを発生させる方法

2 min read読了の目安(約2200字

はじめに

  • 開発中のWEBアプリで、Google Analytics(以下、GA)を利用してKPIを計測している
  • フロントエンドはgtagsを使ってイベントデータを送信している
  • バックエンドからもイベントデータを計測したくなった
  • せっかくならGAにデータを集めたい→Measurement Protocolというものを使えばできそう

ということで、自分用にまとめつつ記事にしておくことにした。

前提

  • バックエンドはnode.jsを利用

Measurement Protocolについて

公式記事はこちら:https://developers.google.com/analytics/devguides/collection/protocol/v1?hl=ja

  • Measurement Protocolを利用すれば、HTTPリクエストでイベントデータを送信できる
  • サーバサイドでもGAイベントを発生させたい場合にはMeasurement Protocolが便利
  • フロントサイド、サーバサイドの両方の行動をUser-IDで結びつけることも可能

Measurement Protocolの使い方

  • 例えばHTTPのPOSTメソッドを使う場合は次のように呼び出す

    const param_qs = new URLSearchParams({
              "v": 1,
              "tid": tid,
              "uid": uid,
              "t": 'event',
              "ec":ec,
              "ea":ea,
              "el":el,
              "cd1":cd1,
            });
    axios.post('http://www.google-analytics.com/collect', param_qs.toString())
                .then(function (response) {
                    console.log(response);
                })
                .catch(function (response) {
                    console.log(response);
                });
    
  • GETのエンドポイントもある

  • パラメータは公式ドキュメントにまとまっている:https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters?hl=ja

Hit Builder

さいごに

  • WEBアプリのモニタリングでGAを使っているなら、バックエンドのイベントモニタリングをMeasurement Protocolを使うと便利

補足情報

  • 複数のイベントをまとめて送信する/batchエンドポイントもある(ただし、一回のリクエストあたり20ヒットまで、等の制限あり)

参考情報