Uy tín & khách

Gửi ZNS Zalo theo trạng thái đơn hàng, đúng lúc và không gửi trùng

Kết nối Zalo OA với Partner Quantri360, lấy trạng thái đơn bằng webhook đã ký hoặc gọi /v1 theo lịch, rồi để n8n gọi API gửi ZNS theo mẫu đã duyệt qua 360. Phí tin tính vào tài khoản Zalo của brand. Phù hợp nhất cho đơn Nhanh.vn, website, cửa hàng.

Bài toán: vì sao nhắn tin trạng thái đơn bằng tay không bền?

Không bền vì việc nhắn phụ thuộc vào người nhớ và người rảnh. Ngày nhiều đơn là ngày khách hỏi nhiều nhất, cũng là ngày nhân viên ít thời gian nhất. Tin gửi muộn hoặc không gửi làm khách gọi hỏi, nhắn nhiều kênh, có khi từ chối nhận hàng.

Zalo Notification Service (ZNS) cho phép doanh nghiệp gửi tin theo mẫu đã duyệt tới số điện thoại khách. Phần khó không nằm ở API gửi, mà ở chỗ: lấy trạng thái đơn đúng lúc, đúng nghĩa, và chỉ gửi một lần.

Tư duy dẫn đường: cần dữ liệu nào, đọc thế nào cho đúng?

Mỗi mẫu ZNS nên gắn với một sự kiện có nghĩa rõ ràng, không gắn với "đơn vừa được cập nhật". Đơn hàng chuẩn 360 của Quantri360 gom trạng thái các nền tảng về cùng một bộ giá trị, và webhook đẩy sự kiện tương ứng.

Mẫu tin Sự kiện / trạng thái Đơn hàng chuẩn 360 Ghi chú
Xác nhận đơn order.created (Nhanh.vn) gửi một lần cho mỗi đơn
Đã giao cho đơn vị vận chuyển status = shipping kèm mã vận đơn tracking_code
Giao thành công, mời đánh giá order.delivered
Giao không thành, hẹn giao lại order.delivery_failed không coi là đơn hoàn
Đơn đã hủy order.cancelled

Bốn bẫy đã gặp khi gửi thật:

  • Sự kiện lặp lại. Một đơn có thể đổi trạng thái nhiều lần, order.updated đến nhiều lượt. Đặt tracking_id = mã đơn + tên mẫu và lưu lại đã gửi; webhook còn có X-Q360-Delivery-Id để bỏ lượt trùng.
  • Số điện thoại phải chuẩn hóa. Zalo nhận 84987654321, không nhận 0987654321. Đơn hàng chuẩn 360 trả số dạng E.164 (+84…), cũng hợp lệ. Số điện thoại khách trên Shopee, TikTok Shop thường bị che một phần nên không dùng gửi ZNS được; đơn Nhanh.vn, website, cửa hàng mới có số đầy đủ.
  • Lỗi không nên gửi lại. Zalo trả HTTP 200 kể cả khi lỗi; chỉ error = 0 là gửi được. Các mã -108 (số sai), -118 (số không có Zalo), -141 (khách từ chối nhận), -132 (mẫu chưa duyệt hoặc ngừng), -1124, -1121 không bao giờ tự hết. Thử lại mỗi 30 phút chỉ làm nhật ký phình gấp nhiều lần số đơn thật. Riêng -124 là lỗi token tạm thời, thử lại sau.
  • Giá trị vượt độ dài mẫu. Lỗi -1121 thường do tên khách dài, ví dụ tên POS kiểu "bán cho người tiêu dùng (anh A)" vượt giới hạn 30 ký tự của tham số. Cắt hoặc làm sạch tên trước khi gửi.

AI bứt tốc: thiết lập trong bao lâu, gồm những bước nào?

