正在載入索引…

Day 25:優惠券設定與 Coupon Message 實作

3.2k 字,約 3 分鐘

2025 iThome 鐵人賽:Line Bot × NestJS:30 天開發日記。 原文發表於 iThome,也可以在下方留言。

文章目錄
  1. 前言
    1. 優惠卷(Coupon)設定說明
    2. No conditions applied 無條件優惠券
      1. 分享追蹤設定
    3. Lottery 抽獎優惠券
    4. Friend referral 好友推薦優惠券
    5. Coupon Message 訊息類型
      1. 參數說明
      2. 實作流程
      3. 成果展現
    6. 如何查看已領取的優惠卷
      1. Step 1:進入 LINE 服務選單
      2. Step 2:選擇「官方帳號」服務
      3. Step 3:查看我的優惠券
    7. 本日結語

前言

LINE Official Account 的「優惠券」是提升顧客互動與忠誠度的重要功能。透過獎勵機制,不僅能吸引新客,更能有效促進回購。

本篇分為兩部分:前半部介紹優惠券後台設定與三種優惠券發放類型(No conditions applied、Lottery、Friend referral),後半部實作如何在 NestJS 中使用 Coupon Message 的方式發送優惠券給用戶。

本日程式碼的範例連結

優惠卷(Coupon)設定說明

優惠卷官方說明

登入 LINE Official Account 後台後,可以在左側導航欄的 Outreach 區塊中找到 Coupons 功能選項。

點擊進入優惠券管理頁面後,系統會將優惠券按照狀態分為三個類別:

  • 即將生效/有效:正在使用中的優惠券
  • 過期/已結束:已失效或過期的優惠券
  • 草稿:尚未發布的草稿優惠券

僅有草稿狀態的優惠券才可以「編輯」、「刪除」。

建立新的優惠券,只需點擊頁面上的 「Create new」 按鈕即可開始設定。

優惠券的發放條件主要可分為以下三種類型:

  • No conditions applied:任何用戶都能直接領取,適合一般性促銷活動
  • Lottery:僅限通過抽獎機制選中的用戶才能領取,適用於限量優惠或增加互動趣味性的活動
  • Friend referral:採用雙向獎勵機制,推薦者與被推薦者雙方都能獲得優惠券,有效促進用戶推廣

本篇將以 No conditions applied(無條件領取) 為主要示範。

No conditions applied 無條件優惠券

優惠卷可以設置以下的資訊:

  1. 標題:優惠券名稱
  2. 起迄時間和時區:有效期間與適用時區
  3. 照片:優惠券封面圖片
  4. 使用說明:兌換方式、使用限制及注意事項。系統會自動帶入預設條款,包含結帳時需出示畫面、僅限使用一次,以及效期可能變更等說明
  5. 是否刊登至LY服務:可選擇是否顯示於 LINE 主頁等相關服務
  6. 使用次數:可選擇單次或不限次數使用
  7. 折扣類型:固定金額、百分比或免費贈品等折扣方式
  8. 使用條件:設定最低消費門檻或其他限制

優惠卷儲存之後可以選擇分享的方式:

  • 設定成招呼語:新好友加入官方帳號時自動發送優惠券
  • 以訊息的方式傳送給用戶:透過廣播功能指定特定族群或全部用戶接收優惠券
  • 公布在 LINE VOOM:公開分享到動態消息區域
  • 當作關鍵字的回覆:設定多組關鍵字,用戶輸入符合內容時自動回覆優惠券

分享追蹤設定

透過設定 URL 參數,可在不同社群平台(如 Facebook、Instagram、X 等)分享優惠券,並於後台 Insights 追蹤各管道的領取與使用成效。

Lottery 抽獎優惠券

基本設定項目與 No conditions applied 相同,以下僅說明其差異之處。

抽獎流程

設定時,需要額外配置以下兩個參數:

  • 抽獎機率:設定中獎的百分比機率
  • 中獎者人數:限制可中獎的總人數上限

抽獎規則

  • 只有中獎者才能獲得優惠券
  • 每位用戶僅能參與一次抽獎,無論中獎與否都不可重複抽取

Friend referral 好友推薦優惠券

基本設定項目與 No conditions applied 相同,以下僅說明其差異之處。

抽獎流程

