UGOMK 操作手冊
01 章 / 共 2

自動行銷劇本(已搬遷)+ 跨模組行銷活動

「行銷自動化 → 劇本列表」已於 2026-06-05 整併進「會員管理 → 自動行銷劇本」(變基本 CRM 功能、無需額外付費)。

詳細說明請見 自動行銷劇本

跨模組行銷活動(global_promotions)

後台左側 會員管理 → 跨模組行銷活動/dashboard/modules/marketing-automation/global-promotions)。與「自動行銷劇本」是兩套獨立系統:劇本針對「個別會員的事件」觸發(發點數、推訊息……),跨模組行銷活動針對「結帳當下」自動判斷折扣,顧客不需輸入任何代碼(折扣碼型除外)。

已有完整後台頁面:清單(含篩選、CSV 匯出、使用紀錄查詢)/新增/編輯/即時試算,皆為自助操作,不需聯絡客服申請。

6 種活動類型

類型說明折抵方式
折扣碼顧客輸入吻合的代碼才套用,沒輸入不會自動折百分比或固定金額(可選)
限時特價只折指定品項,逐件計算後再乘數量百分比或固定金額(可選)
滿額折扣依消費金額折固定金額。「階梯」=取符合條件中門檻最高的一階;「循環」=每滿一次折一次依門檻設定,非百分比/金額二選一
滿額贈達門檻送指定贈品,不折金額不折金額,出贈品
生日禮壽星專屬,後端查會員生日,非壽星不套用固定為百分比
首購禮首單專屬,後端查會員 total_spent,有消費紀錄就不套用固定為固定金額
百分比欄位是「折抵掉的百分比」,不是台灣口語的「幾折」:填 20 =折 20%(1000 元付 800);填 85 =折 85%(1000 元付 150,不是 85 折)。表單在輸入框下方即時顯示換算金額。

適用模組

目前已接線(結帳時真的會套用):電商商城零售 POS。尚未接線(表單會列出但無法勾選):課程報名、餐飲 POS、美業預約、場地預約——勾了也不會折,畫面會用灰階區塊標示原因。適用模組清單一律以後端 GET /api/marketing/global-promotions/modules 回傳為準,不要憑印象假設哪些模組已接線。

共用限制欄位(六型皆可選填)

  • 總份數上限 / 每人限用次數:留空或 0 =不限
  • 最低消費金額:比對「模組自身折扣後的應付金額」
  • 折抵上限:封頂用
  • 取消 / 退款時歸還額度:預設開啟;關閉代表「佔了名額就是佔了」,適合限量搶購型活動。這個設定在扣款當下會快照,之後改設定不影響已成立的單

會員條件(filter_conditions)

可選限定會員等級、必須有的標籤(勾多個=全部都要有)、排除的標籤(帶有其中任一個就不套用)。全部留空=不限會員(含非會員結帳);只要設了任何一項,結帳時查不到會員一律不套用。

即時試算

編輯頁右側「即時試算」呼叫與零售 POS / 電商結帳同一支後端引擎(POST /api/marketing/global-promotions/calc),可代入結帳模組、試算金額、會員 ID、折扣碼看實際折抵結果。它讀的是「已儲存」的活動,表單改了但還沒存的欄位不會反映在試算結果。多個活動同時符合條件時,結帳只套用折最多的那一個,不疊加。

使用紀錄與匯出

清單頁每筆活動可開「使用紀錄」彈窗,看每筆折抵的會員、來源模組、來源單號、折抵金額、狀態(已使用 / 已退還)。也可依建立日期區間匯出 CSV。

延遲 / 排程觸發

劇本的 trigger_config 支援三個延遲欄位,可混用加總:

欄位說明範例
delay_days延遲天數3(三天後發)
delay_hours延遲小時數2(兩小時後發)
delay_minutes延遲分鐘數(主要用於測試)30(30 分鐘後發)

三個欄位加總計算;例如 delay_days=1, delay_hours=2 代表「26 小時後」。上限為 90 天,超過時自動截斷至 90 天。

