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.

Minh hoạ cho bài n8n kết nối WooCommerce đồng bộ đơn hàng và tồn kho

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 webhookRủi ro nếu không xử lýCách chặn trong workflow
Webhook bắn trùng cùng một đơnTrừ tồn kho 2 lầnKiểm tra order ID đã xử lý trước khi ghi
Webhook đến ngược thứ tựTrạng thái đơn bị ghi đè saiSo sánh timestamp trước khi cập nhật
WooCommerce timeout rồi gửi lạiMột sự kiện tạo nhiều bản ghiGắ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.

Xem gói VPS n8n

Đồ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.

Đọc rồi mà vẫn ngại tự làm?

Để 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.

Khách hàng và các chỉ số lượt theo dõi, độ phủ, doanh thu của một website doanh nghiệp