掌握驗證、錯誤處理、Webhook 與常見流程,建立可靠的 Giftpack 整合。
Giftpack API 可讓你的後端建立及執行獎勵、激勵、企業贈品與受贈者自主選擇等工作流程。你的系統負責管理業務觸發條件與客戶資料;Giftpack 則處理目錄供應狀態、受贈體驗、履約及配送進度更新。
正式環境的基礎 URL 為:
https://developer.giftpack.ai
如需完整的請求與回應 schema,請參閱 API Reference。本指南可協助你選擇正確的資源系列,並了解資源建立後的狀態演進。
| 目標 | 主要資源 | 生命週期事件 |
|---|---|---|
| Smart Gifting、排程獎勵或自動化表揚 | Campaigns 與 Giftees | giftee.* |
| 直接從 Gift Mall 或 Merchandise Catalog 建立訂單 | Marketplace Orders 與 Marketplace Order Receivers | marketplace_order_receiver.* |
| 維護會員的獎勵餘額 | Point Recipients 與 Point Histories | 點數兌換後,追蹤所產生的 marketplace order |
Smart Gifting 以 campaign 作為方案容器,並以 giftee 表示各受贈者的生命週期:
Campaign -> Giftee -> Redemption -> Fulfillment -> Delivery
直接目錄訂單以 marketplace order 作為訂單容器,並以 marketplace order receiver 表示各受贈者的生命週期:
Marketplace Order -> Receiver -> Claim or Selection -> Fulfillment -> Delivery
請勿將 giftee 與 marketplace_order_receiver 視為可互換的資源。即使兩者的履約狀態相似,其事件名稱仍代表不同的訂單系列。
建立與更新請求會回傳資源的目前狀態。受贈者操作、履約、出貨與送達則會以非同步方式持續進行。
若要建立可靠的整合:
id 作為去重鍵。在 Giftpack 建立 API key 後,可透過 Webhook 事件目錄驗證存取權限:
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
回應會列出 API 目前支援的 Webhook 事件類型。此端點才是事件目錄的權威來源,請勿依賴寫死在客戶端的清單。

