
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 typeasrfwoo_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
- Open the method settings after adding it to a shipping zone.
- Click Add Group to create a rule group.
- Inside the group, click Add Condition and choose a condition type (weight, item count, or cart total), an operator, and a threshold value.
- Add more conditions to the same group (all must match — AND logic) or add a second group (either group can match — OR logic).
- Set the Shipping Cost for each group in the group footer — this is the fee applied when all conditions in that group pass.
- 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+ license.
Screenshots

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

The calculated shipping fee displayed in the storefront cart.

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.

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

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.