Webhook
Đăng ký một URL để nhận sự kiện ngay khi chúng xảy ra, và biết trước ba điều sẽ làm bạn bất ngờ.
Quản lý → Cài đặt → Webhook (en: Manage → Settings → Webhooks).
"Đăng ký một URL để nhận sự kiện ngay khi chúng xảy ra, thay vì phải liên tục hỏi lại API."
Đây là lý do một cửa hàng với tới được qua API thay vì bằng một vòng lặp hỏi liên tục. Một agency vận hành năm mươi cửa hàng đăng ký năm mươi lần bằng năm mươi lời gọi, thay vì bấm qua năm mươi màn hình cài đặt.
Thêm một điểm nhận
Thêm điểm nhận (en: New endpoint).
URL điểm nhận — địa chỉ hệ thống của bạn, ví dụ
https://example.com/hooks/web-builder.
Mô tả — nhãn nội bộ, ví dụ "Đồng bộ đơn hàng sang hệ thống kho".
Sự kiện — chọn ít nhất một. Có mười một loại:
| Sự kiện | Kích hoạt khi |
|---|---|
order.created |
Một đơn hàng được đặt |
order.updated |
Trạng thái, thanh toán hoặc giao hàng của một đơn thay đổi |
customer.created |
Một khách hàng được thêm |
customer.updated |
Một hồ sơ khách hàng thay đổi |
product.created |
Một sản phẩm được tạo |
product.updated |
Một sản phẩm thay đổi |
product.deleted |
Một sản phẩm bị gỡ |
page.published |
Một trang lên sóng |
course.enrolled |
Một học viên được cấp quyền học |
course.revoked |
Quyền học bị thu hồi |
form.submitted |
Một lượt gửi biểu mẫu được lưu lại |
form.submitted phát cho mọi lượt gửi đã lưu của mọi biểu mẫu trên site —
liên hệ, đặt hàng, đặt lịch — không bao giờ cho một lượt bị từ chối. Payload
đầy đủ và cách nó nối với hành động trong trình dựng nằm ở
Hành động của biểu mẫu.
Hai sự kiện áp chót thuộc Ứng dụng Khoá học, và đi thành cặp là cố ý: một tích hợp chỉ nghe cấp quyền sẽ giữ mãi một học viên đã hoàn tiền trong hệ thống học của bạn, và nó không cách nào hỏi ra "sự vắng mặt" của một thứ.
Bật — công tắc.
Một điểm nhận không đăng ký sự kiện nào sẽ không bao giờ kích hoạt, mà cũng chẳng có lỗi nào để bạn nhận ra — nên biểu mẫu bắt buộc chọn ít nhất một.
Ba điều sẽ làm bạn bất ngờ
1. Chuỗi bí mật ký chỉ hiện sau khi lưu — và chỉ cho người có quyền sửa
"Chuỗi bí mật ký chỉ hiện ra sau khi bạn lưu." Cần lại sau đó thì mở menu của điểm nhận: Xem lại chuỗi bí mật ký đưa ra đúng chuỗi cũ, Đổi chuỗi bí mật ký tạo chuỗi mới — và "chuỗi bí mật hiện tại sẽ ngừng hoạt động ngay lập tức", nên đổi xong phải cập nhật bên nhận trước khi sự kiện kế tiếp tới.
Cả ba đường — lúc tạo, xem lại, đổi — đều đòi quyền sửa webhook. Danh sách
và trang chi tiết không bao giờ mang chuỗi bí mật, kể cả một ô rỗng, vì
webhooks.read với tới cả vai trò thấp nhất trên một cửa hàng — và một người
chỉ được xem mà đọc được khoá ký thì giả mạo được các lần gửi vào chính hệ
thống của bạn.
2. Trùng lặp sẽ xảy ra
Việc gửi là ít nhất một lần, không bao giờ đúng một lần. Một lần gửi mà nền tảng tin là thất bại — timeout, đứt kết nối, một mã 5xx — được gửi lại toàn bộ, kể cả khi hệ thống của bạn đã xử lý xong và chỉ có phản hồi quay về là bị mất.
Nếu bên nhận biến thẳng order.created thành một lần tính tiền, một email hay
một lần trừ kho mà không kiểm gì trước, sớm muộn nó sẽ làm việc đó hai lần.
Cách chống: mỗi lần gửi mang một id giữ nguyên qua mọi lần thử (cũng là
header X-WB-Event-Id). Ghi lại những id đã xử lý, và cho một lần lặp lại đi
qua mà không làm gì.
3. Không có thứ tự
Các lần gửi đi ra theo thứ tự chúng đến hạn, không phải theo thứ tự sự kiện đã xảy ra. Một lần thử lại nằm chờ sau khoảng lùi của nó, nên một sự kiện mới hơn của cùng tài nguyên có thể tới trước.
Đừng suy ra trình tự từ thứ tự nhận. Cần trình tự thì đọc updatedAt của chính
tài nguyên đó.
Trạng thái
| Trạng thái | Nghĩa là |
|---|---|
| Đang hoạt động | Bình thường |
| Đã tắt | Bạn đã tắt công tắc |
| Đang lỗi | Ba lần gửi thất bại liên tiếp |
Đang lỗi không có nghĩa là hỏng hẳn: "Vẫn đang thử lại — chỉ cần một lần thành công là hết trạng thái này."
Lịch thử lại có bảy lần, trải khoảng 32,6 giờ: ngay lập tức, +1 phút, +5 phút, +30 phút, +2 giờ, +6 giờ, +24 giờ. Đủ dài để sống qua một lần deploy, một chứng chỉ hết hạn hay một đêm sự cố; đủ ngắn để tuần sau không còn gì đang được thử lại. Hết bảy lần, lần gửi đó vào trạng thái Đã bỏ.
Một điểm nhận không bị tắt vì chuyện này — nó vẫn nhận sự kiện mới, bởi một tích hợp tự quay lại được thì nên tự bắt kịp, chứ không nên bị âm thầm tắt đi.
Kiểm tra xem nó có chạy không
Gửi sự kiện thử (en: Send test event) bắn một lần gửi thật vào URL của bạn.
Xem lịch sử gửi (en: View deliveries) hiện các lần thử gần nhất kèm mã trạng thái và lỗi; mỗi lần là Đang chờ, Đã gửi hay Đã bỏ. Cột Lần thành công gần nhất trong danh sách trả lời nhanh câu "nó còn sống không".
Lịch sử gửi không bao giờ chứa payload. Cần biết chính xác cái gì đã được gửi thì cái phong bì bên nhận của bạn đã nhận chính là nó.
URL bị chặn
Một URL trỏ vào địa chỉ nội bộ, loopback hay link-local bị từ chối ngay với
400 blocked_url. Địa chỉ còn được kiểm lại một lần nữa lúc mở kết nối, vì
câu trả lời DNS của một tên miền có thể đổi sau lần kiểm đầu — và chuyển hướng
thì không bao giờ được đi theo.
Không phải gỡ rối gì cả: câu trả lời tới ngay lập tức.
Chỉ xem
Vai trò của bạn chỉ có webhooks.read thì màn hình nói rõ: "Bạn có thể xem
các điểm nhận đã đăng ký, nhưng không thể tạo hoặc thay đổi."
Xác minh chữ ký
Mỗi lần gửi mang X-WB-Signature, cùng X-WB-Timestamp, X-WB-Event-Id,
X-WB-Event-Type và X-WB-Attempt. Cách kiểm — kể cả chi tiết dễ sai nhất
(chuỗi được ký dùng giây Unix, không phải giá trị RFC3339 trong header) —
nằm ở API công khai.
Cập nhật 26/9/2026