Một shop bán nước hoa 50ml và một shop bán chậu cây gốm 8kg không thể chung một mức cước phẳng. Đây chính là lúc bạn cần để WooCommerce tự nhìn vào giỏ hàng rồi đưa ra con số ship đúng, thay vì gõ tay từng đơn. Bài viết này đi qua ba cách làm theo độ phức tạp tăng dần, và quan trọng hơn là giúp bạn chọn đúng cách cho mô hình shop của mình.
Tính tay (flat rate) hay tính tự động — khác nhau ở đâu?
WooCommerce mặc định cho bạn vài phương thức cơ bản trong phần Cài đặt → Vận chuyển (Shipping). Flat rate (cước phẳng) là một mức tiền cố định cho mỗi đơn, ví dụ 30.000đ bất kể đơn nặng hay nhẹ. Cài rất nhanh, nhưng nó “mù” với thực tế: đơn 200g và đơn 5kg trả phí như nhau, nên hoặc bạn lỗ tiền ship đơn nặng, hoặc khách đơn nhẹ thấy đắt rồi bỏ giỏ.
Tính tự động nghĩa là hệ thống đọc cân nặng, khu vực giao và đôi khi cả giá trị đơn, rồi tự áp ra con số. Hai cách phổ biến để làm điều này là dùng bảng cước theo điều kiện (table rate) hoặc gọi thẳng API của đơn vị vận chuyển. Bảng dưới so sánh nhanh:
| Tiêu chí | Flat rate (tính tay) | Table rate / API (tự động) |
|---|---|---|
| Căn cứ tính | Một mức cố định | Cân nặng, khu vực, giá trị đơn |
| Độ chính xác cước | Thấp — dễ lỗ hoặc đội giá | Cao — sát phí thật |
| Công sức cài đặt | Vài phút | Trung bình đến cao |
| Phù hợp shop | Ít SKU, sản phẩm đồng cân | Nhiều mặt hàng lệch cân, giao toàn quốc |

Cách 1 — Shipping class kết hợp cân nặng cho từng nhóm hàng
Shipping class (lớp vận chuyển) là cách gắn nhãn cho các nhóm sản phẩm có cùng đặc tính cước. Ví dụ shop bạn có nhóm “hàng nhẹ” (mỹ phẩm, phụ kiện) và nhóm “hàng cồng kềnh” (chậu, đèn). Bạn vào WooCommerce → Cài đặt → Vận chuyển → Lớp vận chuyển để tạo các lớp này, rồi gán lớp tương ứng cho từng sản phẩm.
Sau đó trong mỗi khu vực giao (shipping zone), phương thức flat rate cho phép bạn đặt chi phí riêng theo từng lớp bằng các biến như [qty] (số lượng) và [cost]. Cách này hữu ích khi cước của bạn phân tầng theo loại hàng nhiều hơn là theo từng gram cân nặng. Nó vẫn nằm trong tính năng có sẵn của WooCommerce, không cần plugin trả phí, nên là bước đệm tốt trước khi nâng cấp.
Để cài đặt nền tảng cửa hàng đúng từ đầu, bạn có thể tham khảo quy trình cài WooCommerce từ A đến Z trước khi dựng phần vận chuyển.
Cách 2 — Plugin table rate tính theo cân nặng, khu vực và giá trị đơn
Khi cước của bạn phụ thuộc vào nhiều điều kiện cùng lúc, table rate là lựa chọn linh hoạt nhất. Đây là một bảng các dòng quy tắc: mỗi dòng nói “nếu cân nặng từ X đến Y, khu vực Z, đơn trên N đồng thì cước là M”. Plugin sẽ tự đọc giỏ hàng và áp đúng dòng phù hợp tại trang thanh toán.
Một số plugin phổ biến năm 2026:
- Flexible Shipping (Octolize) — có bản miễn phí cho phép lập quy tắc theo cân nặng và tổng giá trị giỏ hàng, đủ dùng cho phần lớn shop nhỏ.
- WooCommerce Table Rate Shipping — tiện ích chính chủ trả phí, cho tạo nhiều bảng cước theo từng khu vực, tính theo điểm đến, giá, cân nặng, lớp vận chuyển hoặc số lượng món.
- Conditional Shipping and Table Rates — hỗ trợ cả công thức (formula) để tính cước động theo dòng và theo món.
Một mẹo thực chiến cho shop Việt: gom các tỉnh theo vùng (nội thành, các tỉnh lân cận, vùng xa) thành các khu vực giao riêng, rồi mỗi khu vực một bảng cân nặng. Như vậy khách ở Cà Mau và khách nội thành Hà Nội thấy hai con số khác nhau mà bạn không phải sửa tay đơn nào. Khi giỏ hàng nặng dần qua các ngưỡng cân, cước tự nhảy bậc theo bảng bạn đã dựng.
Cách 3 — Gọi API đơn vị vận chuyển để lấy cước thật
Hai cách trên dùng bảng cước do bạn tự định nghĩa. Cách thứ ba để chính đơn vị giao hàng báo giá: WooCommerce gọi API (giao diện lập trình — kênh để hai phần mềm nói chuyện với nhau) của hãng vận chuyển, gửi cân nặng và địa chỉ giao, rồi nhận về con số cước thật ngay tại trang thanh toán.
Ở Việt Nam, các plugin kết nối Giao Hàng Nhanh với WooCommerce và kết nối Giao Hàng Tiết Kiệm vào shop làm đúng việc này: phí ship tính hoàn toàn tự động qua API dựa trên thông số đơn, và các trường tỉnh/huyện/xã đã có sẵn đầy đủ địa giới hành chính. Nhiều plugin còn cho bạn khai báo nhiều kho — khách ở TP.HCM sẽ được tính cước từ kho gần nhất, đỡ đội phí.
Cách này cho cước sát thực tế nhất và không cần bạn bảo trì bảng số, nhưng đổi lại bạn lệ thuộc vào hãng vận chuyển đó và cần cấu hình token kết nối. Nếu shop của bạn giao đa hãng và muốn khách tự chọn, bạn có thể tham khảo thêm cách tính phí ship tự động kết hợp nhiều phương thức trong cùng một khu vực.