運作流程:

  • 官方帳號設定:建立推薦優惠券並發布推薦頁面
  • 推薦者分享:現有用戶分享推薦頁面給潛在用戶
  • 被推薦者加入:新用戶透過推薦頁面加入官方帳號並獲得優惠券
  • 推薦者獲得獎勵:系統自動通知推薦者並發放優惠券

Friend referral 優惠券 = 推薦頁面 (Referral page) + 優惠券

1. 推薦頁面:

現有用戶分享給新用戶,新用戶加入後也能繼續分享,形成連鎖推薦效應

可設定項目:

  • Top image(頂部圖片):選擇使用預設圖片或上傳自訂圖片
  • Referral period(推薦期間):設定活動起始與結束日期時間,並指定時區
  • Important(注意事項):填寫優惠券使用條款與聲明

2. 優惠券

透過 Number available 可設定每位推薦者可獲得的優惠券數量上限

分享方式只存在兩種方式:

  • Set as rich menu:將推薦頁面設定為圖文選單,方便用戶隨時存取分享
  • Send as message:透過訊息推播方式將推薦頁面廣播給指定用戶

系統僅提供單一推薦 URL,無法針對不同社群平台生成專屬追蹤連結

Coupon Message 訊息類型

本系列文章原先使用的 @line/bot-sdk 版本為 10.1.0,但該版本尚未包含 Coupon Message 功能。因此需要升級至 10.3.0 版本才能使用。

在 LINE Bot 的訊息系統中,除了我們先前介紹的:

  • 六種基礎訊息(Text、Image、Video、Audio、Location、Sticker)
  • Template Message
  • ImageMap Message
  • Flex Message

還有一種專門用於發送優惠券的訊息類型:Coupon Message。這讓開發者能在對話流程中靈活發送優惠券,實現更多元的行銷應用場景。

參數說明

  • couponId(必填):優惠券的唯一識別碼,可從建立優惠券的 API 回應中取得,或透過優惠券列表 API 查詢
  • deliveryTag(選填):優惠券發送路徑的標籤名稱,用於在後台 Insights 追蹤不同發送情境的成效分析

line-message/types/coupon-message

ts
import { MessageCommon } from './message-common';
import { CouponMessage } from '@line/bot-sdk/lib/messaging-api/model/models';

export type CouponMessageReq = MessageCommon & Omit<CouponMessage, 'type'>;

實作流程

在使用 Coupon Message 前,需要先取得優惠券的 couponId,有以下兩種方式:

  1. 透過 API 建立優惠券:建立時會在回應中直接返回 couponId,可參考官方 API 說明
  2. 透過 LINE OA 後台建立:先在後台建立優惠券,再使用「查詢優惠券列表 API」取得 couponId,可參考官方 API 說明

本範例採用第二種方式,透過查詢優惠券列表 API 取得先前在後台建立的優惠券編號:

line-message/line-message.service.ts

ts
  createCouponMessage(couponMessageReq: CouponMessageReq): CouponMessage {
    const { couponId, deliveryTag, sender, quickReplyItems } = couponMessageReq;
    const couponMessage: CouponMessage = {
      type: 'coupon',
      couponId,
      ...(deliveryTag && { deliveryTag }), // 處理 deliveryTag 可選參數
      ...this.buildCommonMessageProps(sender, quickReplyItems),
    };
    return couponMessage;
  }

成果展現

使用一開始創建的咖啡優惠券,我有換咖啡照片 ヽ(●´∀`●)ノ

如何查看已領取的優惠卷

Step 1:進入 LINE 服務選單

在 LINE 首頁點選「服務」區塊的「顯示全部」按鈕,顯示完整的服務列表。

Step 2:選擇「官方帳號」服務

在服務列表中找到並點選「官方帳號」項目。

Step 3:查看我的優惠券

進入官方帳號頁面後,點選「我的優惠券」即可查看所有已領取的優惠券。

本日結語

今天和大家分享生活中隨處可見的優惠券功能。身為容易被優惠券吸引而消費的人,這次我完整地探索了一遍相關機制,正好可以結合 Coupon Message 來說明實際應用。

我自己設想的使用情境是:當用戶登入會員後,系統自動發送一張「會員禮優惠券」作為歡迎禮。雖然後台本身提供關鍵字觸發優惠券的功能,但透過 Coupon Message,我們能更靈活地根據不同場景客製化發送優惠券,讓行銷策略可以更加精準有效。

留言

留言使用 GitHub 帳號登入(Giscus),留言會存在 GitHub Discussions。