Webhook là cách hệ ngoài chủ động gọi tới URL của bạn khi có sự kiện, thay vì bạn phải liên tục hỏi (polling). Kiểu "reverse API" / "push callback" — vd SePay báo thanh toán thành công, GitHub báo có push.
Khi nhận webhook cần:
- Verify chữ ký: kiểm HMAC/secret trong header để chắc request đến từ nguồn thật, không phải kẻ giả mạo.
- Idempotent: nhà cung cấp có thể gửi lặp cùng một event → xử lý theo event_id để không tính hai lần.
- Trả 2xx nhanh: nhận rồi đẩy việc nặng vào queue xử lý sau; chậm quá bên gửi sẽ coi là lỗi và retry.
- Chịu được retry & sai thứ tự: event có thể đến trùng hoặc lệch thứ tự.