Webhook cho Zapier, Make và n8n
Đẩy sự kiện từ Hạ Tầng, như đơn mới, khoản thanh toán đã nhận hay hội thoại mới, sang Zapier, Make, n8n hoặc máy chủ của bạn ngay khi chúng xảy ra.
Cập nhật ngày
Trong bài này
Webhook báo cho một công cụ khác biết có chuyện vừa xảy ra trong Hạ Tầng, chỉ sau vài giây. Mỗi khi một sự kiện bạn đăng ký diễn ra (một đơn được thanh toán, khách mở cuộc hội thoại, tiền chuyển khoản về), Hạ Tầng gửi thông tin chi tiết tới một địa chỉ do bạn chọn.
Với công cụ no-code như Zapier, Make hay n8n, chừng đó đủ để dựng các quy trình tự động hữu ích mà không cần lập trình viên:
- Thêm mỗi đơn đã thanh toán thành một dòng trong Google Sheets.
- Báo vào nhóm chat của đội khi khách đánh giá 1 sao.
- Tạo liên hệ trong CRM bán hàng khi có hội thoại mới.
- Báo cho phần mềm kế toán mỗi khoản chuyển khoản nhận được.
Bạn cần quyền Developer (API key, webhook), chủ sở hữu và quản trị viên luôn có quyền này.
Thêm webhook
- Trong công cụ no-code, tạo một bước kích hoạt nhận webhook và chép URL của nó:
- Zapier: Webhooks by Zapier → Catch Hook.
- Make: Webhooks → Custom webhook.
- n8n: node Webhook với phương thức POST (dùng production URL khi workflow đã bật).
- Trong Hạ Tầng, mở Cài đặt → Webhooks.
- Dán URL vào ô trên cùng.
- Đánh dấu các sự kiện bạn cần và bỏ các sự kiện khác. Vài sự kiện hay dùng đã được chọn sẵn.
- Bấm Thêm endpoint.

Trang của endpoint mở ra và hiện Secret ký (chỉ hiển thị một lần):. Hãy chép lại nếu lập trình viên sẽ kiểm tra chữ ký; secret không hiện lại nữa.
Để thử, cho sự kiện xảy ra một lần (ví dụ tạo một đơn thử trong hội thoại), rồi xem mục Lượt gửi trên trang endpoint và dữ liệu nhận được trong công cụ của bạn.
Chọn sự kiện nào
Chỉ đăng ký những gì quy trình cần: mỗi sự kiện là một lần gửi, và nhiều công cụ tính số lần gửi vào gói cước của bạn.
| Sự kiện | Gửi khi |
|---|---|
chat.conversation.created |
Khách mở cuộc hội thoại mới, trên bất kỳ kênh nào |
chat.message.created |
Có tin nhắn trong hội thoại (của khách, nhân viên hoặc bot) |
chat.conversation.resolved |
Hội thoại được xử lý xong |
chat.order.created, chat.order.paid |
Đơn hàng được tạo; tiền của đơn về |
chat.rating.created |
Khách đánh giá cuộc hội thoại |
chat.ticket.created, chat.ticket.breached |
Phiếu hỗ trợ được mở; phiếu quá hạn SLA |
payment.succeeded, transaction.received |
Khoản thanh toán hoàn tất; tiền về tài khoản ngân hàng đã liên kết |
invoice.issued, invoice.failed |
Hoá đơn điện tử được phát hành, hoặc bị lỗi |
email.delivered, email.bounced |
Email tới hộp thư, hoặc bị trả lại |
Danh sách đầy đủ, cùng nội dung của từng sự kiện, nằm trong tài liệu sự kiện webhook.
Hạ Tầng gửi gì
Mỗi sự kiện là một yêu cầu HTTP POST với nội dung JSON:
{
"type": "chat.order.paid",
"created_at": "2026-10-24T08:15:00.000Z",
"data": { "code": "DH000014", "total": 2530000, "payment_status": "paid", "...": "..." }
}
Trong Zapier, Make hay n8n, phần data hiện thành các trường để bạn đưa vào bước tiếp theo: mã đơn, tổng tiền, tên và số điện thoại người nhận, v.v.
Mỗi yêu cầu còn kèm các header chữ ký (webhook-id, webhook-timestamp, webhook-signature, và cùng giá trị đó dưới tên svix-*). Lập trình viên dùng chúng cùng secret ký để chứng minh yêu cầu thật sự đến từ Hạ Tầng. Công cụ no-code thường bỏ qua bước này, nên hãy giữ kín URL webhook: ai có URL đều gửi được dữ liệu giả vào đó. Cách kiểm tra chữ ký có trong hướng dẫn webhook dành cho lập trình viên.
Lượt gửi, gửi lại tự động và gửi lại bằng tay
Trang endpoint liệt kê mọi Lượt gửi: sự kiện, Trạng thái, số Lần thử, Phản hồi công cụ của bạn trả về và thời gian phản hồi, cùng Thử lại lúc. Bấm vào tên sự kiện để xem dữ liệu đã gửi và câu trả lời nhận được.
- Công cụ của bạn phải trả lời mã 2xx trong vòng 15 giây.
- Nếu không, Hạ Tầng thử lại sau 5 giây, 5 phút, 30 phút, 2 giờ, 5 giờ, 10 giờ và 10 giờ. Sau đó lượt gửi chuyển sang Hết lượt thử.
- Gửi lại gửi lại một lượt với cùng
webhook-id, để công cụ của bạn nhận ra đó là bản lặp.

