Shipping rule recipes

Nine complete, working setups: free shipping thresholds, weight-based rates, table rates, category surcharges, remote postcodes and more.

Complete, working setups for the things merchants ask for most. Each one is a few minutes of clicking, and every step names exactly what you should see.

Two things worth knowing before you start:

  • There is nothing to set up in WooCommerce first. The plugin runs on every shipping calculation and works out the zone itself, so a rule is live as soon as you save it. You will not find it in a zone’s Add shipping method dialog, and it does not need to be there.
  • Every rule reads as a sentence. Step 1 WHERE (which zones), 2 WHEN (conditions), 3 THEN (what to charge), 4 SHOW AS (the checkout label). The builder restates the whole rule in plain English as you edit, so you can check it says what you meant.
The rule builder’s four steps, with a live plain-language summary.
The rule builder’s four steps, with a live plain-language summary.

1. Free shipping over an amount

The most-requested setup. There are two ways to build it, and the simpler one is right for most stores.

The one-rule version. Any rule can become free above an amount: on the rule that already carries your standard rate, tick Free when cart total ≥ in step 3 and set the figure. One rule, nothing to order, nothing to keep in sync.

The two-rule version is worth the extra work only when you want the free rate to carry a different label at checkout — “Free shipping” reads better than “Standard delivery — £0.00”.

Rule 1 — the free rate

  1. Add rule, and pick the goal Free shipping over an amount if offered.
  2. WHERE: All zones.
  3. WHEN: Cart subtotalis at least100.
  4. THEN: Flat, amount 0.
  5. SHOW AS: label Free shipping.
The free-shipping rule, with the live preview confirming it applies.
The free-shipping rule, with the live preview confirming it applies.

Rule 2 — the fallback

  1. Add rule.
  2. WHEN: leave it empty. A rule with no conditions matches every cart, which is exactly what a fallback is.
  3. THEN: Flat, amount 4.95.
  4. SHOW AS: label Standard delivery.

Then order them. On the Rules screen, drag Free shipping over 100 above Standard delivery, and set Settings → Rule evaluation to Only the highest rule applies. Without that, a £120 cart is offered both rates and the customer chooses — which usually means they choose the free one, but it looks untidy and invites questions.

Tip
Use is at least rather than is over if a cart of exactly £100 should qualify. is at least and is at most include the number; is over and is under do not.

2. A progress bar that nudges people to the threshold

Once you have a free-shipping threshold, tell shoppers how close they are. It is the single highest-return thing in this plugin for average order value.

Settings → Free-shipping progress bar is a single on/off switch. There is no message or amount to fill in — the bar reads the threshold from your rules.

⚠ Warning
The bar shows nothing until an active rule actually offers free shipping over an amount, either through a Free when cart total ≥ threshold or by charging 0 above a Cart subtotal condition. If you have enabled the bar and it does not appear, that is almost always why.

The cart, showing how much more the shopper needs for free shipping.
The cart, showing how much more the shopper needs for free shipping.

It appears on the cart and checkout automatically, on both the classic and Block versions. To place it anywhere else — a product page, a sidebar — use the shortcode:

[wpactpro_sr_progress_bar]

On cart and checkout, nothing is loaded unless there is a threshold to show. The shortcode always loads its stylesheet on the page you put it on, so place it where you mean to use it.

3. Weight-based shipping

Charge per kilogram, with a minimum.

  1. WHEN: leave empty, so it applies to every cart in the zone.
  2. THEN: Per weight, amount 2.50. That is £2.50 per unit of your store’s weight unit.
  3. To set a floor, add a second rule for light carts: WHEN Cart weightis under1, THEN Flat 3.00, and drag it above the per-weight rule with Only the highest rule applies on.

Your store’s weight unit comes from WooCommerce → Settings → Products, and products need weights set or they count as zero.

4. Table rate — different prices by cart total

