今天把事件和欄位用起來。我先把分群長相講清楚,接著把名單匯出的檔名、欄位、頻率與權限都訂好。目標很單純:之後每天產生的名單,可重跑、口徑一致。
我今天定的分群條件
• new_first_7d:最近 7 天內出現第一筆 order_created(首購回訪)。
• active_30d:最近 30 天有 payment_succeeded。
• at_risk_31_90d:31–90 天內沒有 payment_succeeded。
• churned_>90d:超過 90 天沒有 payment_succeeded。
• coupon_unredeemed_7d:最近 7 天 coupon_issued,且之後沒有 coupon_redeemed。
判斷原則:以 event_time 為準;「近期」都含當天。先用得動的條件,之後要細分(品類、客單、門市)再疊。
把「名單匯出規格」敲定
• 檔名規則:list_{yyyymmdd}{segment}{ver}.csv
• 例:list_20250916_active_30d_v1.csv
• 產出頻率:每日 09:00(+08:00),內容以 T-1 24:00 為止的事件為準。
• 權限:行銷+PM 可讀;匯出只帶最小欄位。
• 保存:近 90 天;到期自動刪除。
• 欄位清單(順序固定):
• member_id
• phone_hash(可空)
• email(可空)
• segment(上面五種之一)
• last_order_time(最近一次 order_created 或 payment_succeeded)
• orders_30d(近 30 天 order_created 次數)
• amount_30d(近 30 天 payment_succeeded 金額加總)
• last_channel(最近一次事件的 channel)
• consent_state(Y/N)
• generated_at(名單產生時間,ISO 8601)
• spec_version(匯出規格版本)
• note(備註,可空)
CSV 表頭
member_id,phone_hash,email,segment,last_order_time,orders_30d,amount_30d,last_channel,consent_state,generated_at,spec_version,note
我手動造的兩筆假資料(拿來測流)
M123456,hash_abc,,active_30d,2025-09-15T21:30:00+08:00,2,1788,App,Y,2025-09-16T09:00:00+08:00,v1,近30天有購買
M987654,hash_xyz,,at_risk_31_90d,2025-07-20T14:05:10+08:00,0,0,Web,N,2025-09-16T09:00:00+08:00,v1,需喚回
我今天做的三個決定
• 先把分群做粗、但能重跑:先以「是否近期有成交」決定生命周期;之後再分價格帶或品類。
• 欄位不加花樣:只留決策必需欄位(ID、近 30 天指標、同意狀態、時間戳)。
• 一切可追溯:每份名單帶 generated_at 與 spec_version,方便比對與回滾。
小結:分群與匯出規格定下來,我就能每天穩定吐名單;報表口徑也不會一天一個版本。
明日預告(Day 4):我會把「指標字典」寫出來(GMV、復購、券使用率、7/30 日留存),順便列日更看板需要的欄位與驗證步驟。