Nếu đã có Zalo OA và mẫu ZNS được duyệt, phần nối mất khoảng 30–45 phút trong n8n. Duyệt mẫu ZNS là việc của Zalo và mất thời gian riêng.

  1. Đăng ký ở Partner Quantri360, bật xác thực hai lớp. Kết nối Zalo OA của brand và xem nhóm API ở ZNS trên Partner.
  2. Kết nối nguồn đơn, ví dụ Nhanh.vn.
  3. Chọn cách nhận trạng thái:
    • Webhook realtime (thuộc Auto Data, hiện đang tạm đóng và chưa nhận đăng ký; dành cho brand chỉ dùng sản phẩm API): tạo đích Webhook URL trỏ vào node Webhook của n8n, kết nối loại "Đơn hàng đã xử lý" với cách nhận realtime. Mỗi lượt có chữ ký X-Q360-Signature (HMAC-SHA256 trên t.body); kiểm chữ ký và lệch giờ không quá 5 phút.
    • Theo lịch (dùng được ngay): n8n chạy mỗi 15–60 phút, gọi POST /v1/nhanh/v3.0/order/list với filters.updatedAtFrom và filters.updatedAtTo để lấy đơn vừa đổi. Đây là dữ liệu gốc của Nhanh.vn, nên bạn tự quy đổi trạng thái Nhanh sang các mẫu tin ở bảng trên.
  4. Tra tham số của mẫu bằng API thông tin mẫu, kiểm hạn mức trong ngày bằng API quota.
  5. Gửi tin qua 360 (360 tự gắn token Zalo OA):
curl -s -X POST "https://partner.quantri360.com/v1/zalo/zns/message/template" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"phone":"84987654321","template_id":"<mã mẫu>","template_data":{"customer_name":"Lan","order_code":"DH1024"},"tracking_id":"DH1024-delivered"}'

Tên tham số trong template_data phải đúng như mẫu của bạn. Phí gửi tính vào tài khoản Zalo của brand; phí dùng API qua 360 xem ở bảng giá.

Dùng AI rà nội dung và lỗi. Mỗi tuần, xuất nhật ký gửi (mã đơn, mẫu, mã lỗi) cho ChatGPT hoặc Claude:

"Đây là nhật ký gửi ZNS tuần qua. Nhóm theo mã lỗi, mỗi nhóm cho biết nguyên nhân có thể và việc cần làm. Đánh dấu các số đã gặp -141 hoặc -118 để đưa vào danh sách không gửi."

AI giúp đọc nhanh; quyết định gửi gì cho khách vẫn theo mẫu đã được Zalo duyệt.

Kết quả đo được

Ba chỉ số này lấy được từ chính nhật ký gửi và phản hồi của Zalo. Theo dõi theo tuần trong tháng đầu.

  • Độ trễ tin: khoảng cách từ lúc đơn đổi trạng thái tới lúc Zalo nhận tin. Webhook realtime tính bằng giây; lịch 15 phút thì dưới 15 phút.
  • Tỉ lệ gửi được: số lượt error = 0 trên tổng lượt gọi, tách riêng lỗi vĩnh viễn và lỗi tạm thời.
  • Tin trùng: số tracking_id xuất hiện hơn một lần, mục tiêu là 0.

Thêm một chỉ số nghiệp vụ: số cuộc gọi, tin nhắn hỏi tình trạng đơn mỗi tuần, đếm ở tổng đài hoặc fanpage trước và sau khi bật. Cần bảng đơn Nhanh.vn để đối chiếu, xem Nhanh.vn vào Google Sheets. Nối thêm tự động hóa cho sàn, xem Shopee với n8n.

API liên quan

Đọc thêm: tự động hóa quy trình kinh doanh — bài tổng quan của chủ đề này.

Quantri360
Viết bởi Quantri360 · Đội ngũ tư vấn quản trị & dữ liệu

Xây dựng nền tảng quản trị rủi ro bán hàng đa kênh Quantri360; viết về quản trị bằng dữ liệu thật và ứng dụng AI vào vận hành.

Cập nhật
Nhắn Messenger