会員ログの活用法 第15回
18時に送った配信の開封率は20%で、朝7時に送った配信(43%)の半分以下だった。
メール配信の報告では、配信ごとの開封率が並びます。開封率が低い回があると、件名や内容がよくなかったのではと考えがちです。
ただ、開封率は、配信した時刻でも変わります。医療従事者は、朝の始業前や昼休み、夜に帰宅してからメールを見ることが多いと言われます。診療中の時間帯に届いたメールは、ほかのメールに埋もれてしまうかもしれません。
会員ごとのメールの送信と開封の記録を、配信した時刻ごとにまとめると、時間帯ごとの開封率の傾向が見えます。件名や内容、配信した日も配信ごとに違うので、時刻だけの効果とは言い切れませんが、次に試す配信時刻の候補を決める手がかりになります。
配信した時刻,送った会員(延べ人数),開封した会員(延べ人数) 7時,2239,971 12時,2329,797 18時,2421,495 21時,2508,1008
このグラフの数え方
架空のサンプルデータで集計した例です。
ここに挙げた使い方は一例です。サンプルの数字は架空のもので、実際の結果や施策の効果を約束するものではありません。
ここから先は、システム担当者に渡してください。集計SQLで出た結果を、AIプロンプトと一緒にAIへ貼ると、上のようなグラフと読み取りが返ってきます。
with s as (
select campaign_id, min(event_at) as sent_at, count(distinct member_id) as sent
from mail_event
where event_type = 'sent'
and event_at >= '2026-04-01' and event_at < '2026-10-01' -- 期間。実際には集計する期間に差し替える
group by campaign_id
),
o as (
select campaign_id, count(distinct member_id) as opened
from mail_event
where event_type = 'open'
group by campaign_id
)
select extract(hour from s.sent_at)::int as send_hour,
sum(s.sent) as sent,
sum(coalesce(o.opened, 0)) as opened -- 開封が0件の配信も残す
from s
left join o on o.campaign_id = s.campaign_id
group by 1
order by 1;次の表は、会員向けメールを、配信した時刻ごとにまとめた集計です(各時刻に3回ずつ配信しています)。
send_hour=配信した時刻、sent=送った会員数の合計(配信ごとに数えた延べ人数)、opened=開封した会員数の合計(同じく延べ人数)です。
個人を特定できる列は含めていません。
1. 配信した時刻ごとに sent と opened を並べた棒グラフを、画像で描いてください。各時刻に開封率を添えてください。
2. 次の点を読み取って、3行程度で教えてください。
・開封率がもっとも高い時刻と、もっとも低い時刻はいつか
・時刻による差はどれくらいか
・配信の内容の違いも混ざっていることを踏まえて、どう判断すべきか
(ここに集計結果を貼る)SQLとプロンプトは、準備編の汎用テーブルを前提にした例です。実際のテーブル名・列名に合わせて書き換えてください。動作や結果を保証するものではありません。
使う表: mail_event(メール送信と反応) (表の形は準備編)
メール配信のツールで、開封が会員ごと・時刻つきで記録されていないと、この問いには答えられません。
会員IDで送信と開封がつながっていれば、会員ごとに開封した時刻も分かり、会員に合わせた配信時刻を考える材料になります。
writeWiredでは、会員IDの付いたアクセスログとメール・フォームの記録が最初から同じ場所に揃っています。会員サイトCMSとしてのwriteWired