会員ログの活用法 第27回

担当者に渡す「先週動いた会員」の一覧

先週サイトを利用した会員は287人。申し込みページを見た会員は89人、申し込んだ会員は23人。

よくある状況

営業やMRの担当者は、訪問の前に「この先生は最近何を見ているか」を知りたがります。会員サイトの担当者がそのたびに調べて伝えるのは、手間がかかります。

毎週決まった形で「先週動いた会員」の一覧を渡せれば、担当者は自分の担当先だけを見て、訪問の話題にできます。ただ、サイトを利用した、メールのリンクを押した、申し込んだ、という動きは別々の記録に残っていて、一つの一覧にまとめるのは大変です。

会員IDでこれらの記録をつなぐと、先週の動きを種類ごとに数え、会員ごとの一覧にできます。人数の集計は報告に、会員ごとの一覧は社内の担当者向けに使います。

動きの種類ごとに、先週動いた会員の人数が分かるグラフ

先週サイトを利用した会員は287人。製品ページを見たのは123人、メールのリンクを押したのは95人、申し込んだのは23人。

このグラフの数え方

  • 期間:先週の月曜〜日曜(サンプルでは9月21日〜27日)
  • 各項目:その動きを1回以上した会員の人数。1人が複数の項目に入る
  • 言えないこと:動いた会員が、今すぐ話を聞きたい会員とは限らない。担当者が訪問の話題を選ぶ材料として使う

架空のサンプルデータで集計した例です。

これが分かると

  • 担当者に、毎週同じ形の一覧を渡せます。
  • 申し込みページを見て申し込んでいない会員を、担当者のフォローの対象にできます。
  • 人数の集計は、毎週の動きの報告として残せます。

ここに挙げた使い方は一例です。サンプルの数字は架空のもので、実際の結果や施策の効果を約束するものではありません。

試してみる

ここから先は、システム担当者に渡してください。集計SQLで出た結果を、AIプロンプトと一緒にAIへ貼ると、上のようなグラフと読み取りが返ってきます。

集計SQL件数と割合だけを出します
select 1 as seq, 'サイトを利用した' as action, count(distinct member_id) as members
from access_log
where member_id is not null and accessed_at >= '2026-09-21' and accessed_at < '2026-09-28'  -- 先週(月〜日)。実際には日付を差し替える
union all
select 2, '製品ページを見た', count(distinct a.member_id)
from access_log a join content c on c.content_id = a.content_id
where c.content_type = '製品' and a.accessed_at >= '2026-09-21' and a.accessed_at < '2026-09-28'
union all
select 3, '申込ページを見た', count(distinct a.member_id)
from access_log a join content c on c.content_id = a.content_id
where c.content_type = '申込' and a.accessed_at >= '2026-09-21' and a.accessed_at < '2026-09-28' and a.member_id is not null
union all
select 4, 'メールのリンクを押した', count(distinct member_id)
from mail_event
where event_type = 'click' and event_at >= '2026-09-21' and event_at < '2026-09-28'
union all
select 5, '申し込んだ', count(distinct member_id)
from form_submission
where submitted_at >= '2026-09-21' and submitted_at < '2026-09-28'
order by seq;
AIプロンプト集計結果を貼るだけです
次の表は、会員サイトの先週(月曜〜日曜)の会員の動きを、種類ごとに数えた集計です。
seq=並び順、action=動きの種類、members=その動きをした会員数です。
個人を特定できる列は含めていません。

1. action ごとの members を棒グラフにして、画像で描いてください。
2. 次の点を読み取って、3行程度で教えてください。
   ・先週動いた会員の中で、どの動きが多いか
   ・申し込みページを見た会員と、申し込んだ会員の差はどれくらいか
   ・担当者に渡す一覧では、どの動きをした会員を優先すべきか

(ここに集計結果を貼る)
社内用SQL会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
-- 社内用:会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
select m.member_id, m.occupation, m.specialty, m.prefecture,
       count(distinct a.accessed_at::date) as visit_days,
       count(distinct case when c.content_type = '製品' then a.content_id end) as products_viewed,
       count(distinct case when c.content_type = '申込' then a.content_id end) as entry_pages_viewed,
       (select count(*) from mail_event e
         where e.member_id = m.member_id and e.event_type = 'click'
           and e.event_at >= '2026-09-21' and e.event_at < '2026-09-28') as mail_clicks,
       (select count(*) from form_submission f
         where f.member_id = m.member_id
           and f.submitted_at >= '2026-09-21' and f.submitted_at < '2026-09-28') as applications
from member m
join access_log a on a.member_id = m.member_id
left join content c on c.content_id = a.content_id
where a.accessed_at >= '2026-09-21' and a.accessed_at < '2026-09-28'  -- 先週(月〜日)。実際には日付を差し替える
group by m.member_id, m.occupation, m.specialty, m.prefecture
order by applications desc, entry_pages_viewed desc, products_viewed desc;

SQLとプロンプトは、準備編の汎用テーブルを前提にした例です。実際のテーブル名・列名に合わせて書き換えてください。動作や結果を保証するものではありません。

使う表: member(会員)/content(コンテンツ)/access_log(アクセスログ)/mail_event(メール送信と反応)/form_submission(フォーム送信) (表の形は準備編)

試せなかったら

アクセスログ、メールの記録、フォームの送信記録が、会員IDでつながっていないと、この一覧は作れません。
担当者が知りたいのは「どの先生が何をしたか」で、それぞれの仕組みの人数の合計では役に立たないからです。

writeWiredでは、会員IDの付いたアクセスログとメール・フォームの記録が最初から同じ場所に揃っています。会員サイトCMSとしてのwriteWired

次に読む

会員ログの活用法 一覧へ