Xử lý lỗi chuyên nghiệp với Error Workflow

Đã có bao giờ bạn tự hỏi: Workflow đang chạy mà gặp lỗi thì sao?

Hãy tưởng tượng bạn đang điều hành một cửa hàng online với hàng nghìn đơn hàng mỗi ngày. Workflow tự động của bạn đang chạy êm ru: nhận đơn hàng → kiểm tra kho → gửi email xác nhận → cập nhật kho -> gửi báo cáo.

Nhưng rồi một ngày, hệ thống thanh toán bị sập, server nhập kho quá tải, hoặc đơn giản là bạn... quên gia hạn Google Workspace nên không gửi được email.

Hậu quả: Workflow chết ngắt trong, lặng lẽ, đơn hàng bị treo, khách hàng phàn nàn... và bạn chỉ phát hiện ra vấn đề sau vài giờ!

Đó chính là lý do tại sao chúng ta cần học cách phát hiện, xử lý lỗi chuyên nghiệp với Error Workflow.

error_workflow

Tại sao workflow lại gặp lỗi?

Trong thế giới tự động hóa, khi chạy một qui trình trong thời gian dài, chắc chắn sẽ có lỗi to hoặc nhỏ xảy ra.

Có khá nhiều nguyên nhân phổ biến:

1. Lỗi sai cấu hình Node

Đây là loại lỗi phổ biến nhất, thường xảy ra khi:

  • API Key không hợp lệ, hết hạn hoặc hết tiền
  • Điền thiếu hoặc sai trường dữ liệu (ví dụ: field 'email' bị trống)
  • Tài khoản bị khoá hoặc bị chặn

Ví dụ: Bạn thay đổi Google Sheets ID để chứa order khách hàng, nhưng quên cập nhật trong workflow => Lỗi, không đọc được dữ liệu từ Google Sheets.

2. Dịch vụ bên thứ ba gặp sự cố

Khi tích hợp với các dịch vụ bên ngoài, khi hệ thống của họ "hắt hơi sổ mũi", hệ thống của bạn sẽ bị ảnh hưởng theo:

  • Slack đang bảo trì
  • Gmail vượt quá giới hạn số lượng email gửi mỗi ngày
  • Shopify API tạm thời bị lỗi

Câu chuyện thực tế: Cách đây vài tháng (giữa 2025), Amazon AWS bị sập, gây ra rất nhiều vấn đề cho các dịch vụ sử dụng AWS như Vercel...

aws

3. Dữ liệu đầu vào bị sai

Workflow của bạn có thể hoạt động hoàn hảo với dữ liệu chuẩn, nhưng gặp vấn đề khi nhận dữ liệu lạ (khách hàng điền sai), hoặc bên thứ ba thay đổi dữ liệu trả về:

// Bình thường:
{"name": "Nguyen Van A", "phone": "0901234567"}

// Dữ liệu lỗi:
{"name": "", "phone": null}

// Thay đổi kiểu dữ liệu
{"first_name": "Nguyen", "last_name": "Van A", "phoneNumber": "0901234567"}

4. Giới hạn hệ thống

Đôi khi, workflow của bạn chạy ổn, nhưng do server (máy chủ nơi bạn host n8n) bị quá tải, workflow cũng sập theo

  • Hết bộ nhớ RAM khi xử lý file lớn
  • Timeout vì API phản hồi quá chậm
  • CPU quá tải vì phải chạy task AI, encode video...

Vậy phải làm sao?

Để giải quyết, trước tiên chúng ta phải biết khi nào workflow bị lỗi, nguyên nhân lỗi do node nào gây ra.

Đặc biệt, ta cần nhận thông báo ngay lập tức khi có lỗi xảy ra.

Để làm được điều này, chúng ta sẽ sử dụng Error WorkflowError Trigger Node.

Error Workflow là gì?

Error Workflow là một workflow đặc biệt, được tự động kích hoạt khi workflow chính của bạn gặp lỗi. Nó giống như một đội cứu hộ luôn theo dõi và sẵn sàng hành động.

Nếu không có Error Workflow, bạn sẽ phải thường xuyên đăng nhập vào n8n, sau đó kiểm tra Execution Log để xem workflow có lỗi không.

Thay vào đó, nếu dùng Error Workflow, bạn sẽ có thể:

1. Phát hiện lỗi ngay lập tức

Khi workflow gặp lỗi, bạn sẽ nhận được thông báo ngay trong vài giây thay vì phải tự mình kiểm tra log:

CẢNH BÁO: Workflow "Xử lý đơn hàng" vừa gặp sự cố!

Lỗi: Google Sheets API quota exceeded

Thời gian: 14:35 ngày 26/08/2025

