n8n kết nối WooCommerce đồng bộ đơn hàng và tồn kho
Kết nối n8n với WooCommerce qua webhook để đồng bộ đơn hàng và tồn kho, kèm cách xử lý webhook trùng lặp làm sai số lượng lúc kiểm kê.
Đơn hàng lên WooCommerce nhưng kho vẫn báo còn hàng, nhân viên vẫn nhận đơn cho một sản phẩm đã hết. Đó là dấu hiệu thường gặp nhất khi shop chưa nối được luồng dữ liệu giữa website bán hàng và hệ thống quản lý phía sau. N8n kết nối WooCommerce giải quyết đúng chỗ này: webhook bắn sự kiện đơn hàng ra ngoài, workflow xử lý rồi ghi ngược lại tồn kho, không cần ai copy dữ liệu bằng tay.

n8n kết nối WooCommerce bằng cách nào
Có hai chiều kết nối: WooCommerce gửi sự kiện ra ngoài qua webhook, và n8n gọi ngược lại vào WooCommerce qua REST API. Hai chiều này chạy song song trong hầu hết workflow đồng bộ đơn hàng.
Chiều thứ nhất bắt đầu từ WooCommerce > Settings > Advanced > Webhooks. Chọn topic order.created hoặc order.updated, dán URL webhook lấy từ node Webhook trong n8n vào ô Delivery URL. Mỗi lần có đơn mới, WooCommerce tự bắn một gói JSON chứa toàn bộ thông tin đơn hàng tới URL đó.
Chiều thứ hai dùng node HTTP Request hoặc node WooCommerce có sẵn trong n8n, gọi vào REST API của WooCommerce để đọc hoặc cập nhật dữ liệu: đổi trạng thái đơn, trừ tồn kho, gắn ghi chú nội bộ. REST API WooCommerce xác thực bằng cặp consumer key và consumer secret, tạo tại WooCommerce > Settings > Advanced > REST API. Quyền Read/Write là bắt buộc nếu workflow cần ghi dữ liệu ngược lại, không chỉ đọc. Cặp key này lưu trong credential của n8n nên máy chạy workflow cũng cần bảo vệ tương đương một VPS n8n riêng, không đứng chung với dịch vụ khác thiếu kiểm soát.
Webhook trùng lặp làm sai tồn kho như thế nào
WooCommerce có thể bắn cùng một webhook 2 lần cho một đơn hàng, thường do plugin retry hoặc do server WooCommerce timeout rồi gửi lại. Nếu workflow trừ tồn kho mỗi lần nhận webhook mà không kiểm tra, đơn đó bị trừ kho 2 lần dù khách chỉ mua 1 lần.
Lỗi này không lộ ra ngay. Đơn vẫn xử lý bình thường, khách vẫn nhận hàng, chỉ có số tồn kho trên hệ thống lệch dần theo thời gian. Chủ shop thường chỉ phát hiện lúc kiểm kê cuối tháng, khi số đếm tay và số trên phần mềm chênh nhau mà không rõ lý do.
Chặn trùng bằng order ID
Cách xử lý là ghi lại order ID đã trừ kho vào một bảng riêng, ví dụ Google Sheet hoặc PostgreSQL đi kèm VPS n8n. Trước khi trừ kho, workflow tra order ID đó đã có trong bảng chưa. Có rồi thì bỏ qua, coi như webhook lặp không xử lý lần 2.
Đặt idempotency key trên node ghi
Với node ghi vào hệ thống kế toán hoặc kho ngoài WooCommerce, gắn thêm order ID làm khóa duy nhất ngay tại bước ghi, không chỉ chặn ở đầu workflow. Hai lớp chặn cộng lại giảm hẳn khả năng một đơn bị cộng trừ 2 lần dù webhook có bắn lặp bao nhiêu lần.
Webhook bắn ngược thứ tự gây lỗi trạng thái đơn
WooCommerce không đảm bảo webhook tới đúng thứ tự đơn hàng chuyển trạng thái. Đơn chuyển từ Processing sang Completed rồi lại có một webhook Processing tới muộn vì mạng chậm, workflow xử lý tuần tự sẽ ghi đè trạng thái Completed về Processing, sai với thực tế.
Cách tránh là workflow không tin thứ tự webhook tới, mà so sánh timestamp hoặc thứ tự trạng thái trong gói dữ liệu trước khi ghi đè. Trạng thái mới chỉ được ghi khi mốc thời gian của nó muộn hơn mốc đã lưu, webhook đến muộn nhưng mang dữ liệu cũ thì bị bỏ qua.
| Tình huống webhook | Rủi ro nếu không xử lý | Cách chặn trong workflow |
|---|---|---|
| Webhook bắn trùng cùng một đơn | Trừ tồn kho 2 lần | Kiểm tra order ID đã xử lý trước khi ghi |
| Webhook đến ngược thứ tự | Trạng thái đơn bị ghi đè sai | So sánh timestamp trước khi cập nhật |
| WooCommerce timeout rồi gửi lại | Một sự kiện tạo nhiều bản ghi | Gắn idempotency key ở bước ghi cuối |
| Webhook rớt giữa chừng, không tới | Đơn không được đồng bộ | Chạy thêm workflow đối chiếu định kỳ theo lịch |
Dựng workflow WooCommerce trên hạ tầng riêng
BizMaC có VPS cài sẵn n8n, PostgreSQL và Redis để lưu trạng thái chặn trùng ngay trên máy chủ của bạn, gói n8n Start từ 490.000đ mỗi tháng.
Đồng bộ tồn kho hai chiều giữa WooCommerce và kho ngoài
Nhiều shop bán cùng lúc trên WooCommerce, trên sàn và ở cửa hàng offline, tồn kho cần khớp ở mọi nơi bán. Chiều một là khi có đơn WooCommerce, workflow trừ số lượng ở hệ thống kho ngoài qua API. Chiều hai là khi kho ngoài nhập hàng mới hoặc điều chỉnh số lượng, workflow cập nhật lại tồn kho trên WooCommerce qua endpoint PUT /products/{id}.
Chạy 2 chiều cùng lúc dễ tạo vòng lặp: cập nhật kho ngoài kích hoạt webhook về WooCommerce, WooCommerce đổi tồn kho lại kích hoạt sự kiện quay về kho ngoài. Cách chặn là gắn cờ nguồn gốc thay đổi vào mỗi lần ghi, workflow đọc cờ đó và bỏ qua nếu thay đổi đến từ chính hệ thống mình vừa ghi ra.
Trạng thái đơn nào nên kích hoạt workflow
Không phải mọi thay đổi trạng thái đều cần xử lý tự động. Đơn chuyển sang Processing là lúc nên trừ tồn kho, vì đây là thời điểm khách đã xác nhận mua và thanh toán. Đơn chuyển sang Completed thường dùng để đóng workflow, ghi log hoặc gửi email cảm ơn, không cần trừ kho lần 2.
Đơn chuyển sang Cancelled hoặc Refunded cần một workflow riêng để hoàn tồn kho, cộng lại số lượng đã trừ trước đó. Bỏ qua bước này là nguyên nhân phổ biến khiến tồn kho hiển thị thấp hơn thực tế, đặc biệt ở shop có tỷ lệ hủy đơn trên 5%.
Chuẩn bị gì trước khi dựng workflow này
Trước khi bắt tay dựng, cần xác nhận 3 thứ: WooCommerce đã bật REST API với quyền Read/Write, có nơi lưu trạng thái đã xử lý để chặn trùng như PostgreSQL hoặc Google Sheet, và có kênh báo lỗi khi webhook thất bại như email hay Zalo. Thiếu bước chuẩn bị thứ ba, workflow lỗi âm thầm mà không ai biết cho tới khi khách phàn nàn.
Với shop mới bán vài chục đơn mỗi ngày, một VPS cấu hình nhẹ đã đủ chạy workflow này ổn định. Khi đơn tăng lên vài trăm mỗi ngày và webhook dồn dập, cần tài nguyên đủ để queue xử lý không bị nghẽn, lúc đó mới đáng nâng cấp gói. Việc quản lý server, theo dõi log lỗi và vá bản n8n mới cũng cần người phụ trách, nếu đội nội bộ chưa có ai rảnh tay thì dịch vụ quản trị máy chủ của BizMaC nhận trông phần vận hành này.
Câu hỏi thường gặp về n8n kết nối WooCommerce
n8n kết nối WooCommerce cần cài plugin gì trên website không
Không cần plugin thêm. WooCommerce đã có sẵn webhook và REST API trong phần Settings, chỉ cần bật và tạo consumer key.
Webhook WooCommerce không bắn tới n8n thì kiểm tra ở đâu
Vào WooCommerce > Settings > Advanced > Webhooks, xem log Delivery của từng webhook để biết mã phản hồi và lý do thất bại.
Một shop cần bao nhiêu workflow cho WooCommerce
Thường 2 tới 3 workflow riêng: một xử lý đơn mới và trừ kho, một xử lý hủy đơn và hoàn kho, thêm một workflow đối chiếu định kỳ nếu shop bán nhiều kênh.
Có thể đồng bộ WooCommerce với phần mềm kế toán qua n8n không
Có, qua REST API hoặc webhook tương tự cách nối với kho ngoài, miễn phần mềm kế toán có API hoặc hỗ trợ nhận webhook.
Ghi nhanh
- n8n kết nối WooCommerce qua 2 chiều: webhook nhận sự kiện, REST API ghi ngược lại đơn hàng và tồn kho.
- Chặn webhook trùng bằng cách lưu order ID đã xử lý, tránh trừ kho 2 lần cho cùng 1 đơn.
- So sánh timestamp trước khi ghi đè trạng thái, vì webhook có thể tới không đúng thứ tự.
- Đơn Cancelled và Refunded cần workflow hoàn kho riêng, bỏ qua bước này là nguyên nhân tồn kho sai phổ biến nhất.
Lưu ý: Bài viết chia kinh nghiệm chung, còn mỗi doanh nghiệp một quy mô và một cách vận hành. Muốn biết cách nào hợp với trường hợp của bạn — chọn gói nào, làm theo thứ tự nào, chi phí ra sao — chuyên viên BizMaC tư vấn và làm giúp bạn phần kỹ thuật.
Để BizMaC dựng website cho doanh nghiệp bạn
Giao diện chuẩn UX, cấu trúc chuẩn SEO, chạy mượt trên di động và dễ tự quản trị sau khi bàn giao. BizMaC làm website cho doanh nghiệp Việt từ năm 2007, đi kèm hướng dẫn vận hành chứ không bàn giao xong là hết.



