Title: Advanced Shipping Rules For WooCommerce
Author: robertoiacono
Published: <strong>4 March 2025</strong>
Last modified: 26 June 2026

---

Search plugins

![](https://ps.w.org/advanced-shipping-rules-for-woocommerce/assets/banner-772x250.
png?rev=3564401)

![](https://ps.w.org/advanced-shipping-rules-for-woocommerce/assets/icon-256x256.
jpg?rev=3564401)

# Advanced Shipping Rules For WooCommerce

 By [robertoiacono](https://profiles.wordpress.org/prototipo88/)

[Download](https://downloads.wordpress.org/plugin/advanced-shipping-rules-for-woocommerce.1.1.0.zip)

 * [Details](https://en-gb.wordpress.org/plugins/advanced-shipping-rules-for-woocommerce/#description)
 * [Reviews](https://en-gb.wordpress.org/plugins/advanced-shipping-rules-for-woocommerce/#reviews)
 *  [Installation](https://en-gb.wordpress.org/plugins/advanced-shipping-rules-for-woocommerce/#installation)
 * [Development](https://en-gb.wordpress.org/plugins/advanced-shipping-rules-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/advanced-shipping-rules-for-woocommerce/)

## Description

**Stop losing money on shipping costs — take full control of your WooCommerce shipping
fees.**

**Advanced Shipping Rules For WooCommerce** lets you create smart, conditional shipping
rules that automatically apply extra fees based on what’s actually in the cart: 
total weight, number of items, or subtotal. Define as many conditions as you need,
combine them with AND/OR logic, and let the plugin handle the rest at checkout —
no developer required.

Whether you run a small shop or a high-volume store, getting shipping costs right
is critical for both profitability and customer satisfaction. This plugin gives 
you the precision tooling you need.

**Who is this for?**

 * **Store owners shipping heavy or bulky goods** who need to recover real carrier
   surcharges for overweight shipments.
 * **Shops with variable order sizes** that want to add a handling fee when orders
   fall below a minimum quantity or total.
 * **Multi-zone stores** that need location-specific fee logic on top of WooCommerce’s
   native shipping zones.

**How it works**

The plugin adds a new shipping method — _Advanced Shipping Rules_ — directly inside
WooCommerce’s native shipping zones. You configure groups of conditions for each
zone. When a customer’s cart matches a group, the defined extra fee is applied. 
Multiple groups use OR logic; conditions inside a group use AND logic. The highest
matching fee wins, so you stay in control even when several rules could apply.

**Key benefits**

 * **Accurate cost recovery**: charge the real extra cost for heavy, bulky, or high-
   value orders instead of absorbing losses.
 * **Fewer abandoned carts**: transparent, rules-based fees at checkout are more
   trustworthy than flat-rate surprises.
 * **Zero code**: every rule is configured from the WooCommerce admin — no PHP, 
   no hooks, no child theme edits.
 * **Non-destructive**: works alongside flat rate, free shipping, and any other 
   method in the same zone.
 * **Multiple instances**: add the method more than once in a zone for layered fee
   structures.
 * **Performance-friendly**: no front-end scripts or styles are loaded; all logic
   runs only during cart/checkout calculation.

**Available condition types**

 Condition
 Operators

 Cart total (subtotal)
 equal to, less than, less than or equal to, greater than,
greater than or equal to

 Total cart weight
 equal to, less than, less than or equal to, greater than, greater
than or equal to

 Number of products
 equal to, less than, less than or equal to, greater than, greater
than or equal to

**Extensible by developers**

Three WordPress filters let you add custom condition types, evaluation handlers,
and adjust the final shipping cost without modifying plugin files:

 * `asrfwoo_condition_types` — register new condition type definitions (description,
   operators, input type, step)
 * `asrfwoo_condition_handlers` — register the evaluation logic for each condition
   type
 * `asrfwoo_shipping_cost` — filter the final computed cost before it is passed 
   to WooCommerce

Example: add a custom condition type based on the number of unique product categories
in the cart.

    ```
    add_filter( 'asrfwoo_condition_types', function( $types ) {
        $types['category_count'] = array(
            'description' => 'Number of Categories',
            'operators'   => array(
                'greater_than'          => 'Greater than',
                'greater_than_or_equal' => 'Greater than or equal to',
                'less_than'             => 'Less than',
                'less_than_or_equal'    => 'Less than or equal to',
                'equal'                 => 'Equal to',
            ),
            'placeholder' => 'Enter category count',
            'input_type'  => 'number',
            'step'        => '1',
        );
        return $types;
    } );

    add_filter( 'asrfwoo_condition_handlers', function( $handlers ) {
        $handlers['category_count'] = function( $operator, $value, $cost, &$group_cost, &$is_condition_met, $cart_weight, $cart_items, $cart_total ) {
            $categories = array();
            foreach ( WC()->cart->get_cart() as $item ) {
                $terms = get_the_terms( $item['product_id'], 'product_cat' );
                if ( $terms ) {
                    foreach ( $terms as $term ) {
                        $categories[ $term->term_id ] = true;
                    }
                }
            }
            $count = count( $categories );
            if ( ( $operator === 'greater_than'          && $count > (int) $value ) ||
                 ( $operator === 'greater_than_or_equal' && $count >= (int) $value ) ||
                 ( $operator === 'less_than'             && $count < (int) $value ) ||
                 ( $operator === 'less_than_or_equal'    && $count <= (int) $value ) ||
                 ( $operator === 'equal'                 && $count === (int) $value ) ) {
                $is_condition_met = true;
            }
        };
        return $handlers;
    } );
    ```

**HPOS compatible**: fully tested with WooCommerce High-Performance Order Storage.

### How to Use

 1. Open the method settings after adding it to a shipping zone.
 2. Click **Add Group** to create a rule group.
 3. Inside the group, click **Add Condition** and choose a condition type (weight, 
    item count, or cart total), an operator, and a threshold value.
 4. Add more conditions to the same group (all must match — AND logic) or add a second
    group (either group can match — OR logic).
 5. Set the **Shipping Cost** for each group in the group footer — this is the fee 
    applied when all conditions in that group pass.
 6. Click **Save changes**. The fees will be applied automatically at checkout when
    the cart meets the defined conditions.

**Example setups**

 * Charge €4 when total cart weight is between 0 and 2 kg; €9 between 2 and 8 kg;
   €16 above 8 kg.
 * Charge €3 extra when the order contains fewer than 3 items.
 * Charge €10 extra when cart total is below €50 AND weight exceeds 10 kg.

### License

This plugin is released under the [GPL-2.0+](https://www.gnu.org/licenses/gpl-2.0.html)
license.

## Screenshots

[⌊How to add Advanced Shipping Rules For WooCommerce as a shipping method and configure
conditions.⌉⌊How to add Advanced Shipping Rules For WooCommerce as a shipping method
and configure conditions.⌉[

How to add Advanced Shipping Rules For WooCommerce as a shipping method and configure
conditions.

[⌊The calculated shipping fee displayed in the storefront cart.⌉⌊The calculated 
shipping fee displayed in the storefront cart.⌉[

The calculated shipping fee displayed in the storefront cart.

[⌊Add multiple conditions to a group using AND logic; add multiple groups with OR
logic.⌉⌊Add multiple conditions to a group using AND logic; add multiple groups 
with OR logic.⌉[

Add multiple conditions to a group using AND logic; add multiple groups with OR 
logic.

[⌊Choose the condition type: Total Weight, Number of Products, or Cart Total.⌉⌊Choose
the condition type: Total Weight, Number of Products, or Cart Total.⌉[

Choose the condition type: Total Weight, Number of Products, or Cart Total.

[⌊Advanced Shipping Rules for WooCommerce appears as a native method inside WooCommerce
Shipping.⌉⌊Advanced Shipping Rules for WooCommerce appears as a native method inside
WooCommerce Shipping.⌉[

Advanced Shipping Rules for WooCommerce appears as a native method inside WooCommerce
Shipping.

[⌊Use it exactly like any other native WooCommerce shipping method.⌉⌊Use it exactly
like any other native WooCommerce shipping method.⌉[

Use it exactly like any other native WooCommerce shipping method.

[⌊The extra fee label shown at checkout inherits the Method Title you set in the
plugin settings.⌉⌊The extra fee label shown at checkout inherits the Method Title
you set in the plugin settings.⌉[

The extra fee label shown at checkout inherits the Method Title you set in the plugin
settings.

## Installation

 1. In your WordPress dashboard go to **Plugins  Add New Plugin**, search for _Advanced
    Shipping Rules For WooCommerce_, and click **Install Now**.
 2. Activate the plugin.
 3. Go to **WooCommerce  Settings  Shipping**.
 4. Select an existing **Shipping Zone** or create a new one.
 5. Click **Add shipping method**, choose **Advanced Shipping Rules for WooCommerce**,
    and click **Add shipping method**.
 6. Click **Edit** on the new method to open its settings and define your conditions.

## FAQ

### Does this plugin replace WooCommerce’s built-in shipping methods?

No. It adds a new method that you place inside a shipping zone alongside flat rate,
free shipping, or any other method. Each method calculates independently.

### Can I use multiple instances of this method in one zone?

Yes. Add the method more than once to a zone to layer different fee rules for the
same geographic area.

### Does it work with WooCommerce shipping classes?

The free version evaluates cart-wide totals (weight, item count, subtotal), not 
per-product or per-class values.

### Can I combine conditions with AND and OR logic?

Yes. Conditions within a single group are AND-ed (all must pass). Multiple groups
are OR-ed (any matching group triggers its fee). The highest fee across all matching
groups is applied.

### Will this slow down my store?

No. The plugin loads no front-end assets. The condition evaluation runs only during
WooCommerce’s shipping calculation phase.

### Is it compatible with High-Performance Order Storage (HPOS)?

Yes. The plugin is fully HPOS compatible and does not rely on legacy order meta 
tables.

### The method shows a €0 fee — why?

A fee is only added to the cart when at least one group matches and its **Shipping
Cost** (set in the group footer) is greater than zero. Check that the cost is saved
on each group, that your condition values are correct, and that the active cart 
meets the thresholds you set. Also verify that your product weights are defined 
under _Product data  Shipping_ — if weight is 0, weight-based conditions will not
trigger.

## Reviews

There are no reviews for this plugin.

## Contributors and Developers

“Advanced Shipping Rules For WooCommerce” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ robertoiacono ](https://profiles.wordpress.org/prototipo88/)

[Translate “Advanced Shipping Rules For WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/advanced-shipping-rules-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/advanced-shipping-rules-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/advanced-shipping-rules-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/advanced-shipping-rules-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/advanced-shipping-rules-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Change Log

#### 1.1.0

 * Added “greater than or equal to” and “less than or equal to” operators for all
   condition types.
 * Shipping cost is now set once per group (group footer) instead of per condition—
   makes range-based rules straightforward to configure.
 * Backward compatible: groups saved with the old per-condition cost continue to
   work until re-saved.
 * Improved admin UI: card layout with header, conditions body, and footer; destructive“
   Remove Group” button; cleaner OR separator.

#### 1.0.1

 * Fixed minor bugs in condition saving and display logic.

#### 1.0.0

 * Initial release.
 * Cart total, cart weight, and product quantity conditions with AND/OR group logic.

## Meta

 *  Version **1.1.0**
 *  Last updated **4 months ago**
 *  Active installations **10+**
 *  WordPress version ** 5.6 or higher **
 *  Tested up to **7.0.7**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/advanced-shipping-rules-for-woocommerce/)
 * Tags
 * [conditional shipping](https://en-gb.wordpress.org/plugins/tags/conditional-shipping/)
   [shipping cost](https://en-gb.wordpress.org/plugins/tags/shipping-cost/)[shipping rules](https://en-gb.wordpress.org/plugins/tags/shipping-rules/)
   [woocommerce shipping](https://en-gb.wordpress.org/plugins/tags/woocommerce-shipping/)
 *  [Advanced View](https://en-gb.wordpress.org/plugins/advanced-shipping-rules-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/advanced-shipping-rules-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/advanced-shipping-rules-for-woocommerce/reviews/)

## Contributors

 *   [ robertoiacono ](https://profiles.wordpress.org/prototipo88/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/advanced-shipping-rules-for-woocommerce/)