POST tới URL webhook của bạn. Webhook có chữ ký HMAC, cơ chế retry và khoá idempotency.
Luồng gửi
Headers
Mọi payload dùng chung envelope:
Webhook payload không có envelope
{statusCode, data, timestamp} như response REST — gửi raw object.Event và payload
Danh mục event
Mỗi event gửi khi nào, không gửi khi nào, thứ tự trong một quy trình.
Payload tham chiếu
Từng trường của
data, ví dụ JSON, và block relatedParties.Payload — webhook.test
Event kiểm thử kết nối, bắn khi quản trị viên bấm Test hoặc khi bạn gọi API ở mục dưới. Dùng để nghiệm thu endpoint: URL, TLS, secret, và bạn có trả 2xx không.
Khác biệt so với event thật
Tự bắn ping qua API
Hệ thống gửiwebhook.test tới webhook đã đăng ký của tổ chức bạn — giống hệt khi quản trị viên bấm Test.
partner-login, gọi vào đây sẽ nhận 401.
requestPayload / requestHeaders là đúng những gì đã gửi, dùng để đối chiếu khi chữ ký lệch. httpStatus: 0 = không kết nối được hoặc quá 10 giây.
Request thực tế gửi đi
Tự kiểm thử bằng curl
Không cần chờ quản trị viên bấm Test: tự bắn một request giống hệt vào endpoint của bạn. Copy nguyên khối dưới đây, sửa đúng 2 dòng đầu, dán vào terminal (bash hoặc zsh; macOS và Linux đều chạy).HTTP/1.1 2xx. TARGET_URL là endpoint của chính bạn, không phải endpoint của econtractid.
Chưa dựng xong endpoint?
chu_ky_hop_le=True là HMAC hai bên khớp. Sandbox /api/webhook-test/{tag} chỉ ghi lại request và luôn trả 201.
Vector kiểm chứng chữ ký
Kiểm tra hàm HMAC của bạn không cần gọi mạng. Body mẫu ở trên, secretwhsec_demo_secret → chữ ký bắt buộc phải ra:
Cách phản hồi
Vẫn xác thực HMAC như event thật, rồi trả200 mà không chạy nghiệp vụ.
Đọc kết quả
Uỷ quyền gửi email
Áp dụng cho 4 event có email tương ứng:task_assigned_internal, task_assigned_external, task_rejected, process_finished. notification.task_completed không có email nào của econtractid đi kèm nên không thuộc cơ chế này.
Mặc định econtractid gửi email cho tất cả người nhận. Khi bật uỷ quyền, econtractid ngừng gửi email cho người nhận bên ngoài — nhưng chỉ khi thoả cả hai điều kiện:
- Event nằm trong danh sách uỷ quyền của tổ chức (quản trị viên cấu hình)
- Tổ chức có ít nhất một webhook subscription đang hoạt động lắng nghe event đó
Xác thực chữ ký
Retry
Nếu hệ thống của bạn trả về mã khác2xx hoặc timeout (10 giây), hệ thống sẽ gửi lại:
Sau lần thứ 6 thất bại, event được đánh dấu
EXHAUSTED. Bạn khôi phục bằng cách gọi GET /integration/documents/{documentId}.