Vậy nên dùng cách nào?
- Shop ít mặt hàng, cân nặng đồng đều (vd đồ ăn vặt đóng gói chuẩn): flat rate hoặc shipping class là đủ, đừng làm phức tạp.
- Shop nhiều SKU lệch cân, giao toàn quốc: table rate theo cân nặng và khu vực là điểm cân bằng tốt giữa chính xác và công sức.
- Shop muốn cước khớp 100% hoá đơn vận chuyển và đã chốt một, hai hãng giao: gọi API GHN/GHTK.
Một lưu ý cuối: dù chọn cách nào, hãy điền cân nặng và kích thước cho từng sản phẩm trong trang sản phẩm. Mọi cách tính tự động đều dựa vào dữ liệu này — bỏ trống cân nặng thì bảng cước và API đều không có gì để tính.
Câu hỏi thường gặp
Plugin table rate miễn phí có đủ dùng không?
Với shop nhỏ tính cước theo cân nặng và tổng giá trị giỏ, bản miễn phí của Flexible Shipping thường đủ. Khi cần nhiều điều kiện chồng nhau hoặc công thức tính động, bạn mới cần lên bản trả phí.
Dùng API GHN/GHTK có cần khách hàng làm gì thêm không?
Không. Khách chỉ chọn tỉnh/huyện/xã và hệ thống tự gọi API trả về cước. Phần kết nối token và khai báo kho là việc cấu hình một lần phía quản trị.
Tính phí tự động có làm chậm trang thanh toán không?
Table rate gần như tức thì vì tính cục bộ. Gọi API có thêm vài trăm mili giây chờ phản hồi từ hãng vận chuyển, thường không đáng kể; nếu mạng hãng gặp sự cố, nên cấu hình một phương thức dự phòng để khách vẫn đặt được hàng.
Nếu bạn muốn có người dựng và cấu hình sẵn phần vận chuyển này một cách gọn gàng, Web22 nhận dựng và tối ưu shop WooCommerce theo đúng mô hình giao hàng của bạn.
