会員ログの活用法 第29回

似た内容のメールが、同じ会員に重なって届いていないか

2日違いで送った2つの配信は、新製品案内の送り先の7割が、講演会案内の送り先と重なっていた。

よくある状況

メール配信は、担当者や部署ごとに送り先を決めて送ることがよくあります。講演会の案内は講演会の担当者が、新製品の案内は製品の担当者が、それぞれの条件で送り先を選びます。

一つひとつの配信では送り先が正しく選ばれていても、同じ週に並べてみると、同じ会員に似た内容のメールが続けて届いていることがあります。受け取る側から見ると「また同じようなメールが来た」になり、開封されにくくなったり、配信停止につながったりすることもあります。

配信ごとの送り先を会員IDで突き合わせると、2つの配信の送り先がどれだけ重なっているかを数えられます。重なりを図にすると、どれだけの会員に2通とも届いているかが一目で分かります。

2つの配信の送り先が、どれだけ重なっているかが分かる図

新製品案内を送った283人のうち、197人(70%)は、2日前に講演会案内も受け取っている。2つの配信で、500人に合わせて697通が届いた。

このグラフの数え方

  • 対象:2026年10月6日の講演会案内(C13)と、10月8日の新製品案内(C14)。サンプルでは、この回だけ10月の配信を使う
  • 送り先:その配信を送った会員(送信の記録がある会員)。開封したかどうかは問わない
  • 割合の分母:新製品案内を送った会員の人数
  • 言えないこと:重なっていること自体が悪いとは限らない。内容が似ているか、間隔が近すぎないかは、配信の中身を見て判断する

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

これが分かると

  • 配信を予約する前に、同じ週の配信と送り先を突き合わせられます。
  • 重なる会員には、2つの案内を1通にまとめる、片方を送らない、といった送り分けを考えられます。
  • 部署ごとに配信していても、会員から見た届き方で報告できます。

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

試してみる

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

集計SQL件数と割合だけを出します
with a as (
  select distinct member_id
  from mail_event
  where campaign_id = 'C13'  -- 比べる配信A。実際には配信IDを差し替える
    and event_type = 'sent'
),
b as (
  select distinct member_id
  from mail_event
  where campaign_id = 'C14'  -- 比べる配信B
    and event_type = 'sent'
)
select (select count(*) from a) as sent_a,
       (select count(*) from b) as sent_b,
       (select count(*) from a join b on b.member_id = a.member_id) as sent_both;
AIプロンプト集計結果を貼るだけです
次の表は、会員向けメールの2つの配信について、送り先の人数と、両方に送った人数を数えた集計です。
sent_a=配信A(10月6日の講演会案内)を送った会員数、sent_b=配信B(10月8日の新製品案内)を送った会員数、sent_both=両方を送った会員数です。
個人を特定できる列は含めていません。

1. 2つの配信の送り先の重なりを、ベン図にして画像で描いてください。それぞれの「片方だけ」の人数と、「両方」の人数を書き入れてください。
2. 次の点を読み取って、3行程度で教えてください。
   ・配信Bの送り先のうち、配信Aとも重なっている会員は何割か
   ・2つの配信で、何人に合わせて何通届いたか
   ・重なっている会員への送り方を、どう見直せるか

(ここに集計結果を貼る)
社内用SQL会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
-- 社内用:会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
select m.member_id, m.occupation, m.specialty
from member m
where exists (
    select 1 from mail_event e
    where e.member_id = m.member_id and e.campaign_id = 'C13' and e.event_type = 'sent'
  )
  and exists (
    select 1 from mail_event e
    where e.member_id = m.member_id and e.campaign_id = 'C14' and e.event_type = 'sent'
  )
order by m.specialty, m.member_id;

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

使う表: mail_event(メール送信と反応) (表の形は準備編)

試せなかったら

配信の送り先が会員IDで記録されていないと、この問いには答えられません。
配信ツールで分かるのは配信ごとの送信数までで、「同じ会員に、どの配信が重なって届いたか」は、送り先を同じIDで突き合わせないと出せないからです。

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

次に読む

会員ログの活用法 一覧へ