Quản lý endpoint
Trên trang endpoint:
- Tắt dừng endpoint: không gửi gì nữa, các lượt đang chờ thử lại bị bỏ. Bật cho endpoint nhận lại sự kiện mới.
- Đổi secret tạo secret ký mới, chỉ hiện một lần. Trong 24 giờ sau đó, yêu cầu được ký bằng cả secret cũ và mới, để lập trình viên có thời gian chuyển.
- Xoá xoá endpoint và dừng mọi lượt gửi của nó.
Muốn đổi sự kiện, hãy thêm endpoint mới với đúng sự kiện rồi xoá endpoint cũ.
Xử lý sự cố
| Hiện tượng | Nguyên nhân | Cách xử lý |
|---|---|---|
| Báo lỗi "endpoint: Internal hosts are not allowed" | URL trỏ tới localhost hoặc mạng nội bộ |
Dùng địa chỉ công khai. Muốn thử trên máy mình, dùng dịch vụ tunnel |
| Lượt gửi Thất bại với mã HTTP 404 hoặc 410 | Workflow no-code đang tắt, hoặc URL đã đổi | Bật workflow, hoặc thêm URL mới làm endpoint |
| Lượt gửi bị quá thời gian | Công cụ trả lời lâu hơn 15 giây | Trả lời trước, để phần việc chậm cho bước sau |
| Không nhận được gì | Chưa chọn sự kiện đó, hoặc endpoint đang tắt | Xem dòng Đã đăng ký: đầu trang endpoint và trạng thái của nó |
| Một sự kiện tới hai lần | Lần thử lại hoặc gửi lại sau khi trả lời chậm | Lọc trùng theo header webhook-id |
Bài viết này có giúp ích cho bạn không?
Bài viết liên quan
- API keyTạo khoá để phần mềm của lập trình viên dùng Hạ Tầng, chỉ cấp cho mỗi khoá đúng quyền nó cần, và thu hồi ngay khoá bị lộ.
- Ứng dụng và tích hợpTìm mọi ứng dụng Hạ Tầng ở trang Ứng dụng, và xem các cách nối Hạ Tầng với website, cửa hàng, ứng dụng di động và các công cụ bạn đang dùng.
- Tạo và quản lý đơn hàngLên đơn ngay trong cuộc hội thoại, gửi đơn cho khách dưới dạng thẻ, và theo dõi mọi đơn từ lúc mới tạo tới khi giao xong trong một danh sách.
- Giao dịch và cách khớp lệnhHạ Tầng đọc nội dung chuyển khoản thế nào để tìm thanh toán hay đơn hàng tương ứng, chuyện gì xảy ra khi khách quên ghi mã, và xử lý tiền về chưa khớp ra sao.
Chưa tìm thấy điều bạn cần?
Đội ngũ của chúng tôi trả lời qua chat, bằng tiếng Việt hoặc tiếng Anh.
Bạn đang tích hợp API hoặc SDK? Xem tài liệu cho lập trình viên →