多數店家一想到運費設定,第一個念頭是「該收多少錢才不虧」,但真正讓運費算錯的,往往不是價格訂錯,而是規則背後的判斷邏輯沒搭對。運送區域的排列順序顛倒、行銷文案寫的免運門檻跟顧客結帳時看到的金額對不上、硬拿內建功能撐一套它本來就撐不住的複雜規則,這幾種狀況,才是多數網路商店 WooCommerce 運費規則設定卡關的真正原因。
不少店家也以為運費規則設得越簡單,顧客就越滿意;隨手訂一個免運門檻,卻沒回頭核對後台實際設定的金額;或是完全不知道運送區域的排列順序,會直接決定顧客結帳時能看到哪些選項。這幾個誤解疊在一起,才是運費規則設定跑不對的常見起點。
這篇要拆的不是「怎麼設出最低運費」,而是「怎麼把規則的判斷邏輯設對」。先從 WooCommerce 三個核心設定怎麼分工講起,再往下看什麼時候該靠運費規則外掛接手。
WooCommerce 的運費,由三個設定共同決定
顧客在結帳頁看到的運費金額,其實是三個設定疊加後的結果:運送區域(shipping zones)決定「這個顧客會看到哪些運費選項」,運送方式(shipping methods)決定「用什麼邏輯把運費算出來」,運送類別(shipping classes)決定「這件商品要不要被另外加價」。三者只要有一個沒搭好,顧客看到的運費就會跟你原本想的不一樣。
運送區域圈出的是地理範圍,可以精細到郵遞區號,也可以粗略到整個大洲。WooCommerce 會先比對顧客的地址屬於哪一個運送區域,每位顧客只會對應到一個區域,而區域內設定了哪些運送方式,顧客結帳時就只看得到那幾種選項。
運送方式則是算錢的邏輯,WooCommerce 內建三種:單一費率(Flat Rate)、免運費(Free Shipping)、店面自取(Local Pickup)。同一個運送區域裡可以同時開放好幾種運送方式,讓顧客自己選。
運送類別是貼在商品資料上的一個標籤,用來把運送條件相似的商品歸在同一類,例如易碎品、冷藏食品、大型家具。它本身不會產生任何費用,要靠運送方式裡的加價設定才會實際反映在運費上。
顧客結帳時,系統實際上是照這個順序疊加運費:先比對地址落在哪個運送區域,再看這個區域裡開放了哪些運送方式讓顧客選,如果顧客選的運送方式有針對運送類別加價,系統才會再依商品的運送類別疊上額外費用。先建立這個心智模型,後面看規則怎麼互相打架就好理解多了。

運送區域的比對順序,決定顧客看到哪些運費選項
WooCommerce 比對運送區域的方式,是由上到下依序核對清單,一旦命中第一個符合的區域就停止比對,不會再往下看。每位顧客只會落在一個運送區域裡,而不是同時符合好幾個。
這個機制也帶出一條硬性排序原則,運送區域的排列順序要把涵蓋範圍最小的排在最上面,範圍最大的排在最下面。台灣、亞洲、全世界,大概就是從小到大的順序。

排序顛倒最常見的地雷,是把「全世界」或「其他地區」排在「台灣」上面。這麼一來,台灣的顧客會先被比對進涵蓋範圍更廣、費率設定通常也不一樣的那個區域,原本該顯示給他的運費選項就完全看不到,顧客只會看到一組不屬於他、也不對的運費。排查運費顯示異常時,運送區域的順序永遠是第一個要檢查的地方。
運送類別怎麼把不同商品分開計價?
運送類別本質上是貼在商品資料上的一個標籤,用來把運送條件相似的商品歸在一起,例如冷藏食品歸一類、易碎品歸一類、小型配件又是另一類。設定運送類別的目的,是讓後面的運送方式可以針對不同類型的商品套用不同運費,而不是所有商品一律用同一個費率。
不過要注意,運送類別本身不會直接產生任何費用,它只是一個分類標籤。真正讓運費出現差異的,是運送方式裡的加價設定,像是單一費率設定裡的「依類別加價」欄位,或是後面會提到的運費規則外掛。換句話說,光是幫商品貼上運送類別,運費不會有任何變化,還要回到運送方式那一層,把每個類別對應的費用填進去才算數。
實務上最常見的踩雷,是店家幫商品分好了運送類別,卻忘記回頭在運送方式裡把對應的加價設定填上去,結果運費算出來卻完全沒有反映類別的差異。遇到「規則明明設了、運費卻沒變」的狀況,先檢查商品是不是真的被指定到正確的運送類別,再檢查運送方式裡有沒有針對這個類別填加價,通常問題就出在這兩步之一。
內建的三種運送方式,先用滿再說
WooCommerce 內建三種運送方式:單一費率(Flat Rate)、免運費(Free Shipping)、店面自取(Local Pickup)。這三種方式搭配運送類別一起用,其實已經能組出多數店家最常遇到的規則,像是「某類商品另外加價」「滿額免運」「限定優惠碼才免運」,不必急著往上加裝外掛。

