会員ログの活用法 第18回
初めて利用した日に申し込んだ会員は、申し込んだ新しい会員の2割。多くは1週間以上たってから申し込んでいる。
新しい会員の報告では、登録の人数と、その月の申し込み件数が並びます。登録した月に申し込みが少ないと、新しい会員は申し込みにつながらないように見えます。
ただ、会員が申し込むまでには時間がかかることがあります。初めて利用した日に申し込む会員もいれば、何度か訪れて、何週間もたってから申し込む会員もいます。登録した月だけで判断すると、あとから申し込む会員を見落とします。
会員IDでアクセスログとフォームの送信記録をつなぐと、新しく登録した会員ごとに、初めて利用した日から最初に申し込んだ日までの日数を数えられます。
初めての利用から申し込みまで,会員(人) 当日,28 1〜7日,19 8〜30日,45 31〜60日,27 61日以上,16 まだ申し込んでいない,141
このグラフの数え方
架空のサンプルデータで集計した例です。
ここに挙げた使い方は一例です。サンプルの数字は架空のもので、実際の結果や施策の効果を約束するものではありません。
ここから先は、システム担当者に渡してください。集計SQLで出た結果を、AIプロンプトと一緒にAIへ貼ると、上のようなグラフと読み取りが返ってきます。
with fv as (
select member_id, min(accessed_at) as first_visit
from access_log
where member_id is not null
and accessed_at < '2026-10-01'
group by member_id
),
fs as (
select member_id, min(submitted_at) as first_submit
from form_submission
where submitted_at < '2026-10-01'
group by member_id
)
select case
when fs.member_id is null then 'まだ申し込んでいない'
when fs.first_submit::date - fv.first_visit::date = 0 then '当日'
when fs.first_submit::date - fv.first_visit::date <= 7 then '1〜7日'
when fs.first_submit::date - fv.first_visit::date <= 30 then '8〜30日'
when fs.first_submit::date - fv.first_visit::date <= 60 then '31〜60日'
else '61日以上'
end as days_to_apply,
count(*) as members
from member m
join fv on fv.member_id = m.member_id
left join fs on fs.member_id = m.member_id
where m.registered_at >= '2026-04-01' and m.registered_at < '2026-10-01' -- 期間。実際には集計する期間に差し替える
and m.withdrawn_at is null
group by 1
order by min(coalesce(fs.first_submit::date - fv.first_visit::date, 9999));次の表は、会員サイトに期間中に登録した会員を、初めて利用した日から最初に申し込んだ日までの日数で分けた集計です。
days_to_apply=初めて利用してから最初に申し込むまでの日数(「まだ申し込んでいない」を含む)、members=会員数(退会者を除く)です。
個人を特定できる列は含めていません。
1. days_to_apply ごとの members を棒グラフにして、画像で描いてください。申し込んだ会員だけの中で、各区分の割合を添えてください。
2. 次の点を読み取って、3行程度で教えてください。
・初めて利用した日に申し込む会員は、申し込んだ会員の何割か
・申し込むまでに時間がかかる会員は、どれくらいいるか
・新しい会員への案内は、登録してからどれくらいの期間続けるべきか
(ここに集計結果を貼る)-- 社内用:会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
select m.member_id, m.registered_at, min(a.accessed_at) as first_visit
from member m
join access_log a on a.member_id = m.member_id
and a.accessed_at < '2026-10-01'
where m.registered_at >= '2026-04-01' and m.registered_at < '2026-10-01' -- 期間。実際には集計する期間に差し替える
and m.withdrawn_at is null
and not exists (
select 1 from form_submission f
where f.member_id = m.member_id and f.submitted_at < '2026-10-01'
)
group by m.member_id, m.registered_at
order by first_visit;SQLとプロンプトは、準備編の汎用テーブルを前提にした例です。実際のテーブル名・列名に合わせて書き換えてください。動作や結果を保証するものではありません。
使う表: member(会員)/access_log(アクセスログ)/form_submission(フォーム送信) (表の形は準備編)
アクセスログとフォームの送信記録が、会員IDでつながっていないと、この問いには答えられません。
申し込みの件数は分かっても、「その人が初めて利用したのはいつか」が分からず、申し込むまでの日数を数えられないからです。
writeWiredでは、会員IDの付いたアクセスログとメール・フォームの記録が最初から同じ場所に揃っています。会員サイトCMSとしてのwriteWired