JavaScriptの勉強がてら Google タグマネージャーを使い GA4 の計測実装を色々と試してみるシリーズです(不定期)。
UserAgent内の特定文字列を GA4 で計測する方法
ChatGPT、Gemini、Perplexityなど生成AIの利用も増加し、利用したユーザーが生成AIで返された結果内に引用されているWebサイトへ遷移するといった行動も発生しうる世の中になっています。
ChatGPTは返された結果内に引用されているWebサイトに utmキャンペーンパラメータが付与されているので、ChatGPTからWebサイトへ遷移すると GA4 では参照元としてデータ集計されます。しかし、その他の生成AIで utmキャンペーンパラメータが付与されていない場合は GA4 ではDirectとして計測さてしまいます。
また、LINEなどアプリ内ブラウザから遷移する際に、各アプリで参照元情報が取得できるようにリダイレクターを実行しないと参照元情報が取得できないので、こちらもDirectとしてデータ集計されてしまいます。
JavaScriptでUserAgent内の特定文字列を判定し抽出する
主にモバイルアプリ中心になりますが、生成AIやアプリ内ブラウザでWebサイトへ遷移してもUserAgentが判別可能であれば、JavaScriptで判定し、その結果を GA4 で計測すればどこからWebサイトへ来たのかわからないトラフィックもわかったりします。
用意したJavaScriptは以下です。
function() {
var keywords = ["CriOS", "GSA", "Line", "Instagram", "Twitter", "GeminiiOS", "ChatGPT-User", "Claude-User", "Perplexity-User"];
var userAgent = navigator.userAgent;
var lowerCaseUserAgent = userAgent.toLowerCase();
for (var i = 0; i < keywords.length; i++) {
var keyword = keywords[i];
if (lowerCaseUserAgent.indexOf(keyword.toLowerCase()) !== -1) {
return keyword;
}
}
return 'Other';
}
各UserAgentは下記のブログ記事を参考にしました!ありがとうございます!
【UA雑談】アプリ内ブラウザのUserAgentを調べた | バカに毛が生えたブログ(バカ毛)
https://www.baka-ke.com/2025/11/12/ai-app-ua/
JavaScriptの内容
- 抽出したいキーワードのリストを定義 (大文字・小文字を区別しない)
var keywords = ["CriOS", "GSA", "Line", "Instagram", "Twitter", "GeminiiOS", "ChatGPT-User", "Claude-User", "Perplexity-User"];
- ユーザーエージェント文字列を取得
var userAgent = navigator.userAgent;
- ユーザーエージェント文字列を小文字に変換 (大文字・小文字の区別をなくすため)
var lowerCaseUserAgent = userAgent.toLowerCase();
- キーワードをループ処理し、ユーザーエージェントに含まれているかチェック
for (var i = 0; i < keywords.length; i++) {
var keyword = keywords[i];
- キーワードも小文字に変換して比較
if (lowerCaseUserAgent.indexOf(keyword.toLowerCase()) !== -1) {
- 一致するものが見つかった場合、元のキーワード (大文字・小文字が混在した状態) を返す
return keyword;
}
}
- // 一致するキーワードが見つからなかった場合は 'Other' を返す
return 'Other';
}
GTMで GA4 の計測実装する
- 変数にカスタムJavaScriptで設定
- GA4 のイベントにパラメータの値として作成したカスタムJavaScript変数を設定
GA4 での計測実装内容を検証
Chromeのデベロッパーツールでパケットキャプチャにて検証
- LINE(アプリ)
- X(アプリ)
- Instagram(アプリ)
- Gemini(アプリ)
- Chrome(アプリ)
- Google(アプリ)
GA4 の探索レポートで集計データを確認
- 計測実装したパラメータをカスタムディメンションに設定しディメンション化
注意ごとやひとりごと
- 各UserAgentはサービス側で更新されるから更新されたらGTMでも修正が必要
- 各アプリからWebサイトへ遷移しないと計測されないから、Geminiで引用されている数というデータではない。
- アプリと普段ユーザーが使っているブラウザが異なるとCookieが異なるため別ユーザーとなる。









