n8n Error Handling: Xử Lý Lỗi Workflow Như Chuyên Gia
Workflow chạy tốt trong môi trường test — rồi crash lúc 2 giờ sáng khi có đơn hàng quan trọng. API third-party timeout, data format sai, rate limit vượt ngưỡng. Đây là hướng dẫn xây dựng hệ thống 3 lớp xử lý lỗi để workflow của bạn production-ready thực sự.
Tại Sao Workflow "Hoàn Hảo" Lại Bị Lỗi?
Trong môi trường development, workflow chạy với dữ liệu sạch, API phản hồi nhanh, không ai dùng hệ thống cùng lúc. Production khác hoàn toàn.
Shopee API có SLA 99.5% — nghĩa là có thể down 43 giờ/năm. Zalo OA API rate limit 1000 requests/phút. Khi vượt ngưỡng, toàn bộ workflow fail.
Khách nhập số điện thoại "0912 345 678" thay vì "0912345678". Ngày tháng "15-04" thay vì "2026-04-15". Workflow không xử lý edge case sẽ crash.
Field không bắt buộc bị bỏ trống. Webhook payload thiếu field. Response API thay đổi format. Tất cả dẫn đến null reference error.
Hai workflow chạy cùng lúc cùng xử lý một record trong Sheet — conflict và ghi đè lẫn nhau.
3 Loại Error Node Trong n8n
1. Retry On Fail
Cài đặt đơn giản nhất: khi node fail, thử lại tự động. Không cần thêm node mới. Chỉ cần vào node settings → “Retry On Fail”.
Phù hợp cho: API call có thể bị lỗi tạm thời (timeout, rate limit, network glitch). Không phù hợp cho lỗi logic (data sai format — retry 100 lần vẫn fail).
2. Try/Catch (Error Output)
Mỗi node trong n8n có output bình thường và output lỗi. Kết nối “error output” vào một nhánh xử lý lỗi — workflow tiếp tục thay vì dừng lại.
Phù hợp cho: xử lý lỗi inline, tiếp tục workflow theo nhánh dự phòng, gửi dữ liệu sang hàng đợi để xử lý sau.
3. Error Trigger Workflow
Một workflow riêng biệt chỉ chạy khi workflow khác fail. Nhận thông tin đầy đủ về lỗi: tên workflow, tên node, error message, timestamp, input data.
Phù hợp cho: monitoring tập trung, alert Telegram/Slack, logging vào Sheet.
| Phương pháp | Khi nào dùng | Ưu điểm | Nhược điểm |
|---|---|---|---|
| Retry On Fail | API lỗi tạm thời | Đơn giản, built-in | Không xử lý được lỗi logic |
| Error Output | Cần fallback inline | Workflow tiếp tục chạy | Phức tạp hơn, nhiều nhánh |
| Error Trigger | Monitoring tập trung | Bắt tất cả lỗi mọi workflow | Cần setup thêm workflow riêng |
| Stop & Error node | Cần dừng có kiểm soát | Rõ ràng, có message custom | Workflow dừng hoàn toàn |
Retry và Exponential Backoff
Retry đơn giản (retry mỗi 1 giây) có thể làm nghiêm trọng hơn vấn đề rate limit. Exponential backoff là giải pháp: mỗi lần retry, đợi lâu hơn lần trước theo cấp số nhân.
// n8n Expression để tính exponential backoff delay// Trong node Settings > Retry on Fail > Wait Between Retries// Lần 1: 1 giây// Lần 2: 2 giây// Lần 3: 4 giây// Lần 4: 8 giây// Lần 5: 16 giây{{ Math.pow(2, $runIndex) * 1000 }}
Click node → Settings (tab) → Toggle 'Retry On Fail' → Set max tries: 3-5
Dùng expression {{ Math.pow(2, $runIndex) * 1000 }} để có delay 1s, 2s, 4s, 8s...
Kéo từ dấu X đỏ của node → kết nối vào Set node ghi log lỗi
Dùng HTTP Request node với URL sai để test retry hoạt động đúng
Error Trigger Workflow — Monitoring Tập Trung
Error Trigger là workflow đặc biệt: thay vì có trigger thông thường (webhook, schedule), nó được kích hoạt tự động mỗi khi một workflow khác trong n8n instance bị lỗi.
Trong n8n → New Workflow → Add node → tìm 'Error Trigger'. Workflow này sẽ nhận data từ mọi workflow fail.
Vào Settings của n8n instance → chỉ định Error Trigger workflow. Chỉ cần làm một lần cho toàn bộ instance.
Format message bao gồm: tên workflow, error message, tên node, timestamp, link đến execution để debug.
Append vào Sheet theo dõi lỗi: ngày, workflow, node, message, trạng thái xử lý.
// Expression trong Error Trigger để format thông báo lỗi// Dùng trong Telegram/Slack notification nodeWorkflow lỗi: {{ $json.workflow.name }}Error: {{ $json.execution.error.message }}Node: {{ $json.execution.error.node.name }}Thời gian: {{ DateTime.now().setZone('Asia/Ho_Chi_Minh').toFormat('dd/MM HH:mm') }}Link: https://your-n8n.com/workflow/{{ $json.workflow.id }}
- ✗Workflow fail lúc 2:00 sáng
- ✗Không ai biết cho đến sáng hôm sau
- ✗Đơn hàng bị miss, khách hàng phàn nàn
- ✗Debug mất 2-3 giờ vì không có log
- ✗Không biết lỗi xảy ra bao nhiêu lần
- ✓Workflow fail lúc 2:00 sáng
- ✓Telegram alert đến trong 10 giây
- ✓Link debug trực tiếp đến execution
- ✓Log đầy đủ trong Google Sheet
- ✓SLA: phát hiện và xử lý trong 30 phút
Logging Lỗi Vào Google Sheet
Telegram alert cho real-time awareness. Google Sheet cho historical analysis và pattern recognition. Kết hợp cả hai cho error handling toàn diện.
// Data để log vào Google Sheet// Dùng trong Google Sheets node sau khi bắt error[{"timestamp": "{{ DateTime.now().setZone('Asia/Ho_Chi_Minh').toISO() }}","workflow_name": "{{ $workflow.name }}","node_name": "{{ $node.name }}","error_message": "{{ $json.error.message }}","input_data": "{{ JSON.stringify($input.first().json).slice(0, 500) }}","status": "failed"}]
Timestamp | Workflow | Node | Error Message | Input Data | Status | Resolved By | Resolved At
Dùng Google Sheets node → Append Row. Truncate input_data nếu quá dài (500 chars) để tránh quota.
Default: 'failed'. Sau khi fix: update thành 'resolved'. Dễ dàng filter lỗi chưa xử lý.
Filter theo workflow, ngày, loại lỗi. Google Sheets free tier đủ cho hầu hết SME.
Hệ Thống 3 Lớp Xử Lý Lỗi — Production-Ready
Đây là architecture đầy đủ cho workflow chạy production:
Validate input data trước khi xử lý. Kiểm tra null/undefined. Format chuẩn hóa số điện thoại, ngày tháng. Lỗi này không cần retry — xử lý ngay.
Retry với exponential backoff cho API lỗi tạm thời. Error Output node cho fallback logic. Queue để xử lý sau nếu cần.
Error Trigger workflow → Telegram alert + Google Sheet log. Dashboard theo dõi error rate theo thời gian. Weekly review để tìm pattern.
Câu Hỏi Thường Gặp
Try/Catch: khi bạn muốn bắt lỗi trong một node cụ thể và xử lý inline (tiếp tục workflow theo nhánh khác). Error Trigger: khi bạn muốn một workflow riêng biệt chạy khi BẤT KỲ workflow nào khác bị lỗi — tốt cho monitoring tập trung.
Retry On Fail là thử lại cùng node đó sau khoảng thời gian nhất định (1-5 lần). Nếu vẫn thất bại sau hết retry thì workflow mới throw error. Error Trigger chỉ chạy khi workflow đã thực sự fail (hết retry). Nên dùng cả hai cùng nhau.
Mặc định n8n lưu execution log không giới hạn (cho đến khi hết disk). Nên set giới hạn trong Settings → Executions → Prune execution data. Khuyến nghị: 30 ngày cho workflow bình thường, 7 ngày cho workflow có dữ liệu nhạy cảm.
Nguyên nhân phổ biến: (1) Error Trigger workflow chưa được active, (2) Error Trigger workflow cũng đang bị lỗi (vòng lặp lỗi), (3) Webhook URL trong Error Trigger không đúng, (4) n8n chưa được cấu hình Error Workflow trong Settings.
Có. Trong n8n, thêm một node Set với giá trị không hợp lệ, hoặc dùng HTTP Request node với URL sai, rồi chạy thủ công. Hoặc dùng n8n CLI: n8n execute --id [workflow-id] để trigger và quan sát Error Trigger workflow nhận event.
Production-Ready Checklist
Ít nhất 3 lần retry, tốt nhất dùng exponential backoff expression.
Không để node có error output treo lơ lửng không kết nối — đây là lỗi thầm lặng.
Kiểm tra Settings → đã set Error Workflow chưa. Test bằng cách tạo lỗi thủ công.
Check Sheet sau khi test error — dữ liệu có vào đúng không.
Test end-to-end: tạo lỗi → nhận thông báo. Đo thời gian phản hồi.
Kiểm tra required fields, format, size limits trước khi xử lý.
Đặt lịch workflow audit miễn phí — mình sẽ review error handling của các workflow hiện tại và chỉ ra điểm yếu cần fix trước.
Đặt lịch audit miễn phí →Sẵn sàng tự động hóa?
Đặt lịch audit miễn phí 30 phút — mình sẽ phân tích quy trình của bạn và đưa ra lộ trình cụ thể. Hoặc làm quiz 2 phút để biết mức độ sẵn sàng.