会員ログの活用法 第19回

申し込みページを開いたのに申し込まなかった会員

申し込みページを開いた会員のうち、4割は申し込まずに離れている。

よくある状況

講演会や資料請求の報告では、申し込み件数が並びます。件数が少ないと、案内が届いていない、関心が薄い、と考えがちです。

ただ、申し込みページまで来ている会員は、関心がある人です。そこで申し込まずに離れた人がどれだけいるかは、申し込み件数からは見えません。入力項目が多い、日程が合わない、あとで申し込むつもりで忘れた、など理由はさまざまです。

会員IDでアクセスログとフォームの送信記録をつなぐと、申し込みページを開いた会員と、実際に申し込んだ会員を、ページごとに並べられます。

申し込みページごとに、開いた会員と申し込まなかった会員の人数が分かるグラフ

どのページも、開いた会員の4割前後が申し込まずに離れている。ページによる差は小さい。

このグラフの数え方

  • 対象:2026年4〜9月に、ログインして申し込みページを1回以上開いた会員(ページごとに数える)
  • 「申し込まなかった」:そのページのフォームを、期間中に一度も送信していないこと
  • 割合の分母:そのページを開いた会員の人数
  • 言えないこと:申し込まなかった理由(日程、入力の手間、見ただけ)は分からない。締め切り前の案内やページの見直しの手がかりとして使う

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

これが分かると

  • 入力項目や日程の出し方など、申し込みページそのものを見直すきっかけになります。
  • 開いたのに申し込まなかった会員に、締め切り前の案内を送れます。
  • 申し込み件数が少ない理由が、案内の届き方なのか、ページなのかを切り分けられます。

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

試してみる

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

集計SQL件数と割合だけを出します
with viewed as (
  select distinct a.member_id, a.content_id
  from access_log a
  join content c on c.content_id = a.content_id
  where c.content_type = '申込'
    and a.member_id is not null
    and a.accessed_at >= '2026-04-01' and a.accessed_at < '2026-10-01'  -- 期間。実際には集計する期間に差し替える
)
select c.title as entry_page,
       count(*) as visited,
       sum(case when f.member_id is null then 1 else 0 end) as not_submitted
from viewed v
join content c on c.content_id = v.content_id
left join (
  select distinct member_id, content_id
  from form_submission
  where submitted_at >= '2026-04-01' and submitted_at < '2026-10-01'
) f on f.member_id = v.member_id and f.content_id = v.content_id
group by c.content_id, c.title
order by c.content_id;
AIプロンプト集計結果を貼るだけです
次の表は、会員サイトの申し込みページごとの集計です。
entry_page=申し込みページ、visited=そのページを開いた会員数、not_submitted=開いたのに申し込んでいない(フォームを送信していない)会員数です。
個人を特定できる列は含めていません。

1. ページごとに visited と not_submitted を並べた棒グラフを、画像で描いてください。各ページに「申し込まなかった割合」を添えてください。
2. 次の点を読み取って、3行程度で教えてください。
   ・申し込まなかった人はおおよそ何割か
   ・割合が目立って高いページはあるか
   ・申し込み件数の少なさを、案内の届き方の問題と決めつけてよいか

(ここに集計結果を貼る)
社内用SQL会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
-- 社内用:会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
select a.member_id, c.title as entry_page, max(a.accessed_at) as last_viewed_at
from access_log a
join content c on c.content_id = a.content_id
where c.content_type = '申込'
  and a.member_id is not null
  and a.accessed_at >= '2026-04-01' and a.accessed_at < '2026-10-01'  -- 期間。実際には集計する期間に差し替える
  and not exists (
    select 1
    from form_submission f
    where f.member_id = a.member_id
      and f.content_id = a.content_id
      and f.submitted_at >= '2026-04-01' and f.submitted_at < '2026-10-01'
  )
group by a.member_id, c.title
order by c.title, last_viewed_at desc;

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

使う表: content(コンテンツ)/access_log(アクセスログ)/form_submission(フォーム送信) (表の形は準備編)

試せなかったら

アクセスログとフォームの送信記録が、会員IDでつながっていないと、この問いには答えられません。
アクセス解析で分かるのは「申し込みページを見た人数」と「完了ページを見た人数」までで、その差が誰なのかは出せないからです。

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

次に読む

会員ログの活用法 一覧へ