1
0

More than 1 year has passed since last update.

ファーストセッションのデータをDBに格納する

Posted at

アプリケーション内部で流入元をベースにした分析を行ったのでメモ書き。

現状

  • GAを使ってユーザーデータを収集している
  • 登録画面へ複数流入元があり、それぞれのURLパラメータにユニークな文字列を使用している(URLで流入元が可能)
  • 流入元に関するデータをDBに保持しておらず、登録画面以降のトラッキングができていない

課題

  • 流入元の評価や、アプリケーション内部でのフェーズ管理のために、内部のトラッキングを可能とする必要がある。
  • 複数流入経路を保有しているユーザーに対しては、ファーストコンタクト時の媒体を評価する必要がある。

対応策

  • URLパラメータをDBに登録する
  • 初回アクセス時のURLパラメータをDBに登録する
    • セッションが切れたら、次回セッションの初回コンタクトのURLを利用する

実装

コード例は以下の通り。
※特定URL以下にMiddlewareを噛ませています。(今後の要件次第ではチューニングが必要だが、現時点では不要と判断)

UtmMiddleware.php
    public function handle($request, Closure $next)
    {
        // セッション未保存の場合のみセッションに保存する
        // utm_sourceは必須項目とし、それの有無で判別する
        if ($request->has('utm_source') && !$request->session()->has('utm_source')) {
            $params = [
                'utm_source' => $request->utm_source,
                'utm_medium' => $request->utm_medium,
                'utm_campaign' => $request->utm_campaign,
                'utm_term' => $request->utm_term,
            ];
            session($params);
        }
        return $next($request);
    }
xxxController.php
    // セッションからパラメータ取得
    $tmp->utm_source = session('utm_source');
    $tmp->utm_medium = session('utm_medium');
    $tmp->utm_campaign = session('utm_campaign');
    $tmp->utm_term = session('utm_term');

    //後はいい感じにtmpをDBに入れる
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0