Webhook cập nhật trạng thái

Webhook là đường dẫn để GHN chủ động báo trạng thái vận đơn về website. Khai xong, vận đơn bị huỷ thì đơn tự chuyển Đã huỷ, giao xong thì tự chuyển Hoàn thành, còn các bước giữa đường hiện trong ô GHN của đơn.

Tuỳ chọn Bước 7 / 8 Cập nhật 11.10.2026
Webhook GHN cho WooCommerce: đơn hàng tự cập nhật trạng thái
Video: lấy Webhook URL có khoá bí mật trong plugin, khai trên Developer Portal của GHN, và đơn tự đổi trạng thái thế nào.

Lấy Webhook URL

Vào WooCommerce → Cài đặt GHN, tab Cập nhật trạng thái tự động.

Tab Cập nhật trạng thái tự động với dòng Hãy gửi url bên dưới cho GHN, ô Webhook URL dạng admin-ajax.php?action=devvn_ghn_webhook&hash=..., liên kết Làm mới Webhook URL và nút Lưu thay đổi
Chuỗi hash trong ảnh là giá trị mẫu. Bấm vào ảnh để phóng to.
  • Đường dẫn cập nhật trạng thái tự động (Webhook URL) — địa chỉ GHN sẽ gọi về, dạng https://ten-mien-cua-ban.vn/wp-admin/admin-ajax.php?action=devvn_ghn_webhook&hash=…. Phần hash là khoá bí mật plugin sinh ngẫu nhiên; bạn chỉ chép, không sửa.
  • Làm mới Webhook URL — sinh một khoá mới vào ô. Chỉ dùng khi lộ đường dẫn, xem cảnh báo bên dưới.
  • Lưu thay đổi — bấm trước khi chép. Khoá trong ô chỉ có hiệu lực sau khi lưu; lần đầu mở tab, ô đã có sẵn một giá trị nhưng chưa được lưu.

Khai đường dẫn với GHN

Dòng chữ trong plugin ghi "Hãy gửi url bên dưới cho GHN để họ cấu hình Webhook nhé". Theo tài liệu GHN tháng 10/2026, bạn có thể tự khai:

  1. Đăng nhập Developer Portal của GHN bằng tài khoản GHN của cửa hàng.
  2. Dán đường dẫn vào mục Cấu hình webhook, tab Order.
  3. Chờ khoảng 15 phút để cấu hình có hiệu lực.

Nếu tài khoản chưa thấy mục này thì gửi đường dẫn cho GHN qua CSKH để được khai giúp. Trang khachhang.ghn.vn không có mục cấu hình webhook. Môi trường Test và Product của GHN cấu hình riêng: website đang dùng môi trường nào thì khai webhook cho đúng môi trường đó.

Làm mới đường dẫn rồi lưu là webhook cũ ngừng ngay

Bấm Làm mới Webhook URL rồi Lưu thay đổi thì đường dẫn cũ hết hiệu lực lập tức, còn GHN vẫn gọi vào địa chỉ cũ nên không có gì tới nữa. Làm mới xong phải khai lại đường dẫn mới với GHN. Đổi tên miền website cũng phải khai lại. Đường dẫn chứa khoá bí mật, đừng đăng công khai.

Khi webhook chạy thì gì xảy ra

Mỗi lần trạng thái vận đơn đổi, GHN gọi về đường dẫn này kèm mã vận đơn và trạng thái mới. Plugin tìm đơn có mã vận đơn đó, lưu trạng thái, rồi xử lý theo bảng cố định (không chỉnh được):

GHN báoĐơn trên website
Vận đơn bị huỷ (cancel)Chuyển Đã huỷ, và mã vận đơn bị xoá khỏi đơn — ô GHN quay lại nút Tạo vận đơn.
Giao thành công (delivered)Chuyển Hoàn thành.
Các trạng thái khác (lấy hàng, đang giao, giao lỗi, chuyển hoàn…)Không đổi trạng thái đơn. Chỉ dòng Trạng thái trong ô GHN của đơn đổi theo, bằng chữ tiếng Việt.

Plugin không tự ghi ghi chú vào đơn. Khi trạng thái đơn đổi (Đã huỷ, Hoàn thành), WooCommerce tự thêm một dòng ghi chú đổi trạng thái như mọi lần đổi trạng thái khác. Hành trình chi tiết của vận đơn khách xem ở Tài khoản → Đơn hàng và trang tra cứu — phần này plugin hỏi thẳng GHN mỗi lần xem, nên vẫn có kể cả khi chưa khai webhook.

Cách kiểm tra đã chạy đúng chưa

  1. Đã lưu Webhook URL và đã khai với GHN được hơn 15 phút.
  2. Tạo một vận đơn thử rồi huỷ vận đơn đó ngay trên khachhang.ghn.vn (không bấm huỷ trong website).
  3. Tải lại đơn trên website — đơn phải chuyển Đã huỷ và ô GHN không còn mã vận đơn.
  4. Không thấy gì thì kiểm lại các bước trên, rồi xem mục gỡ lỗi bên dưới.

Gỡ lỗi webhook (dành cho lập trình viên)

Ô Debug ở tab Cài đặt GHN không ghi dữ liệu webhook. Muốn xem GHN gửi gì về, thêm đoạn sau vào plugin nhỏ riêng hoặc functions.php của child theme; dữ liệu sẽ được ghi vào ghn_log.txt trong thư mục plugin.

PHP
add_filter( 'enable_debug_webhook', '__return_true' );
Log webhook ghi cả khoá bí mật trên đường dẫn

File ghn_log.txt mở được qua đường dẫn công khai. Chỉ bật trong lúc gỡ lỗi; xong thì gỡ đoạn code trên, xoá file ghn_log.txt, rồi Làm mới Webhook URL, lưu và khai lại đường dẫn mới với GHN. Không gửi nguyên file log cho ai.

Lỗi thường gặp

Hiện tượngCách xử lý
Trạng thái không bao giờ tự đổiĐường dẫn chưa được khai với GHN, chưa đủ khoảng 15 phút, hoặc bạn chép đường dẫn trước khi bấm Lưu thay đổi (khoá chưa có hiệu lực). Lưu rồi khai lại đường dẫn đang hiện trong ô.
Shipper đã lấy hàng, đang giao mà đơn vẫn "Đang xử lý"Bình thường. Chỉ huỷ và giao thành công mới đổi trạng thái đơn; các bước khác chỉ hiện ở dòng Trạng thái trong ô GHN.
Trước có chạy, giờ dừng hẳnBạn vừa làm mới đường dẫn mà chưa khai lại với GHN, hoặc website đổi tên miền. Đổi tên miền thì ô Webhook URL vẫn giữ tên miền cũ: bấm Làm mới Webhook URL, Lưu thay đổi, rồi khai đường dẫn mới với GHN.
Website chặn webhookTường lửa hoặc plugin bảo mật chặn yêu cầu gửi tới admin-ajax.php. Nhờ hosting mở cho địa chỉ webhook.
Đơn tự chuyển Đã huỷ và mất mã vận đơnVận đơn đã bị huỷ bên GHN. Cần gửi lại thì tạo vận đơn mới cho đơn đó.
Khách nhận email "hoàn thành" khi hàng vừa giaoTrạng thái WooCommerce Hoàn thành kéo theo email đơn hoàn thành. Muốn khác thì chỉnh email đó ở WooCommerce → Cài đặt → Email.

Tiếp theo: email báo mã và trang tra cứu.

Hỗ trợ Zalo