這些定義說明了 Giftpack API 整合中使用的核心領域物件。 在建立工作流程前,理解這些物件之間的關係非常重要。 Giftpack 主要運作於三個層次:
互動層 (Engagement Layer)商務層 (Commerce Layer)供應與營運層 (Supply & Operations Layer)此層建模發送方與接收方的關係生命週期。 它是事件驅動(event-driven),且常常為非同步。
可能收到禮品或獎勵的真實個人(員工、客戶或夥伴)。在 API 語意中,Recipient 是 Giftpack workspace 內的持久身分。Recipient 可獨立於 Campaign 存在,也可在不同時間參與多個 Campaign。
用於目標分群與批次指派的邏輯集合。群組是組織結構概念,不代表交易。
Campaign 代表一次單一的互動意圖。
其定義包含:
Campaign 不是訂單。 Campaign 是生命週期容器,redemption 與 fulfillment 事件在其中發生。
當 Recipient 被附加到 Campaign 後,即成為 Giftee。 Giftee 代表接收者在該 Campaign 內的參與狀態。 這個區分很重要:
Recipient = 身分Giftee = 活動綁定狀態定義活動的呈現層,包含:
範本影響溝通,不影響 fulfillment 邏輯。
Redemption 表示接收者執行領取禮品的動作。 可透過以下方式發生:
Redemption 會將狀態由 “invited” 轉為 “claimed”。
允許 Giftee 領取禮品的唯一 URL。
使用 Campaign Template 傳送 redemption 連結的郵件。
此層處理交易與 fulfillment 相關作業。 可獨立於 Campaign 工作流程運作。
由發送方直接選擇的固定精選商品。 通常在下單後立即 fulfilled。
針對一位或多位接收者的直接購買交易。 可略過 Campaign 型 redemption,直接進入 fulfillment。 Marketplace Order ≠ Campaign。
被指定為 Marketplace Order fulfillment 目標的接收者。
由 Giftpack 庫存與倉儲系統管理的可客製化商品。 可能需要:
Marketplace 或 Swag 目錄中的可銷售容器物件。
商品可購買的具體配置,例如:
交易永遠發生在 Product Variant 層級。
此層支援 fulfillment 與 vendor 管理。 對多數整合來說通常被抽象化,但對理解狀態轉換仍很重要。
負責以下事項的營運層:
向 Giftpack 生態提供商品的 vendor。
由 Procurement Office 監督的 Provider,用於目錄品質、onboarding 與營運控制。
在 API 操作中引用 Provider 的唯一識別碼。
以下結構展示這些實體之間的關係:
Recipient
└─ may belong to Recipient Group
└─ becomes Giftee when attached to Campaign
Campaign (Engagement Container)
├─ defines Redemption rules
├─ manages Giftee states
└─ may generate Fulfillment Orders
Commerce Layer
├─ Marketplace Order (direct transaction)
└─ Swag Order (inventory-based transaction)
Redemption
├─ Link-based
├─ Email-based
└─ Transitions state before fulfillment
Giftpack 核心 /v1 操作使用限定於工作區的 API key,並透過 X-API-KEY header 傳送。API key 只能由可信任的伺服器端應用程式使用。
API key 可在開發者設定中管理。工作區與目前使用者必須具備 Giftpack Open API 功能的存取權,以及開發者設定所需的權限。
如果無法開啟「開發者」頁面,請先請工作區管理員確認工作區方案及你的角色,再開始建立整合。
絕對不要將 API key 放在瀏覽器 JavaScript、行動應用程式、log、螢幕截圖、客服工單或原始碼版本控制中。
測試環境與正式環境應使用不同的憑證。若 key 可能已外洩,請立即撤銷。
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
API key 用於識別工作區。資源授權會在伺服器端強制執行,因此即使取得其他工作區的 ID,也不代表能存取該資源。
https://developer.giftpack.ai。API Reference 中的部分 connector 操作會使用 bearer token 或供應商專用的驗證方式。請依照個別操作所列的 security scheme 執行,不要假設 Giftpack API key 能呼叫 connector 端點。
X-API-KEY。公開合約並未承諾所有操作共用單一 rate limit 或重試政策。若個別端點提供相關 header 或 API Reference 說明,請以該資訊為準;規劃高流量突發請求前,請先聯絡 Giftpack。
Giftpack 操作使用標準 HTTP 狀態碼。API Reference 所記載的錯誤回應使用 application/problem+json。
{
"type": "about:blank",
"title": "Bad Request",
"status": 400,
"detail": "Property email is required but is missing.",
"instance": "https://developer.giftpack.ai/errors/example",
"errors": [
{
"location": "body.email",
"message": "The email field is required.",
"value": null
}
]
}
type:識別問題類型的 URI,可能為 about:blank。title:穩定且易於理解的問題摘要。status:此回應所對應的 HTTP 狀態。detail:本次特定失敗的說明。instance:如有提供,用於識別本次問題實例的 URI。errors:選填的欄位級錯誤明細,包含 location、message 與 value。並非每個錯誤都保證包含所有欄位。剖析器應能容許選填欄位缺漏,以及未來新增的未知欄位。
| 狀態系列 | 意義 | 建議處理方式 |
|---|---|---|
2xx | HTTP 操作成功 | 儲存回傳的 ID;後續生命週期變更使用 Webhook 追蹤 |
400 | 請求無效或驗證失敗 | 修正請求後再重試 |
401 | 缺少驗證資訊或驗證無效 | 檢查伺服器端 API key 與環境 |
403 | 已通過驗證,但沒有權限 | 檢查工作區歸屬、方案存取權與使用者權限 |
404 | 找不到資源或路由 | 確認端點與資源 ID |
409 | 請求與目前狀態衝突 | 重新讀取資源,再判斷該操作是否仍然有效 |
5xx | Giftpack 或上游服務無法完成請求 | 保留目前狀態,且僅在操作可安全執行時重試 |
各操作所記載的回應,以 API Reference 為權威來源。
GET 請求通常可使用設有上限的指數退避策略重試。會變更狀態的請求則需要更審慎處理:
傳輸逾時只代表客戶端未收到回應,無法證明伺服器未完成該請求。
回報問題時,請提供端點、method、UTC 時間戳記、HTTP 狀態、相關資源 ID,以及已遮蔽敏感資訊的問題回應。絕對不要附上 API key 或未遮蔽的受贈者資料。
Webhook 會回報 API 請求回傳後發生的受贈者與履約狀態轉換。請將 Webhook 作為生命週期的主要訊號,並使用 GET 操作核對狀態。
請取得最新目錄,不要寫死舊版清單:
curl https://developer.giftpack.ai/v1/webhookeventtypes \
--header 'Accept: application/json' \
--header 'X-API-KEY: YOUR_API_KEY'
目前的目錄包含兩個資源系列。
giftee
Smart Gifting 訂單的受贈者生命週期事件,包括透過整合啟動的 campaign、排程方案及自動化獎勵工作流程。
giftee.createdgiftee.launchedgiftee.preparinggiftee.shippedgiftee.deliveredgiftee.failedgiftee.returnedgiftee.reviewedgiftee.cancelgiftee.resumegiftee.deletemarketplace_order_receiver
直接透過 Gift Mall 或 Merchandise Catalog 建立、且不屬於 Smart Gifting campaign 工作流程之訂單的受贈者生命週期事件。
marketplace_order_receiver.createdmarketplace_order_receiver.launchedmarketplace_order_receiver.shippedmarketplace_order_receiver.deliveredmarketplace_order_receiver.failedmarketplace_order_receiver.returnedmarketplace_order_receiver.reviewedmarketplace_order_receiver.delete每次投遞的內容都是 JSON object。data 是結構化的資源快照,不是經過跳脫的 JSON string。
{
"id": "123e4567-e89b-12d3-a456-426655440000",
"type": "giftee.shipped",
"data": {
"id": "23e4567-e89b-12d3-a456-426655440000",
"type": "giftee",
"email": "recipient@example.com",
"status": 12,
"delivery_status": 2,
"budget": 100,
"campaign": {
"id": "323e4567-e89b-12d3-a456-426655440000"
},
"recipient": {
"id": "423e4567-e89b-12d3-a456-426655440000"
},
"delivery_tracking_code": "TRACKING-CODE"
},
"created_at": "2026-09-01 15:23:33"
}
id 是永久保留的事件實例 ID,應作為去重鍵。type 用於識別資源系列與狀態轉換。data 擷取事件發生當下的資源狀態。欄位會依資源系列及生命週期階段而異。created_at 是事件發生時間。投遞順序可能與事件發生順序不同,因此排序狀態轉換時請使用此值。Giftpack 會將原始 request body 的 HMAC-SHA256 digest,以小寫十六進位格式放在 X-Giftpack-Signature 中傳送。
const crypto = require('crypto');
function verifyGiftpackWebhook(rawBody, signature, secret) {
if (!signature) return false;
const expected = crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const actualBuffer = Buffer.from(signature, 'utf8');
const expectedBuffer = Buffer.from(expected, 'utf8');
return (
actualBuffer.length === expectedBuffer.length &&
crypto.timingSafeEqual(actualBuffer, expectedBuffer)
);
}
請在剖析或處理 payload 前驗證簽章。Webhook secret 應儲存在伺服器端的秘密儲存空間。
POST 傳送 JSON body。2xx 回應都表示投遞成功。id。驗證並可靠接收事件後,請儘快回傳 2xx。將耗時的工作移至 queue 執行。
Webhook event 與 request log 使用以下數值狀態:
-1:失敗0:處理中1:成功事件詳細資料回應包含結構化的 webhook_event_data、嘗試次數,以及各次 request record,供疑難排解使用。
X-Giftpack-Signature。id 去重。created_at,並容許事件未依順序抵達。2xx。請依受贈者取得獎勵的方式選擇相符的資源系列。每個必填欄位與回應模型仍以 API Reference 為權威來源。
適用於透過整合、排程方案或自動化流程,建立 campaign 型受贈體驗的情境。
POST /v1/campaigns 建立或選擇 campaign。POST /v1/giftees 新增每位受贈者。POST /v1/giftees/{gifteeId}/redemptionlink 產生受贈者連結。giftee.* Webhook 事件追蹤受贈者生命週期。後續操作請使用回傳的 giftee ID。請勿自行組合兌換 URL。
建議先訂閱 giftee.created、giftee.launched、giftee.preparing、giftee.shipped、giftee.delivered、giftee.failed 與 giftee.returned。如果整合需要取消、恢復、刪除及評價等狀態轉換,再加入對應事件。
如果訂單直接來自 Gift Mall 或 Merchandise Catalog,而非 Smart Gifting campaign,請使用 marketplace order。
curl https://developer.giftpack.ai/v1/marketplaceorders \
--request POST \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: YOUR_API_KEY' \
--data '{
"marketplace_order_name": "September employee rewards",
"marketplace_order_start_date": "2026-09-01",
"marketplace_order_end_date": "2026-09-30",
"marketplace_order_type": "Normal",
"submit": false,
"receivers": [
{
"member_id": "9a1232aa-238f-421c-82e7-45693d1b25b4",
"country": "US",
"gift_message": "Thank you for your contribution.",
"email_notification": true,
"sms_notification": false,
"marketplace_feature": false,
"donation_feature": false,
"products": [
{
"marketplace_product_id": "961be65a-88d8-4040-8808-843ccf5da624",
"marketplace_product_variant_id": "961be65a-a96a-412d-b22a-325f07d85647",
"product_quantity": 1
}
]
}
]
}'
如果你的應用程式需要先檢查或更新訂單,請以草稿形式建立。準備完成後,使用 POST /v1/marketplaceorders/{marketplaceOrderId}/submit 提交訂單。
使用 marketplace_order_receiver.* 事件追蹤每位受贈者。由於 receiver 隸屬於 marketplace order,而非 campaign,因此這些事件與 giftee.* 分開處理。
當會員需要持有獎勵餘額並於日後兌換時,請使用 points。
POST /v1/pointrecipients/{memberId}/enablepointfeature 啟用 points。PATCH /v1/pointrecipients/{memberId}/points 更新餘額。更新餘額時,credits 與 points 皆為必填:
curl https://developer.giftpack.ai/v1/pointrecipients/MEMBER_ID/points \
--request PATCH \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: YOUR_API_KEY' \
--data '{
"credits": 1,
"points": 100,
"expired_at": "2027-09-01",
"notes": "Annual recognition allocation"
}'
即使你的業務邏輯主要以 points 表示,也不可省略 credits。請求逾時後,再次更新餘額前,請先檢查回傳的 point recipient 與 point history。