
Shipeach adds per product shipping to WooCommerce: set a shipping cost on each product and each variation, by country, state or postcode, and WooCommerce charges it, either as its own shipping method in your zones or on top of your other shipping methods. It is for stores where shipping depends on the item rather than the cart: furniture, art, plants, bulky or fragile goods, drop-shipped items with supplier-set shipping. It does not fetch carrier rates, print labels or pack boxes.
Shipeach is an independent plugin and is not affiliated with WooCommerce or Automattic.
Features
- Rules on every product. Under Product data Shipping, below the shipping class, tick “Per-product shipping” and add rules: Country (any or one country), State (any, a state from WooCommerce’s list, or a code for countries without a list), Postcode, a line cost charged once per cart line and an item cost charged per unit. Add and remove rows without reloading the page. Up to 200 rules per product.
- Postcodes like shipping zones. A postcode can be exact (
SW1A 1AA), a wildcard (PE*) or a range (1000-1999or1000...1999). They are matched with the same WooCommerce function shipping zones use. A hyphen between two numbers of the same length, lower number first, is read as a range. - Variation overrides. Each variation has an “Override shipping rules” checkbox and its own table. When it is ticked, the variation’s rules replace the parent product’s rules entirely; otherwise the variation uses the parent’s.
- Most specific rule wins. A postcode rule beats a state rule, which beats a country rule, which beats an “any” rule. Between rules that are equally specific, the first row in the table wins.
- “Per Product Shipping” zone method. Add it to any shipping zone. Settings: Title, Tax status, Default line cost and Default item cost (used for products with per-product shipping on but no rule matching the address), “Products without per-product shipping” (charge nothing for them, or do not offer the method), “Hide Free Shipping when this method applies” and “Hide Local Pickup when this method applies”. The rate is the sum of every line’s line cost plus item cost × quantity.
- Or add the costs to your other methods. Under WooCommerce Settings Shipping Per Product Shipping, “Add per-product costs to every other shipping method” adds the package’s per-product cost to every other rate offered for the package, such as Flat rate. Free Shipping is never changed, Local Pickup is left unchanged unless you untick that option, and taxes are recalculated for taxable rates. The zone method and this option can be used together; the Per Product Shipping rate itself is not increased.
- Breakdown on the order. The order’s shipping line stores which product cost what. The admin order screen shows it as “Per-product breakdown: Product A 9.00, Product B 4.00”. Customers do not see it.
- Quick edit and bulk edit. From the products list, turn per-product shipping on or off and set the line and item cost of the “Any country” rule for one or many products.
- Tools Per Product Shipping. Copy the rules of one product or variation to other products and variations in one form, and see how many products use per-product shipping with a link to the products list filtered to them. The products list also gets a “Per-product shipping: on / off” filter.
- WP-CLI.
wp shipeach rules list [--product=<id>],wp shipeach rules set <product> --country= --state= --postcode= --line= --item=,wp shipeach rules import <file.csv> [--mode=replace|append]andwp shipeach rules export [--out=<file>].
How it works
- Open a product, go to Product data Shipping, tick “Per-product shipping” and add one or more rules. For a variable product, add rules on the parent, and tick “Override shipping rules” on any variation that ships differently.
- Either add the “Per Product Shipping” method to a shipping zone (WooCommerce Settings Shipping), or turn on “Add per-product costs to every other shipping method” under WooCommerce Settings Shipping Per Product Shipping, or both.
- At checkout, every item in the package is matched against its rules for the shipping address. The matching rule’s line cost plus item cost × quantity is that line’s shipping, and the lines are added up.
Rates are calculated on the server, so the classic cart and checkout, the block cart and checkout, and the Store API all show the same amounts. When a product’s rules change, carts calculate fresh rates instead of reusing the ones stored in the customer’s session.
Compatibility
- Classic and block cart and checkout, and the Store API. No JavaScript runs on the storefront.
- High-Performance Order Storage (HPOS): compatibility is declared and the plugin runs no order queries.
- Rules are ordinary product meta (
_shipeach_enabledand_shipeach_rules), so WooCommerce’s “Duplicate” action copies them, and WooCommerce’s product CSV export and import carry them when “Export custom meta” is ticked. - Costs are entered in your store’s base currency. Multi-currency plugins can convert them with the
shipeach_rule_costfilter.
Developers
Filters: shipeach_rules_for_product (the rules used for a cart item), shipeach_rule_matches (whether a rule applies, for example quantity or weight tiers), shipeach_rule_cost (the cost of one cart line), shipeach_package_cost (the total for a package), shipeach_import_rows (CSV rows before import).
Action: shipeach_after_import.
The order shipping line meta _shipeach_breakdown holds product or variation ID cost.
More plugins by Emtiaz Zahid
- Launchmender: 44 pre-launch checks with one-click fixes, a manual checklist and a client handoff report
- Faultwright: PHP errors, JavaScript errors, failed cron jobs, emails and updates on one timeline
- Stalemender: content audit that gives every post a Freshness Score (0–100) and tells you why
- Waymender: finds broken links without hammering your server, logs 404s and fixes both in one click
- Anchormender: internal link suggestions while you write, an orphan post report and bulk internal linking
- Repeatwright: RFM customer segments, repeat rate, LTV and cohort retention from your own WooCommerce orders
- Hoverbuy: sticky add to cart bar with image, price and quantity once the real button scrolls away, variable products included
- Dynafield: ACF, Pods, Meta Box and post meta as dynamic tags in free Elementor: text, link, image, number, colour and date
Screenshots

Set shipping costs on a product by country, state or postcode, right below the shipping class.

Give a variation its own rules that replace the parent product's.

Add "Per Product Shipping" to any shipping zone, with default costs and Free Shipping and Local Pickup hiding.

The cart charges each product's shipping, and a mixed cart adds them up in one rate.

Or add per-product costs on top of Flat rate and your other shipping methods.

Copy rules between products and find every product that uses per-product shipping.