Webhook
Webhook cho phép hệ thống của bạn nhận thông báo theo thời gian thực mỗi khi có sự kiện xảy ra trên Mini Gift (nhận quà, hoàn thành khảo sát, tích điểm...). Thay vì phải liên tục gọi API để kiểm tra, Mini Gift sẽ chủ động gửi (POST) dữ liệu đến URL bạn đăng ký.
Các endpoint quản lý webhook bên dưới yêu cầu header x-api-key. Xem chi tiết tại trang Giới thiệu Open API.
- Bắt buộc dùng HTTPS.
- Khi tạo/cập nhật, hệ thống gửi một request xác minh tới URL; URL phải phản hồi HTTP 200 thì mới lưu thành công.
- Mỗi cửa hàng chỉ đăng ký được một webhook.
1. Cách webhook hoạt động
Khi một sự kiện phát sinh, Mini Gift gửi một request POST (Content-Type application/json) tới URL của bạn với body:
{
"event": "gift.claimed",
"data": { },
"sentAt": "2026-07-02T02:00:00.000Z"
}
| Trường | Kiểu | Mô tả |
|---|---|---|
| event | string | Tên sự kiện (xem danh sách bên dưới) |
| data | object | Dữ liệu chi tiết của sự kiện |
| sentAt | string (ISO 8601) | Thời điểm gửi |
Hệ thống của bạn nên phản hồi HTTP 200 càng nhanh càng tốt (xử lý nặng nên đưa vào hàng đợi nền).
Chính sách gửi lại (Retry) & tự tắt
| Thuộc tính | Giá trị |
|---|---|
| Timeout mỗi lần gọi | 10 giây |
| Số lần thử tối đa | 3 lần |
| Độ trễ giữa các lần thử | ngay lập tức → sau 5 phút → sau 30 phút |
| Tự động tắt webhook | sau 10 lần thất bại liên tiếp (active chuyển false) |
Chỉ phản hồi 2xx mới được coi là thành công. Mọi mã khác (hoặc timeout) đều tính là thất bại và kích hoạt retry.
2. Danh sách sự kiện hỗ trợ
Endpoint
GET https://api.minigift.vn/api/v1/open/webhooks/events
Phản hồi (Response)
{
"data": [
"gift.created",
"gift.updated.info",
"gift.deleted",
"gift.claimed",
"gift.redeemed",
"gift.claimGiftByExchangePoints",
"survey.created",
"survey.updated.info",
"survey.deleted",
"survey.completed",
"points.claimed",
"user.providedPhone",
"user.followedOA"
],
"success": true
}
Ý nghĩa các sự kiện
| Sự kiện | Kích hoạt khi | data gồm |
|---|---|---|
| gift.created | Tạo quà mới | gift |
| gift.updated.info | Cập nhật thông tin quà | gift |
| gift.deleted | Xoá quà | gift |
| gift.claimed | Khách nhận quà | campaignId, userGiftId, userId |
| gift.redeemed | Khách đổi/sử dụng quà | campaignId, userGiftId, userId |
| gift.claimGiftByExchangePoints | Đổi quà bằng điểm | userGiftId, userId |
| survey.created | Tạo khảo sát | survey |
| survey.updated.info | Cập nhật khảo sát | survey |
| survey.deleted | Xoá khảo sát | survey |
| survey.completed | Khách hoàn thành khảo sát | surveyId, campaignId, userId, answers |
| points.claimed | Khách tích điểm | campaignId, userId |
| user.providedPhone | Khách cung cấp SĐT | userId, phone |
| user.followedOA | Khách quan tâm OA | userId, zaloIdByOA |
Có thể dùng ký tự đại diện để đăng ký toàn bộ sự kiện cùng tiền tố, ví dụ gift.* khớp tất cả sự kiện bắt đầu bằng gift.. Hệ thống sẽ tự mở rộng thành danh sách sự kiện cụ thể khi lưu.
Ví dụ payload sự kiện gift.claimed
{
"event": "gift.claimed",
"data": {
"campaignId": "6651aa11b2c3d4e5f6a7b8c9",
"userGiftId": "6652bb22c3d4e5f6a7b8c9d0",
"userId": "6653cc33d4e5f6a7b8c9d0e1"
},
"sentAt": "2026-07-02T02:00:00.000Z"
}
3. Đăng ký Webhook
Endpoint
POST https://api.minigift.vn/api/v1/open/webhooks