アナリティクストラッキング: プライバシー重視のイベント収集

この記事では、プライバシーを尊重し、ボットトラフィックを回避しながら、ユーザーの行動をどのように追跡するかを説明します。

問題: ユーザー行動の理解

以下の情報を知る必要があります:

  • ユーザーがどのページを訪問したか

  • どの商品を閲覧したか

  • トラフィックの流入元(Google広告、オーガニック検索、ソーシャルメディア)

  • どのキャンペーンがコンバージョンに貢献したか

しかし、以下は避けなければなりません:

  • ボットやクローラーの追跡

  • 個人を特定できる情報(PII)の保存

  • プライバシー規制への違反

解決策: クライアントサイド + サーバーサイドトラッキング

クライアントサイド: JavaScriptトラッキング

ビジターID: クッキーに保存されるランダムID(365日間)

セッションID: sessionStorageに保存されるランダムID(ブラウザ終了まで)

キャンペーンパラメータ: URLから抽出され、sessionStorageに保存

追跡されるパラメータ:

  • gclid - GoogleクリックID(検索広告)

  • gbraid - Google広告クリックID(ショッピング広告)

  • wbraid - Google広告クリックID(iOS)

  • fbclid - FacebookクリックID

  • srsltid - Googleオーガニック検索結果ID

  • utm_source, utm_medium, utm_campaign, utm_term, utm_content

ストレージ: WhatsApp/電話クリックのアトリビューションのため、パラメータはクッキーに保存(30分間)

サーバーサイド: データの拡充

サーバーは以下の情報でイベントを拡充します:

GeoIPデータ: IPアドレスから取得した国、地域、都市

ユーザーエージェントの解析: ブラウザ、OS、デバイスタイプ

タイムスタンプ: サーバー時間(UTC)

ボット検出: 既知のボットユーザーエージェントをフィルタリング

イベントタイプ

ページビュー: ユーザーがページを訪問

商品ビュー: ユーザーが商品ページを閲覧

カート追加: ユーザーが商品をカートに追加

チェックアウト: ユーザーがチェックアウトを開始

購入: ユーザーが購入を完了

WhatsAppクリック: ユーザーがWhatsAppボタンをクリック

電話クリック: ユーザーが電話番号をクリック

データフロー

sequenceDiagram
    participant User
    participant JS as JavaScript
    participant API as /api/analytics
    participant Firehose as Kinesis Firehose
    participant S3
    
    User->>JS: ページ訪問
    JS->>JS: URLパラメータを抽出
(gclid, utm_* など) JS->>JS: sessionStorageに保存 JS->>API: POSTイベント + パラメータ API->>API: GeoIPで拡充 API->>API: ユーザーエージェントを解析 API->>API: ボットをフィルタリング API->>Firehose: 拡充されたイベントを送信 Firehose->>S3: アナリティクスバケットに保存

ボット検出

複数のシグナルを使用してボットトラフィックをフィルタリングします:

ユーザーエージェントのパターン: 既知のボット文字列(Googlebot、Bingbotなど)

行動パターン: 速すぎる、リクエストが多すぎる

JavaScriptの欠如: ボットはしばしばJSを実行しない

除外クッキー: tv_exclude=true はすべてのトラッキングを停止

プライバシー保護

PIIなし: 名前、メールアドレス、電話番号は決して保存しない

データ保持期間: イベントは30日後に削除

条件付きピクセル読み込み

関連する場合にのみトラッキングピクセルを読み込みます:

Google広告ピクセル: gclid、gbraid、またはwbraid, srsltidが存在する場合のみ

LinkedInピクセル: li_fat_idが存在する場合のみ

利点: ページ読み込みの高速化、トラッキングのオーバーヘッド軽減

トラフィックソース検出

URLパラメータからトラフィックソースを検出します:

Google広告: gclid, gbraid, wbraid → utm_source=google_ads

Googleオーガニック検索: srsltid → utm_source=google_search

コンバージョントラッキング

ファネルを通じてコンバージョンを追跡します:

商品ビュー → カート追加 → チェックアウト → 購入

各ステップには以下が含まれます:

  • ビジターID(アトリビューション用)

  • セッションID(セッション分析用)

  • キャンペーンパラメータ(ROI計算用)

  • 商品SKU(商品分析用)

リードタッチトラッキング

ユーザーが(WhatsApp、電話、メールで)問い合わせた際に、以下をキャプチャします:

連絡方法: WhatsApp、電話、メール

キャンペーンパラメータ: クッキーから(30分のウィンドウ)

商品コンテキスト: どの商品ページにいたか

利点: オフラインのコンバージョンをオンラインキャンペーンに帰属

ストレージ

イベントはKinesis Firehose経由でS3に保存されます:

フォーマット: JSON lines(1行に1イベント)

パーティショニング: 日付別(年/月/日/時)

圧縮: Gzip

保持期間: 30日

クエリ

イベントはAWS Athena経由でクエリされます:

スキーマ: Glue Data Catalogで定義

クエリ: S3データに対するSQL

ユースケース: キャンペーンROI、商品人気度、トラフィックソース

参考文献

技術的概念

AWSサービス

関連記事

まとめ

当社のアナリティクスシステムは、プライバシーを尊重しながらユーザー行動を追跡します:

クライアントサイド:

  • ✅ URLからキャンペーンパラメータを抽出

  • ✅ sessionStorageに保存(セッションスコープ)

  • ✅ クッキーに保存(アトリビューションのため30分間)

  • ✅ イベントをAPIに送信

サーバーサイド:

  • ✅ GeoIPとユーザーエージェントで拡充

  • ✅ ボットトラフィックをフィルタリング

  • ✅ Kinesis Firehoseに送信

  • ✅ S3に保存(日付別にパーティショニング)

プライバシー:

  • ✅ PIIを保存しない

  • ✅ 30日間の保持期間

条件付き読み込み:

  • ✅ gclidが存在する場合のみGoogle広告ピクセルを読み込み

  • ✅ li_fat_idが存在する場合のみLinkedInピクセルを読み込み

このアプローチは、洞察、プライバシー、パフォーマンスのバランスを取ります。


← ドキュメントインデックスに戻る