延遲觸發的執行流程

  1. 入列:事件觸發時系統立即在 ma_rule_runs 建立一筆 status='scheduled' 的紀錄,並寫入 scheduled_at(= 觸發時間 + 延遲時間)。此時 dedup marker 已卡位,防止同條件重複排隊。
  2. 定時派送:後端 cron 定期呼叫 dispatchScheduledActions,掃出 scheduled_at <= now() 的紀錄,依序處理。
  3. 原子 claim:每筆紀錄以 UPDATE ... WHERE status='scheduled' RETURNING 原子搶占,多 tick / 多 pod 同時跑也不會重發(冪等)。
  4. 條件重查:派送前重新對該會員跑 filter_conditions,若延遲期間內條件已不符合(例如會員已升等、已取消)→ 標 skipped_filter 不發。
  5. 黑名單重查:派送前重查黑名單,黑名單成員一律略過,不因「入列當下未封鎖」而漏擋。
  6. 執行動作:通過以上檢查後執行 LINE 訊息推播 / 標籤 / 其他 action。

延遲觸發常見用法

- 訂單完成 48 小時後請評價order_completed trigger + delay_hours=48。 - 首購後 7 天推回購券first_purchase trigger + delay_days=7。 - 分階段培養:同一個觸發類型設多條劇本、各給不同延遲(第 1 天、第 3 天、第 7 天)。 - 生日前 N 天推祝賀:延遲欄位只吃 0 以上的數字,不能填負值往前推。請改用「生日當天」觸發類型自己的 days_before 參數(填 N = 生日前 N 天)。

2026-08-16 前這個功能是壞的

延遲發送從 2026-07-16 上線起到 2026-08-16 為止,沒有成功執行過一次:只要劇本設了延遲,觸發時排程寫入就會失敗,ma_rule_runs 一筆紀錄都不會產生,而回應看起來像「已經執行過了」,從畫面上完全看不出有問題。 已於 2026-08-16 修復。此前設過延遲的劇本請到「執行紀錄」確認實際有無紀錄;該期間錯過的獎勵不會自動補發

備註

延遲派送靠後端 cron(每 10 分鐘一輪)到點執行。修復後若仍發現延遲結束沒有執行,請聯繫客服。

多分店設定

本租戶若已開多家分店,本模組設定屬「per-store」(每間分店各自獨立設定)。 畫面頂部會看到 banner:

  • 橘色「正在編輯:[分店名]」→ 編輯的是該分店私有設定
  • 黃色「正在編輯:全店共用設定」→ 影響所有分店

切換分店:左上角當前門市切換器。

單店租戶看不到 banner(系統自動隱藏)。

劇本的「適用分店」設定

2026-06-16 起,自動行銷劇本(ma_rules)支援 per-store 設定,編輯/新增劇本時頂部有「適用分店」radio:

  • 全店共用:所有分店的事件都會觸發此劇本(預設值,向後相容舊資料)
  • 指定分店私有:只有當該事件來自指定分店時才觸發;其他分店不會跑

觸發判斷邏輯(fireTrigger store-aware)

  • 訂單 / 預約 / POS 等帶 storeId 的事件:同時跑「全店共用劇本」+「該分店私有劇本」
  • 不帶 storeId 的事件(例如標籤手動加上、生日通用觸發):只跑全店共用劇本,分店私有劇本不會被觸發

執行紀錄歸屬

ma_rule_runs.store_id 寫入規則:

  1. 若劇本本身設了 store_id(指定分店私有),執行紀錄一律歸屬該店
  2. 否則 fallback 到觸發事件帶的 triggerStoreId(從訂單/預約查到的分店)
  3. 兩者皆無 → store_id 為 NULL(全域層級事件)

執行紀錄列表頁可依分店篩選,店長角色只看得到自家分店的執行紀錄。

列表頁「適用範圍」欄

劇本列表多了「適用範圍」欄位:

  • 全店共用 → 顯示「全店」
  • 指定分店 → 顯示分店名稱 chip(橘底)

方便一眼看清楚哪些劇本是跨店共用、哪些是分店專屬。