Shipping for food eCommerce is tricky. A bag of coffee weighs 250 g. A box of canned tomatoes weighs 6 kg. A gift hamper might hit 10 kg.
Your carrier charges very differently for each but if you’re using a flat rate, your customers all pay the same.
Here’s how to set up weight-based shipping that actually works for a food or grocery store.
The specific challenges
Wide weight variance
Food products span a huge range.
A flat rate will always be wrong for some orders.
Unpredictable basket composition
One customer buys 20 lightweight snacks.
Another buys 3 heavy pantry items.
Item count alone isn’t a reliable signal.
Price sensitivity
Grocery shoppers compare prices.
A $7 shipping fee on a $15 order can kill the sale.
Recommended weight brackets
The following setup covers most food store scenarios.
Each bracket is a separate rule group in my free plugin Advanced Shipping Rules for WooCommerce plugin.
Tier 1: light (under 2 kg)
Small orders — snacks, condiments, single bags of coffee.
- Cart weight ≤ 2 kg → $4.00

Tier 2: medium (2–6 kg)
Typical pantry restock like pasta, canned goods, sauces.
- Cart weight > 2 kg AND ≤ 6 kg → $8.00

Tier 3: heavy (6–12 kg)
Full grocery runs or orders including staples like flour, rice, oil.
- Cart weight > 6 kg AND ≤ 12 kg → $13.00

Tier 4: bulk (over 12 kg)
Wholesale or very large orders.
- Cart weight > 12 kg → $20.00

Bonus: reward high-value orders
Add a cart-total condition to incentivize larger baskets:
- Cart total > $120 → no shipping surcharge (or reduced fee)
Combined with a visible “Spend $120 for free shipping” cart message, this consistently increases average order value.
How to set this up
Install the free Advanced Shipping Rules for WooCommerce plugin: wordpress.org/plugins/advanced-shipping-rules-for-woocommerce
Then:
- Go to WooCommerce → Settings → Shipping
- Click your zone → Add Shipping Method → Advanced Shipping Rules

- Click Edit on the new method
- Create one group per bracket

- Add the conditions and cost to each group
- Save
Each group fires independently. The one that matches with the highest cost wins.
Important: set product weights
Weight-based rules only work if every product has a weight entered.
So you need to check if your products have weight already set in WooCommerce admin:
- Go to Products → All Products, edit each item
- Under Product Data, click the Shipping tab
- Enter the weight

For variable products (250 g vs. 500 g variants), each variation can have its own weight.
WooCommerce handles the cart calculation correctly.
Gift hampers and bundles
For pre-made bundles, set the weight to the total packaged weight including packaging, not just the product contents.
This ensures the rule fires correctly for what’s actually being shipped.
Conclusion
Food stores have more to gain from weight-based shipping than almost any other category.
The weight variance is high, customer price sensitivity is real, and the right fee at the right order size makes checkout feel fair.
Download the free plugin from WordPress.org.
