Webhook là gì?
Webhook là một cơ chế cho phép ứng dụng gửi dữ liệu real-time đến một URL khi có sự kiện xảy ra. Thay vì phải liên tục hỏi (polling) “có gì mới không?”, webhook sẽ tự động “đẩy” thông tin đến hệ thống của bạn ngay lập tức. Đây là nền tảng của tự động hóa hiện đại.
Trong n8n, Webhook node là một trong những trigger phổ biến nhất. Nó cho phép workflow của bạn nhận dữ liệu từ bất kỳ ứng dụng nào hỗ trợ webhook — từ form submit, payment gateway, CRM, đến các hệ thống custom.
Webhook Trigger Node trong n8n
Cách hoạt động
Khi bạn tạo một Webhook node trong n8n, hệ thống sẽ cung cấp cho bạn một URL duy nhất. Bất kỳ HTTP request nào gửi đến URL này sẽ kích hoạt workflow chạy. Node hỗ trợ các HTTP methods:
- GET — nhận dữ liệu qua query parameters
- POST — nhận dữ liệu qua request body (phổ biến nhất)
- PUT — cập nhật dữ liệu
- DELETE — xóa dữ liệu
- HEAD/PATCH — các method bổ sung
Cấu hình Webhook Node
Các tùy chọn quan trọng khi cấu hình:
- HTTP Method: Chọn method phù hợp (thường là POST)
- Path: Đường dẫn tùy chỉnh (ví dụ: /form-submit, /payment-callback)
- Authentication: Basic Auth, Header Auth, hoặc None
- Response Mode: Immediately (trả về ngay) hoặc Last Node (chờ workflow hoàn tất)
- Response Code: HTTP status code trả về (200, 201, etc.)
Thiết lập Webhook đầu tiên — Step by step
Bước 1: Tạo workflow mới
Mở n8n editor, click “Add workflow” và đặt tên mô tả (ví dụ: “Form Contact Handler”).
Bước 2: Thêm Webhook node
Click dấu + và tìm “Webhook”. Kéo vào canvas. Cấu hình:
HTTP Method: POST
Path: /contact-form
Authentication: None (cho testing)
Response Mode: Immediately
Response Data: First Entry JSON
Bước 3: Test webhook
Click “Listen for Test Event” trên node. n8n sẽ hiển thị Test URL dạng:
https://your-n8n-domain.com/webhook-test/contact-form
Gửi request test bằng cURL:
curl -X POST https://your-n8n-domain.com/webhook-test/contact-form
-H "Content-Type: application/json"
-d '{"name": "Nguyen Van A", "email": "test@example.com", "message": "Xin chào"}'
Bước 4: Xử lý dữ liệu
Sau khi nhận data, bạn có thể thêm các node xử lý: gửi email, lưu Google Sheets, tạo task trong Notion, hoặc reply Telegram.
Production URL vs Test URL
n8n cung cấp 2 loại URL cho mỗi webhook:
| Loại | Khi nào dùng | Yêu cầu |
|---|---|---|
| Test URL | Khi đang phát triển, debug | Phải click “Listen for Test Event” |
| Production URL | Khi deploy thực tế | Workflow phải được Activate |
Lưu ý quan trọng: Production URL chỉ hoạt động khi workflow đã được bật (Active). Test URL chỉ hoạt động khi bạn đang ở chế độ listening trong editor.
Bảo mật Webhook
Basic Authentication
Thêm username/password để xác thực request:
Authentication: Basic Auth
User: my_webhook_user
Password: super_secret_password_123
Header Authentication
Kiểm tra header tùy chỉnh:
Authentication: Header Auth
Header Name: X-Webhook-Secret
Header Value: your-secret-token-here
IP Whitelist
Nếu biết IP nguồn gửi webhook, bạn có thể cấu hình firewall hoặc reverse proxy (Nginx/Caddy) chỉ cho phép IP đó truy cập endpoint.
5 ví dụ thực tế với Webhook
1. Form liên hệ website → Email + Sheets
Webhook nhận form submit → Function node format data → Gmail node gửi thông báo → Google Sheets node lưu trữ lead.
2. Stripe payment callback
Stripe gửi webhook khi thanh toán thành công → n8n xử lý → cập nhật trạng thái đơn hàng → gửi email xác nhận cho khách.
3. GitHub push notification
GitHub webhook khi có push mới → n8n trigger deployment script → thông báo team qua Telegram/Slack.
4. Chatbot webhook
Telegram Bot API gửi message đến webhook → n8n xử lý tin nhắn → gọi AI (OpenAI) → trả lời tự động.
5. WooCommerce new order
WooCommerce webhook “Order Created” → n8n nhận đơn hàng → tạo invoice PDF → gửi email + lưu Google Sheets.
Xử lý lỗi và Debug
Các lỗi phổ biến
- 404 Not Found: Workflow chưa được Activate (đang dùng Production URL) hoặc path sai
- Timeout: Workflow xử lý quá lâu — tăng timeout trong settings hoặc dùng Response Mode “Immediately”
- 401 Unauthorized: Sai credentials authentication
- 500 Internal Error: Lỗi trong workflow — kiểm tra execution log
Tips debug
- Luôn test với Test URL trước khi chuyển sang Production
- Sử dụng webhook.site để xem request thực tế
- Kiểm tra Execution Log trong n8n để xem data nhận được
- Đảm bảo Content-Type header đúng (application/json cho JSON data)
Webhook với n8n Self-hosted
Khi self-host n8n, bạn cần đảm bảo:
- Domain/subdomain trỏ đúng đến server n8n
- SSL certificate (Let’s Encrypt) để dùng HTTPS — nhiều service yêu cầu HTTPS cho webhook
- Port forwarding nếu n8n chạy sau NAT/firewall
- Biến môi trường
WEBHOOK_URLphải set đúng domain public
# docker-compose.yml
environment:
- WEBHOOK_URL=https://n8n.yourdomain.com/
- N8N_HOST=n8n.yourdomain.com
- N8N_PROTOCOL=https
Kết luận
Webhook là “cánh cổng” quan trọng nhất để kết nối n8n với thế giới bên ngoài. Một khi bạn thành thạo Webhook node, bạn có thể tích hợp n8n với hầu hết mọi ứng dụng — kể cả những app không có sẵn integration trong n8n. Hãy bắt đầu với một webhook đơn giản và mở rộng dần.
Tham khảo: n8n Documentation · GitHub n8n
Giao VPS cho chúng tôi — nhận n8n hoàn chỉnh trong ngày. Docker, SSL, backup, hỗ trợ sau setup.
Xem dịch vụ setup →