訪問者の最初のページビューからダッシュボードのインサイトまで、Zenovayを通じてデータがどのように流れるかを理解することは、効果的な開発とデバッグに役立ちます。
イベントトラッキングフロー
訪問者がトラッキングされたウェブサイトに訪れた時に起こること:
- スクリプトのロード: 軽量トラッカー(5KB未満)が初期化され、訪問者ID(365日間保存)とセッションID(30分タイムアウト)を生成します。
- ページビューの発火: 基本データ—URL、リファラー、ビューポートサイズ、ユーザーエージェント—が収集され、APIに送信されます。
- 位置情報: CloudflareがCF-Connecting-IPヘッダーから国と地域を提供します。クライアントサイドの位置情報は使用しません。
- 処理: イベントはバリデーションされ、デバイス検出で強化され、Supabaseに保存されます。
- リアルタイム更新: ダッシュボードのサブスクライバーがSupabaseのリアルタイムチャネルを通じて新しいデータを受信します。
リアルタイム対集計
リアルタイムの応答性とクエリパフォーマンスのバランスを取ります:
- リアルタイム: ライブ訪問者数、アクティブセッション、最近のイベントは生のテーブルから直接提供されます。
- 集計: 履歴グラフとレポートは速度のために事前計算された日次集計を照会します。
- Cronジョブ: 日次集計は00:00 UTCに実行され、前日のイベントを統合します。
セッションリプレイの録画
セッションリプレイはrrwebライブラリを使用してDOMの変更をキャプチャします:
- 録画: rrwebがDOMの変異、マウスの動き、スクロール、入力を監視します(機密データはマスク)。
- チャンキング: イベントはチャンク(最大10MB圧縮)にバッチされ、APIにアップロードされます。
- ストレージ: チャンクはSupabase StorageにセッションメタデータはPostgreSQLに保存されます。
- 再生: ダッシュボードはオンデマンドでチャンクを取得し、rrweb-playerを使ってセッションを再構成します。
ヒートマップの収集
ヒートマップは多くのセッションにわたってインタラクションデータを集計します:
- クリックトラッキング: 要素の座標とクリック数がビューポートに対して相対的に記録されます。
- スクロール深度: コンテンツのエンゲージメントを示すために最大スクロール位置が追跡されます。
- スクリーンショット: オーバーレイレンダリングのためにページスクリーンショット(最大2MB)がキャプチャされます。
- 集計: クリックとスクロールデータは統計的有意性のためにセッション間で集計されます。
ML駆動の訪問者スコアリング
すべての訪問者は複数の要因に基づいて価値スコア(0〜100)を受け取ります:
- 国の乗数: 地理的な購買力(例:スイス95、米国88、インド28)
- デバイスシグナル: OSとブラウザはコンバージョン率と相関(macOS 95、iOS 90、Android 45)
- 行動パターン: セッション時間、ページ深度、エンゲージメントメトリクス
- MLの改良: トレーニングされたモデルが過去のコンバージョンデータに基づいてスコアを調整
スケジュールタスク
バックグラウンドジョブがデータを新鮮に保ちシステムを健全に保ちます:
- 毎日00:00 UTC:アナリティクス集計、AIインサイト生成
- 6時間ごと:キャッシュクリーンアップ、ヘルスチェック
- 月曜日の午前8時:代理店向けの週次クライアントレポート
- 5分ごと:稼働時間監視チェック
- 毎時:サブスクリプション期限切れの警告
- 毎日午前2時:非アクティブなサポートチケットの自動クローズ