Sub-workflow trong n8n là một workflow con bắt đầu bằng trigger Execute Sub-workflow Trigger và được workflow chính gọi qua node Execute Sub-workflow. Cách nhanh nhất để tạo là chọn nhóm node trên canvas, chuột phải và chọn Convert to sub-workflow; n8n tự tạo workflow con và thay nhóm node bằng một node gọi.
Thay vì nhồi toàn bộ logic vào một workflow, bạn tách phần dùng chung ra workflow con để tái sử dụng và bảo trì dễ hơn. Bài này là một phần của loạt hướng dẫn tạo workflow trên n8n; nếu mới làm quen n8n, nên đọc bài đó trước.
Sub-workflow n8n là gì?
Sub-workflow là một workflow riêng, được gọi từ workflow chính (workflow cha) qua node Execute Sub-workflow. Phía workflow con, node đầu tiên là Execute Sub-workflow Trigger, trên canvas hiện tên “When Executed by Another Workflow”. Hiểu đơn giản, sub-workflow giống một “hàm” trong lập trình: nhận dữ liệu vào, xử lý, trả kết quả ra.
Ví dụ: workflow chính gửi email marketing; bạn tách phần lấy dữ liệu khách hàng từ API (xem cách gọi API trong n8n) thành sub-workflow, rồi gọi lại ở nhiều chiến dịch khác nhau.

Tại sao nên dùng sub-workflow?
- Tái sử dụng logic: không lặp lại cùng một đoạn xử lý ở nhiều nơi.
- Chia nhỏ chức năng: workflow chính ngắn gọn, dễ đọc; mỗi sub-workflow lo một việc.
- Bảo trì dễ: sửa logic trong sub-workflow một lần, mọi workflow gọi tới nó dùng bản mới.
- Dễ mở rộng: hệ thống có cấu trúc rõ khi số workflow tăng hoặc quy trình phức tạp hơn.
Cách 1: Chuyển nhóm node thành sub-workflow bằng Convert to sub-workflow
Từ n8n 1.97.0 (docs: Convert to sub-workflow), bạn không cần chép, dán node bằng tay:
- Mở workflow cha, chọn các node cần tách (kéo chuột quét hoặc giữ Ctrl/Cmd và bấm từng node).
- Chuột phải vào nền canvas, chọn Convert to sub-workflow.
- n8n tạo workflow con có sẵn trigger, chuyển các node sang, cập nhật expression tham chiếu tới node khác thành tham số đầu vào, và thay nhóm node trong workflow cha bằng một node Execute Sub-workflow.
Điều kiện để chuyển được: không chọn node trigger; nhóm node phải liền mạch; chỉ một node nhận kết nối từ ngoài vào (không phải Merge) và chỉ một node gửi kết nối ra (không phải If); phải chọn đủ mọi node nằm giữa. Expression dùng first(), last(), all() nên kiểm tra lại sau khi chuyển.
Cách 2: Tạo sub-workflow thủ công
Cách thủ công hợp khi bạn dựng workflow con từ đầu hoặc phiên bản n8n cũ hơn 1.97. Ví dụ dưới tách nhóm node “Tiêu đề mô tả, prompt hình ảnh” khỏi một workflow viết bài SEO.
Các ảnh dưới chụp ở bản n8n 1.x (công tắc Inactive, nút Test workflow, Create Workflow). Ở n8n 2.x, workflow dùng nút Publish và Execute workflow; tên node và các tùy chọn trong bài giữ nguyên.
Bước 1: Truy cập n8n (bản Cloud hoặc tự host, xem cách cài n8n trên VPS).
Bước 2: Tạo workflow mới (nút Create > Workflow; ở bản 1.x là Create Workflow) và đặt tên, ví dụ Sub-workflow.

Bước 3: Thêm trigger Execute Sub-workflow Trigger (gõ “Execute Sub-workflow” ở ô tìm kiếm), tạm để đó.

Bước 4: Mở workflow cha, chọn và sao chép các node cần tách (Ctrl+C), rồi dán (Ctrl+V) vào workflow Sub-workflow, nối sau trigger.


Bước 5: Quay lại workflow cha, xóa nhóm node vừa chép, thêm node Execute Sub-workflow và cấu hình:
- Source: Database.
- Workflow: chọn From list rồi tìm workflow tên Sub-workflow (hoặc chọn By ID và nhập Workflow ID).
- Mode: Run once with all items (gửi mọi item một lần) hoặc Run once for each item (gọi riêng cho từng item, lần lượt).

Nhóm node đã được gói vào một node duy nhất. Nối lại node này với các node trước và sau trong workflow cha.

Bước 6: Cấu hình trigger của sub-workflow. Ở mục Input data mode:
- Define using fields below: khai báo trước tên và kiểu từng trường đầu vào; workflow cha sẽ thấy các ô này để điền hoặc map. Hợp khi cần kiểm soát dữ liệu chặt.
- Define using JSON example: dán một JSON mẫu, n8n tự suy ra cấu trúc.
- Accept all data: nhận mọi dữ liệu từ workflow cha mà không định nghĩa trước. Hợp khi workflow cha luôn gửi đúng dữ liệu hoặc sub-workflow dùng cho nhiều mục đích.

Xong. Dữ liệu của node cuối cùng chạy trong sub-workflow được trả về workflow cha. Khi cần sửa logic, bạn sửa trong sub-workflow; mọi workflow cha gọi tới nó dùng bản mới.
Lưu ý n8n 2.0: nếu sub-workflow có node Wait, form hoặc bước chờ người duyệt, workflow cha nhận kết quả cuối của sub-workflow sau khi nó chạy tiếp; ở bản 1.x, workflow cha chỉ nhận lại dữ liệu đầu vào của sub-workflow (v2.0 breaking changes).
Kết luận
Sub-workflow giúp chia workflow lớn thành các khối nhỏ dùng lại được. Với n8n từ 1.97.0, cách nhanh là Convert to sub-workflow; cách thủ công vẫn hữu ích khi dựng workflow con từ đầu. Tách workflow con cũng giúp xử lý dữ liệu lớn ổn định hơn, xem vì sao workflow n8n chạy chậm.
Những câu hỏi thường gặp
Sub-workflow có chạy song song được không?
Mặc định node Execute Sub-workflow chờ sub-workflow chạy xong rồi workflow cha mới chạy tiếp; ở Mode Run once for each item, các item được gọi lần lượt. Tắt tùy chọn Wait for Sub-Workflow Completion thì workflow cha không chờ, sub-workflow chạy độc lập (docs: Execute Sub-workflow). Theo dõi tài nguyên máy chủ khi gọi nhiều lần cùng lúc.
Làm sao quản lý nhiều sub-workflow hiệu quả?
Đặt tên theo quy tắc (sub-parse-email, sub-generate-report), gom vào một folder hoặc gắn tag như sub, utility, và ghi mô tả trong Settings của workflow để người khác hiểu chức năng.
Sub-workflow có dùng credential riêng được không?
Có. Mỗi workflow, kể cả workflow con, chọn credential riêng trong từng node. Nên dùng chung credential nhất quán để tránh lỗi truy cập khi một credential bị đổi.
Sub-workflow có chứa sub-workflow khác được không?
Được, n8n cho gọi lồng nhiều cấp. Nên hạn chế độ sâu để dễ debug: lỗi ở cấp sâu sẽ hiện trong executions của từng workflow con.