多數店家運費設定卡關,不是因為內建功能不夠,而是沒把這三種方式跟運送類別搭著用,單一費率、免運費各自獨立設,沒想過兩者可以疊加使用。
單一費率的成本欄位,除了填一個固定金額,也能用參數依商品數量或金額浮動計費。用 [qty] 可以做出「基本運費加每件商品加價」的公式,例如成本欄位填 100 + (30 * [qty]),代表基本運費 100 元,每多一件商品加收 30 元;也可以搭配百分比參數,依購物車金額的一定比例計費,並設定費用的上下限。
![單一費率的費用欄位填入 100 + (30 * [qty]) 公式,做出基本運費加每件加價](https://www.pongo.com.tw/wp-content/uploads/2026/07/woocommerce-shipping-flat-rate-cost-formula.webp)
免運費可以設定的觸發條件包括:完全不設限制、只認優惠券、只認滿額、滿額或優惠券任一成立就好、滿額且優惠券兩者都要成立。多數店家的「滿 NT$X 免運」用的是滿額這一種,但如果同時想搭配行銷活動發免運優惠券,選對「或/且」的邏輯就很關鍵,選錯了免運費會比預期更容易達成,或反過來讓顧客怎麼湊都湊不到。
店面自取則要留意稅務設定,預設狀況下系統會用店家地址而不是顧客地址去計算稅額,如果你的商品在不同地區稅率不同,這一點要另外確認清楚。自取方式也可以設定一筆額外費用,用來反映包裝或現場處理的成本,並不是自取就一定完全免費。
滿額免運門檻,怎麼設才不會讓顧客結帳時看到不一樣的運費?
滿額免運的地雷,多半不是門檻設錯,而是門檻對不起來。行銷文案上寫「滿 NT$1500 免運」,但後台運送方式實際設定的門檻卻是 NT$1800,顧客湊到 1500 元覺得已經達標,結帳頁卻還是被收運費,這種「說好的免運不見了」的落差感,會讓顧客對這家店的信任打折扣。
Baymard Institute 的研究指出,運費、稅金、手續費這類額外費用,是購物車棄單的首要原因,調查中有 39% 的使用者曾因此放棄結帳。免運門檻對不上,正是這種「額外費用」感受的來源之一,顧客不是在乎多付一點運費,而是在乎原本說好的事,怎麼到最後一步才變卦。
要避免這個落差,免運門檻至少要做到兩件事。第一,門檻金額要在購物車頁就讓顧客看得到,而不是等到結帳最後一步才顯示,讓顧客有機會在湊到門檻前先知道還差多少。第二,行銷文案上寫的門檻金額,要跟後台運送方式實際設定的數字定期核對,尤其是同時有多個運送區域、或有促銷活動同時在跑的時候,最容易讓兩邊的數字慢慢對不起來。
重量、金額、件數混著算,內建功能就不夠用了
單一費率、免運費、店面自取這三種內建方式,天花板很明顯,沒辦法做到「依重量分級收費」,沒辦法「依件數累進計費」,更沒辦法把重量、金額、件數這幾個條件同時疊在一起判斷。只要規則牽涉到兩個以上的條件同時成立,內建功能就開始捉襟見肘。
這時候才需要靠運費規則外掛接手,像 Table Rate Shipping 這類「依條件查表計算運費」的外掛類型,把運費從單一固定值,升級成可以疊加多重條件的計算邏輯。這類外掛通常能處理幾種典型情境:依重量分級收費、滿額免運搭配門檻、依運送類別分開計價、依件數累進收費。它解決的不是「算得比較準」,而是「內建功能結構性做不到的判斷邏輯」。
不過在導入運費規則外掛之前,有三件事要先想清楚,而不是先裝了外掛再邊做邊想。第一,商品的運送類別要先分好,重量分級、件數累進這些規則多半都要靠運送類別當基礎條件。第二,運送區域要先設好,外掛的規則是疊加在區域之上運作,區域沒設對,後面的規則再精細也沒用。第三,要先跟配送業者談好報價級距,把實際運費結構搞清楚,再回頭把數字設進規則裡,而不是先射箭再畫靶,規則設好之後才發現跟配送業者的報價對不上。
按訂單、按件、按行、按類別,運費怎麼加總不一樣?
WooCommerce 官方文件示範過一個例子最能說明差異:購物車裡有兩款小型商品(A 商品 2 件、B 商品 1 件,都屬於「小型」運送類別)與一款中型商品(1 件,屬於「中型」運送類別)。假設小型類別每件運費 NT$50、中型類別每件運費 NT$100,四種計算方式算出來的總額完全不一樣:
| 計算方式 | 計算邏輯 | 這個購物車算出的運費 |
|---|---|---|
| 依件(Per item) | 逐一比對購物車裡的每一件商品 | NT$250 |
| 依行(Per line) | 同一款商品的多件數量合併成一行,逐行比對 | NT$200 |
| 依類別(Per shipping class) | 購物車裡出現的每個運送類別各算一次 | NT$150 |
| 依訂單(Per order) | 只取優先順序最高的那個類別的費率 | NT$50 |
同一個購物車,選錯計算方式,運費可以從 NT$50 一路跳到 NT$250,差距完全不是規則本身設錯,而是選錯了加總的邏輯。「依件」對每件商品都收一次費用,商品數量越多,運費疊加得越快;「依行」把同一款商品的多件數量合併成一行才收費,適合同款大量下單的情境;「依類別」不管購物車裡同一類別有幾件商品,每個類別只收一次,比較適合已經用箱子把同類商品打包出貨的店家;「依訂單」則整張訂單只取一個費率,通常用在只想跟顧客收一次運費的情況。

Min-Max、中斷、放棄,規則要讀到哪一行就停
除了計算方式,Table Rate Shipping 這類外掛還有三個機制,決定規則要讀到哪一行就停。Min/Max(最小值與最大值)決定「這一行規則適用的區間」,例如重量 0 到 1 公斤算一行、1 到 3 公斤又是另一行;中斷(Break)決定「符合這一行之後,還要不要繼續往下讀」;放棄(Abort)決定「一旦符合這一行,這個運送方式要不要整個消失,不顯示給顧客看」。
以「兩件商品要合併運送,只收一次運費」這個常見情境來說明:規則表要由貴到便宜、由上往下排,並在最貴那一行勾選中斷。系統讀到這一行,發現條件符合,運費就停在這個金額,不會再往下讀後面較便宜的行,也不會把兩筆運費加總收給顧客。順序如果反過來,由便宜排到貴,中斷就會停在便宜的那一行,顧客反而少付了原本該收的運費。
放棄則用在完全不同的情境,如果某個條件出現,代表這個運送方式根本不該提供給顧客,例如商品重量超過快遞能承接的上限,勾選放棄後,系統會讓這個運送方式直接從結帳頁消失,逼顧客改選別的運送方式,而不是硬算出一個不合理的運費金額。
多條件運費規則,靠重量、金額、件數、分類疊出來
把前面的計算方式、Min-Max、中斷組合起來,就能做出多數店家最常問到的幾種規則情境。每一種都是同一套邏輯換一個條件而已:先決定用哪個條件切分規則、搭配哪種計算方式、要不要勾選中斷,對照自己的商品狀況,大致都能直接套用。

依重量分級的規則,怎麼設定?
把商品拿去秤重再收費,是這裡最常見的一種規則:用「重量」這個條件切出幾個區間,例如 1 公斤以下、1 到 3 公斤、3 公斤以上各是一行,對應的計算方式選「依訂單(Per order)」,整張訂單依總重量落在哪個區間收一筆固定運費。這種設法最適合商品會整批一起秤重出貨的店家,跟前面「依訂單計算」的邏輯剛好呼應,不需要逐件商品分別計費,而是先秤出訂單總重量,再對照規則表收費。
滿額免運,怎麼跟其他規則並存不衝突?
用運費規則外掛做「滿額才免運」,做法是設兩行規則:一行是「金額低於門檻」收固定運費,另一行是「金額高於門檻」運費歸零,並在這一行勾選中斷。顧客的訂單金額只要跨過門檻,系統就停在免運那一行,不會再往下疊加原本的固定運費。
這裡有個容易被忽略的細節,免運那一行的標籤欄一定要寫清楚「滿額免運」這類字樣,不能留空。標籤會顯示在顧客的購物車與結帳頁,如果運費顯示 NT$0 卻沒有任何說明文字,顧客很容易懷疑是系統出錯,反而增加詢問客服的次數。這一節呼應前面提過的免運門檻落差問題:規則邏輯設對只是一半,顧客看得懂、信得過,才是完整的設定。
不同商品分類各自計價,還能合併包裝省運費
如果店裡同時賣常溫商品跟需要冷藏或特別包裝的商品,可以先把運送類別分成「常溫」「冷藏」「易碎」這幾類,各自設定對應的費率。接著用類別優先順序(Class Priorities)決定,同一張訂單裡如果同時出現好幾種類別,只收優先順序最高的那一類運費,再搭配中斷機制,避免每個類別的運費被逐一加總。
這種設法適合像同時賣冷凍食品與常溫零食的店家,顧客一次買了兩種類別的商品,不會被收兩份運費,而是照優先順序最高的那一類計算,等於用同一套包材出貨、只收一次的邏輯。設定的關鍵是先想清楚哪一類的運送成本最高、最該優先計費,再把優先順序的數字排對。
買越多單價越低,件數累進規則怎麼設?
買得越多,單件的運費理論上該越便宜,件數累進規則就是把這個概念做出來的方法,用「件數(Item Count)」這個條件,搭配「基礎運費加每件加價」的公式組合。例如第一行規則設定 1 到 49 件,基礎運費 NT$60,每多一件加收 NT$30;第二行規則設定 50 件以上,基礎運費調降為 NT$300,每件加價也同步調降。件數一旦跨過門檻,系統改用第二行的費率,整體算下來,單件的平均運費會比小量採購時更低,呈現出買越多、單件越便宜的階梯效果。
這種規則特別適合批發或團購性質重的店家,一旦訂購件數超過某個量,運送成本本來就會因為配送業者的報價級距而下降,規則設計上就該把這個省下來的成本反映在給顧客的運費上,而不是不管買幾件都收一樣的單價。
運費設定跑不對,多半是這幾個地方出錯
前面幾節拆過的規則邏輯,實際上線後如果運費顯示不對,不必從頭重讀一次,照這份清單依序檢查,通常能很快找到問題出在哪一步:
- 運送區域的排序有沒有顛倒,範圍大的區域(例如全世界、其他地區)有沒有不小心排到範圍小的區域(例如台灣)前面。
- 有沒有忘記關閉會互相衝突的運送方式,例如同一個區域裡,內建的免運費跟外掛的規則同時生效,導致顧客同時看到兩種不同邏輯算出來的運費選項。
- 中斷(Break)有沒有勾對,規則的順序是不是由貴到便宜、由上往下排,這是運費算出來比預期高或低最常見的原因。
- 商品有沒有真的被指定到對應的運送類別,還是類別分好了,商品資料卻忘記回頭指定。
- 免運門檻的行銷文案,有沒有跟後台運送方式實際設定的金額對齊,尤其是同時有促銷活動或多個運送區域在跑的時候。
這五項幾乎涵蓋前面提過的每一種地雷,依序檢查下來,大部分「設定完卻顯示不對」的狀況都能自己抓出問題出在哪裡。其中免運門檻文案沒對齊格外重要,前面提到額外費用是購物車棄單的首要原因,文案跟後台兜不起來,顧客感受到的正是這種說好卻沒兌現的落差。
運費規則不是上線前設定一次,就能長久沿用不動的東西。配送業者的報價會調整,包材成本會變動,退貨率也可能因為某一類商品持續偏高。建議至少每季回頭對照這幾項數字,重新檢視一次規則表,把運費設定當成營運中要持續調整的一部分,而不是上線前清單打勾完就不再管的項目。