The classic table rate, built with tiers rather than a rule per band.

  1. THEN: Flat, amount 5.00 — your base rate.
  2. Tick Add tiered extras.
  3. Choose the metric Cart subtotal, and add bands that do not share boundaries: 0 to 49.99 adds 0; 50 to 149.99 adds 3; 150 and up adds 6. Leave the to box blank on the last band — its placeholder reads no limit.

Up to five tiers per rule, keyed on Item quantity, Cart weight or Cart subtotal.

⚠ Warning
Ranges are inclusive at both ends, and every matching tier adds. If two bands share a boundary, a cart sitting on it is charged by both — bands of 050 and 50150 charge a £50 cart twice. Write 049.99, 50149.99, 150+ instead.

✓ Note
A per-unit tier multiplies by the whole metric, not by the part above the band’s start. There is no “after the first N”: a per-unit tier of £1 starting at 5 items charges £8 on an 8-item cart, not £3.

5. Charge extra for one category

A surcharge for fragile, oversized or hazardous goods.

  1. WHEN: Cart contains categoryincludes — pick your category.
  2. THEN: Flat, amount 15.00.
  3. SHOW AS: label Special handling — say why the price is higher, or it reads as an unexplained fee.
A category surcharge rule.
A category surcharge rule.

The same shape works with Cart contains product for individual items, or Cart contains shipping class if you already group products that way. Shipping class is usually the better choice once more than a handful of products are involved, because you maintain the grouping in one place.

6. Charge more for remote postcodes Pro

The “£5 to mainland UK, £15 to the Highlands” problem — without building a second shipping zone for it.

  1. WHEN: Destination postcodeincludesIV*, HS*, KA27, KA28, PA20...PA78
  2. THEN: Flat, amount 15.00.
  3. SHOW AS: label Highlands & Islands delivery.
  4. Drag it above your standard rate, with Only the highest rule applies.

The syntax is WooCommerce’s own — the same one the zone settings use, because this uses WooCommerce’s own matching functions:

FormExampleMatches
ExactCB23 6DHThat postcode. Spacing and case do not matter.
WildcardCB2*Everything starting CB2.
Range90210...99000Everything numerically between, inclusive.

Separate several with commas.

✓ Note
Until the shopper has entered an address, a destination rule matches nothing — including “does not include” rules. Rates settle once there is an address.

Destination city works the same way and is case-insensitive, so münchen matches München.

7. Offer Standard and Express side by side

Let the customer choose instead of choosing for them.

  1. Build two rules with different costs and labels — Standard delivery £4.95 and Express delivery £9.95.
  2. Set Settings → Rule evaluation to Show all matching rates.

Both appear at checkout as options.

The rule’s label and rate, as the customer sees them.
The rule’s label and rate, as the customer sees them.

Add conditions to either one to control when it is offered — an Express rule with a Time of day condition Pro can disappear after the afternoon cut-off, so you never promise next-day on an order you cannot pack.

8. Replace WooCommerce’s own rates entirely

When your rule applies, you may not want WooCommerce’s built-in flat rate showing alongside it. In step 4 SHOW AS, tick When this rule applies, hide other shipping methods.

⚠ Warning
It hides all other methods, including local pickup and any other plugin’s rates — which is occasionally a surprise. If you only meant to replace the built-in flat rate, it is usually cleaner to disable that method in the zone.

9. Free shipping for wholesale customers only Pro

  1. WHEN: Customer roleincludesWholesale Customer.
  2. THEN: Flat, 0.
  3. SHOW AS: Free wholesale delivery.
  4. Drag it above your retail rates, with Only the highest rule applies.

Roles come from WordPress, so this works with whatever plugin creates your wholesale role.

Before you go live

Whatever you build, put it through the Simulator before your customers do. Build the cart you expect, and one you do not — a cart just under a threshold, a different country, an empty basket.

It runs your real rules through the real engine and tells you which matched, which did not, and why. It is faster than placing test orders, and it is the difference between finding a problem yourself and hearing about it from a customer.