Hành động: Cần kiểm tra và xử lý

2. Phản ứng tự động

Bạn có thể thiết lập các hành động tự động khi có lỗi:

  • Gửi thông báo qua email, Slack, hoặc Telegram
  • Lưu thông tin lỗi vào Google Sheets hoặc database
  • Chạy lại workflow sau một khoảng thời gian
  • Chuyển sang phương án dự phòng (backup)

3. Theo dõi và phân tích

Error Workflow cũng có thể giúp bạn ghi lại lịch sử các lỗi để phân tích và cải thiện:

  • API nào hay gặp vấn đề nhất?
  • Lỗi thường xảy ra vào thời điểm nào trong ngày?
  • Những loại lỗi nào có thể tự động xử lý được?

error_workflow

Error Trigger Node - Trái tim của Error Workflow

Để Error Workflow hoạt động, bạn cần một Trigger Node đặc biệt làm điểm khởi đầu: Error Trigger Node.

error_trigger_node

Error Trigger Node có những đặc điểm đặc biệt khác với các trigger node thông thường:

1. Tự động kích hoạt khi có lỗi

Khác với webhook hay schedule trigger cần cấu hình, Error Trigger tự động "lắng nghe" và kích hoạt khi bất kỳ workflow nào gặp lỗi:

Workflow "Đồng bộ đơn hàng" gặp lỗi
     ↓
Error Trigger được kích hoạt
     ↓
Thực hiện các hành động xử lý lỗi

Để gắn Error Workflow vào workflow đang có, bạn chỉ cần chọn Error Workflow trong phần Settings của workflow đó là xong.

select_workflow

2. Không cần cấu hình phức tạp

Error Trigger là node đơn giản nhất trong n8n:

  • ❌ Không cần URL webhook
  • ❌ Không cần thiết lập Credential
  • ❌ Không cần đặt lịch (Schedule)
  • ✅ Chỉ cần thêm vào workflow → Tự động hoạt động!

3. Cung cấp thông tin lỗi chi tiết

Khi được kích hoạt, Error Trigger sẽ cung cấp đầy đủ thông tin về lỗi để bạn xử lý:

  • Thông báo lỗi cụ thể (message hệ thống, stack trace, etc.)
  • Tên workflow gặp lỗi, node nào gặp lỗi
  • Thời gian xảy ra lỗi
  • Link để xem chi tiết execution

Dữ liệu từ Error Trigger

Khi có lỗi, Error Trigger sẽ cung cấp một đối tượng JSON chứa đầy đủ thông tin về lỗi.

Trường hợp 1: Lỗi ở giữa workflow

Khi một node trong workflow gặp lỗi (API timeout, authentication fail, v.v.), Error Trigger sẽ cung cấp dữ liệu như sau:

{
  "execution": {
    "id": "exec_123456",
    "url": "https://n8n.yourdomain.com/execution/123456",
    "retryOf": null,
    "error": {
      "message": "HTTP request failed: 404 Not Found",
      "stack": "Error: Request failed with status code 404\n    at HTTPRequestNode.execute..."
    },
    "lastNodeExecuted": "Get Customer Data",
    "mode": "webhook"
  },
  "workflow": {
    "id": "wf_789",
    "name": "Xử lý đơn hàng Shopee"
  }
}

Giải thích các trường dữ liệu quan trọng

Trường Ý nghĩa Ví dụ
execution.id ID của lần chạy workflow exec_123456
execution.url Link để xem chi tiết execution URL đến trang execution details
execution.error.message Thông báo lỗi HTTP request failed: 404 Not Found
lastNodeExecuted Node cuối cùng được thực thi Get Customer Data
workflow.name Tên workflow gặp lỗi Xử lý đơn hàng Shopee

Trường hợp 2: Lỗi ở Trigger Node

Khi Trigger Node chính bị lỗi (webhook sai, credential hết hạn), cấu trúc dữ liệu sẽ khác một chút:

{
  "trigger": {
    "error": {
      "name": "WebhookActivationError",
      "message": "Invalid webhook signature",
      "timestamp": 1693036800000
    },
    "mode": "trigger"
  },
  "workflow": {
    "name": "Nhận đơn hàng từ website"
  }
}

Tạm kết

Ok, lý thuyết vậy cũng tạm đủ rồi! Ở bài sau, chúng ta sẽ cùng nhau xây dựng một Error Workflow hoàn chỉnh để báo lỗi nhé.

Các bạn nên làm theo, để sau này tái sử dụng error workflow này cho các workflow đã có của mình nhé!

Tài liệu tham khảo

Facebook Messenger

fb.com/toidicodedao

Email Support

[email protected]

Telegram

t.me/hoccodeai