深色模式
行銷事件(FLOD → CRM)
對應 FLOD:設定 → CRM 整合 → 行銷事件(FLOD → CRM)
開始前
Webhook 須送到 能接收 POST 的服務;若行銷主系統是大型 PRM 且沒有「貼 URL」欄位,請先讀 適用情境與整合方式。
啟用並填寫 Webhook URL 後,FLOD 會在營運里程碑發生時,以 HTTPS POST 推送 JSON 至診所設定的 URL。
訂閱事件
| 顯示名稱 | 事件代碼 | 何時推送 |
|---|---|---|
| 消費完成(療程/商品) | purchase.completed | 現場結帳成功(含療程購買、商品購買) |
| 療程扣次 | treatment.consumed | 療程從顧客庫存扣次/消耗 |
| 到訪完成 | visit.completed | 到訪流程標記為已完成 |
| 會員等級變更 | membership.changed | 顧客會員等級變更 |
purchase.completed 包含哪些消費?
療程與商品都會推送,同一筆結帳若同時含療程與商品,items 陣列會分別列出:
- 療程:
type: "treatment" - 商品:
type: "good"
押金/儲值等路徑若走結帳確認,也會依實際 purchasement 內容推送摘要。
共通 envelope
json
{
"event_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "purchase.completed",
"occurred_at": "2026-08-28T12:00:00.000Z",
"location_id": "診所 location id",
"patient": {
"flod_id": "674a1b2c3d4e5f6789012345",
"patient_id": "診所顧客編號",
"external_patient_id": "外部系統顧客編號",
"name": "王小明",
"phone": "0912345678"
},
"data": { }
}| 欄位 | 說明 |
|---|---|
patient.flod_id | FLOD 內部顧客 ID(系統主鍵) |
patient.patient_id | 診所「顧客編號」(可能為空字串) |
patient.external_patient_id | 外部系統顧客編號;顧客檔有填時才會出現 |
對人建議:CRM 端優先用 external_patient_id;沒有時再用手機或自行維護的對照表。patient_id 是診所內部編號,不要預設它等於 CRM 主鍵。
簽章(選填)
若設定頁有填 簽章密鑰,FLOD 會加上 Header:
text
X-FLOD-Signature: sha256=<hex>CRM 端應以相同密鑰驗證 body 的 HMAC-SHA256。
各事件 data 摘要
purchase.completed
json
{
"amount": 12000,
"items": [
{ "name": "皮秒雷射", "qty": 1, "type": "treatment" },
{ "name": "修復面膜", "qty": 2, "type": "good" }
],
"payment_method": "cash"
}treatment.consumed
json
{
"treatment_name": "皮秒雷射",
"qty": 1,
"division_name": "美容",
"reservation_id": "…"
}visit.completed
json
{
"reservation_id": "…",
"date_reserve": "2026-08-28 14:00",
"division_name": "美容",
"treatments": ["皮秒雷射"]
}membership.changed
json
{
"membership_name": "金卡",
"membership_level": 2,
"previous_membership_name": "銀卡"
}測試
設定頁按 發送測試事件,會依目前表單的 Webhook URL 與簽章密鑰(密鑰留空時沿用已儲存值)推送一筆 purchase.completed 測試 payload(含 data.test: true)。無需先儲存設定。
注意事項
- 推送為最佳努力:Webhook 失敗不會 rollback 櫃台已完成的操作。
- FLOD 不推送表單全文、分潤明細等 PHI 以外不需用於分眾的資料。
- 同一
event_id請 CRM 端自行去重(重試時可能重送)。