解決済み
ただ話を聞いてほしい
メンバー 20代前半 男性

実装前に3点だけ直した方が安全です。 1. イベントに入れる attribution_id の基準

visibility14 chat2 personゾノ edit2026.06.07

実装前に3点だけ直した方が安全です。s

1. イベントに入れる attribution_id の基準を決める

ここだけ少し曖昧です。

first_touch と volunteer_touch の2種類を保存する場合、たとえば member_applied にどちらの attribution_id を入れるのか決めておかないと、集計時にぶれます。

私ならこうします。

member_events.attribution_id には原則 first_touch の attribution_id を入れる

そして、volunteer_touch は wp_kokotomo_attributions 側で別途保存しておく。

つまり標準集計は、

first_touch基準

で統一。

必要なときだけ、

volunteer_touch基準

でも別集計できるようにする。

これが一番分かりやすいです。

2. volunteer_page_view だけは volunteer_touch に紐づけてよい

ただし、volunteer_page_view は例外です。

これは「応募ページに到達した」というイベントなので、

volunteer_page_view → volunteer_touch の attribution_id

で保存してよいです。

その後の、

registered
email_verified
member_applied
member_accepted
first_activity
one_month_active

は、基本的に first_touch の attribution_id で保存する。

これで混乱しにくくなります。

3. uniqueキーは少し注意が必要

member_events.user_id を nullable にする方針は良いです。

ただ、MySQLでは NULL を含む unique key は期待通りに重複防止できない場合があります。

なので、重複防止はこうするのが安全です。

user_id があるイベント
user_id + event_name

で重複防止。

対象:

registered
email_verified
member_applied
member_accepted
first_activity
one_month_active
user_id がない可能性があるイベント
attribution_id + event_name

で重複防止。

対象:

volunteer_page_view

DBのuniqueキーだけに頼らず、保存関数側でも、

既に同じイベントがあれば保存しない

というチェックを入れた方が安全です。

Codexに返すならこの一文だけ追加でOKです
この方針で実装に進めてください。
ただし、member_events に保存する attribution_id の基準は原則 first_touch としてください。
volunteer_page_view のみ volunteer_touch の attribution_id に紐づけて構いません。
registered / email_verified / member_applied / member_accepted / first_activity / one_month_active は first_touch 基準で保存してください。
また、user_id が nullable のため、イベント重複防止は DB unique key だけに頼らず、保存関数側でも既存イベント確認を行ってください。
最終判断

このプランはかなり実用的です。

特に良いのは、

first_touch と volunteer_touch を分けている
DB側の訪問数を「初回訪問者数」と整理している
volunteer_page_view を未登録でも保存できるようにしている
first_activity を「相談者への実返信」に絞っている
費用管理を初期実装から外している

このあたりです。

上の3点だけ補足すれば、かなりきれいな仕様になると思います。
ココトモメンバーたちと交流しよう♪

ココトモメンバーたちと交流するための『メンバーのお部屋』掲示板ができました。気になるメンバーと気軽にお話することができます。ぜひ色んなメンバーのお部屋に遊びに行ってみてください♪

メンバーのお部屋はこちら

コメント一覧

  • refresh2日前
    visibility_off

    ※このコメントは閲覧できません

  • refresh2日前
    メンバー
    ゾノ 20代前半 男性
    実装前に3点だけ直した方が安全です。

    1. イベントに入れる attribution_id の基準を決める

    ここだけ少し曖昧です。

    first_touch と volunteer_touch の2種類を保存する場合、たとえば member_applied にどちらの attribution_id を入れるのか決めておかないと、集計時にぶれます。

    私ならこうします。

    member_events.attribution_id には原則 first_touch の attribution_id を入れる

    そして、volunteer_touch は wp_kokotomo_attributions 側で別途保存しておく。

    つまり標準集計は、

    first_touch基準

    で統一。

    必要なときだけ、

    volunteer_touch基準

    でも別集計できるようにする。

    これが一番分かりやすいです。

    2. volunteer_page_view だけは volunteer_touch に紐づけてよい

    ただし、volunteer_page_view は例外です。

    これは「応募ページに到達した」というイベントなので、

    volunteer_page_view → volunteer_touch の attribution_id

    で保存してよいです。

    その後の、

    registered
    email_verified
    member_applied
    member_accepted
    first_activity
    one_month_active

    は、基本的に first_touch の attribution_id で保存する。

    これで混乱しにくくなります。

    3. uniqueキーは少し注意が必要

    member_events.user_id を nullable にする方針は良いです。

    ただ、MySQLでは NULL を含む unique key は期待通りに重複防止できない場合があります。

    なので、重複防止はこうするのが安全です。

    user_id があるイベント
    user_id + event_name

    で重複防止。

    対象:

    registered
    email_verified
    member_applied
    member_accepted
    first_activity
    one_month_active
    user_id がない可能性があるイベント
    attribution_id + event_name

    で重複防止。

    対象:

    volunteer_page_view

    DBのuniqueキーだけに頼らず、保存関数側でも、

    既に同じイベントがあれば保存しない

    というチェックを入れた方が安全です。

    Codexに返すならこの一文だけ追加でOKです
    この方針で実装に進めてください。
    ただし、member_events に保存する attribution_id の基準は原則 first_touch としてください。
    volunteer_page_view のみ volunteer_touch の attribution_id に紐づけて構いません。
    registered / email_verified / member_applied / member_accepted / first_activity / one_month_active は first_touch 基準で保存してください。
    また、user_id が nullable のため、イベント重複防止は DB unique key だけに頼らず、保存関数側でも既存イベント確認を行ってください。
    最終判断

    このプランはかなり実用的です。

    特に良いのは、

    first_touch と volunteer_touch を分けている
    DB側の訪問数を「初回訪問者数」と整理している
    volunteer_page_view を未登録でも保存できるようにしている
    first_activity を「相談者への実返信」に絞っている
    費用管理を初期実装から外している

    このあたりです。

    上の3点だけ補足すれば、かなりきれいな仕様になると思います。
keyboard_arrow_up