功能優惠促銷
價格優惠
百分比折扣、固定金額折扣、首期特價 - 直接減少顧客付款金額
價格優惠
透過價格優惠直接減少顧客的付款金額,吸引新客戶、獎勵老客戶,或進行節慶促銷。
固定金額折扣
直接折抵固定金額,顧客一眼就能看懂優惠。
運作方式
設定固定的折抵金額,無論訂單金額多少都折抵相同金額。
範例:
SAVE100- 折抵 NT$100WELCOME50- 新會員折 NT$50
適用場景
- 新客首購優惠 - 吸引新顧客嘗試
- 節慶促銷 - 聖誕節、雙十一等活動
- 會員專屬折扣 - 回饋忠實顧客
設定選項
| 選項 | 說明 |
|---|---|
| 折扣金額 | 固定折抵的金額(如 NT$100) |
| 最低消費 | 訂單需達此金額才能使用 |
| 適用商品 | 全部商品或指定商品 |
百分比折扣
依購買金額按比例折扣,金額越高折越多。
運作方式
設定折扣百分比,系統自動計算折扣金額。
範例:
VIP20- 8 折(20% off)ANNUAL10- 年繳 9 折
適用場景
- 會員等級折扣 - VIP 專屬優惠
- 大額訂單優惠 - 鼓勵升級高價方案
- 長期合作方案 - 企業客戶優惠
週期性折扣
百分比折扣可設定持續多個計費週期:
| 設定 | 說明 |
|---|---|
| 僅首次 | 只有第一期有折扣 |
| 指定週期 | 前 N 期有折扣(如前 3 個月) |
| 永久 | 訂閱期間永久有效 |
範例:
- 前 3 個月 8 折,第 4 個月起恢復原價
- 永久 9 折(適用於年度合作夥伴)
首期特價
顧客以特價訂閱第一期,後續自動恢復原價。
運作方式
設定首期的固定價格,不論原價多少,首期都以此價格收費。
範例:
- 首月 $1,第 2 個月起恢復 $299/月
- 首月 $99(原價 $299),第 2 個月起恢復原價
適用場景
- 免費試用替代 - 用極低價格取代完全免費,篩選有意願的顧客
- 新服務推廣 - 吸引用戶嘗試新功能
- 降低入門門檻 - 減少顧客的決策成本
顧客體驗
顧客在結帳時會看到:
首月特價:$1
原價:$299/月
第 2 個月起將以原價 $299 續訂續約處理
- 首期結束前,系統自動發送提醒
- 到期時以原價發起扣款
- 顧客可在 Portal 查看續約價格
建立價格優惠
後台操作
- 前往「優惠促銷」
- 點擊「建立優惠」
- 選擇優惠類型:
- 固定金額折扣
- 百分比折扣
- 首期特價
- 填寫設定:
- 名稱 - 內部識別用
- 金額/比例 - 折扣數值
- 有效期限 - 開始與結束日期
- 使用次數 - 總次數上限
- 適用商品 - 選擇適用的商品
- 儲存
代碼格式
推廣碼的格式規則:
- 僅允許大寫英文(A-Z)和數字(0-9)
- 長度 3-20 字元
- 不區分大小寫(自動轉換為大寫)
有效範例:
SAVE1002024NEWYEARVIP20OFF
限制設定
有效期限
設定優惠的有效期間:
- 開始日期 - 何時開始生效
- 結束日期 - 何時失效
使用次數
- 總次數上限 - 所有顧客共用次數
- 每顧客上限 - 單一顧客可使用次數
適用商品
- 所有商品 - 適用於所有商品
- 指定商品 - 僅適用於選擇的商品
最低消費
設定門檻金額,訂單需達到此金額才能使用。
顧客資格
限制特定類型的顧客才能使用此優惠:
| 設定 | 說明 | 使用場景 |
|---|---|---|
| 所有顧客 | 不限制(預設) | 節慶促銷、全場優惠 |
| 僅限新顧客 | 從未有付費訂閱的顧客 | 獲客優惠、首購折扣 |
| 僅限現有顧客 | 曾經或目前有付費訂閱的顧客 | 升級優惠、留存/挽回優惠 |
判斷邏輯:
- 新顧客:在您的組織內從未建立過
ACTIVE、PAST_DUE、CANCELED、EXPIRED狀態的訂閱 - 現有顧客:曾經或目前有上述任一狀態的訂閱
- 僅處於
TRIAL狀態的顧客仍視為「新顧客」
使用情境範例:
| 優惠碼 | 顧客資格 | 用途 |
|---|---|---|
WELCOME20 | 僅限新顧客 | 首次訂閱享 8 折 |
UPGRADE30 | 僅限現有顧客 | 升級方案享 7 折 |
XMAS2024 | 所有顧客 | 聖誕節全場 9 折 |
注意事項:
- 設為「僅限新顧客」的優惠碼,無法在 Customer Portal 的方案切換中使用(因為切換方案代表已是現有顧客)
- 設為「僅限現有顧客」的優惠碼,無法在首次結帳時使用
使用統計
在優惠詳情頁面查看:
- 使用次數 - 已使用 / 總次數
- 使用率 - 使用次數 / 瀏覽次數
- 折扣總額 - 累計折扣金額
- 帶來營收 - 使用此優惠的訂單總額
技術整合
驗證優惠碼
const response = await fetch('https://api.recur.tw/v1/coupons/validate', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
code: 'SAVE100',
productId: 'prod_xxx',
}),
});
const { valid, discount, message } = await response.json();套用優惠碼
在建立 Checkout Session 時套用:
const response = await fetch('https://api.recur.tw/v1/checkout/sessions', {
method: 'POST',
headers: {
'Authorization': 'Bearer sk_test_xxx',
'Content-Type': 'application/json',
},
body: JSON.stringify({
productId: 'prod_xxx',
mode: 'SUBSCRIPTION',
couponCode: 'SAVE100', // 套用優惠碼
successUrl: 'https://your-site.com/success',
cancelUrl: 'https://your-site.com/cancel',
}),
});相關 Webhook 事件
訂閱相關事件的 payload 會包含折扣資訊:
| 欄位 | 說明 |
|---|---|
coupon | 優惠資訊(id, name, discount_type, discount_amount, duration) |
coupon_remaining_cycles | 週期性折扣剩餘期數(僅 REPEATING 類型) |
discount_amount | 本期折扣金額 |
promotion_code | 使用的推廣代碼 |
重要事件:
subscription.created- 訂閱建立,包含初始折扣設定subscription.activated- 訂閱啟用,首期折扣已套用subscription.renewed- 訂閱續訂,週期性折扣持續套用或恢復原價
週期性折扣追蹤範例:
// 首期(3 期折扣)
{
"coupon_remaining_cycles": 2,
"discount_amount": 60
}
// 第 2 期
{
"coupon_remaining_cycles": 1,
"discount_amount": 60
}
// 第 3 期
{
"coupon_remaining_cycles": 0,
"discount_amount": 60
}
// 第 4 期(恢復原價)
{
"coupon": null,
"coupon_remaining_cycles": null,
"discount_amount": 0
}詳細 Webhook payload 格式請參考 Webhook 事件類型。
最佳實踐
- 簡單易記的代碼 - 如
SAVE100、VIP20 - 設定合理期限 - 創造緊迫感
- 限制使用次數 - 控制促銷成本
- 清楚說明恢復價格 - 首期特價需明確告知後續價格
- 追蹤成效 - 定期檢視使用統計與續約率