アプリケーション内部で流入元をベースにした分析を行ったのでメモ書き。
現状
- 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に入れる