Description
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






Installation
- Install and activate WooCommerce 8.0 or newer.
- Install Shipeach from the Plugins screen (or upload the plugin folder to
/wp-content/plugins/) and activate it. - Add rules under Product data Shipping on your products, then add the “Per Product Shipping” method to a shipping zone or turn on the option under WooCommerce Settings Shipping Per Product Shipping.
FAQ
-
Can variations have their own shipping costs?
-
Yes. Tick “Override shipping rules” on the variation and add its rules. The variation’s rules then replace the parent product’s rules entirely, so an address that matches none of the variation’s rules gets the method’s default cost, not the parent’s rule. Variations without the override use the parent’s rules.
-
Does it work with the block cart and checkout?
-
Yes. Rates are calculated on the server by WooCommerce’s shipping API, so the block cart and checkout (and anything else using the Store API) show the same rate as the classic checkout. Compatibility with the cart and checkout blocks and with HPOS is declared.
-
Which rule is used when several match?
-
The most specific one: a postcode rule, then a state rule, then a country rule, then an “any” rule. If two matching rules are equally specific, the one higher in the table wins.
-
What happens to products without per-product shipping?
-
With the “Per Product Shipping” zone method, the “Products without per-product shipping” setting decides: “Charge nothing for them” (the default) adds nothing for those items, while “Do not offer this method” hides the method whenever the cart contains one, so your other methods apply. A product with per-product shipping on but no rule for the address is charged the method’s Default line cost and Default item cost (0 when left blank). When adding costs to other methods, items without a matching rule add nothing.
-
How does it work with Free Shipping and Local Pickup?
-
Adding per-product costs to other methods never changes Free Shipping rates, and leaves Local Pickup unchanged unless you untick “Leave Local Pickup rates unchanged”. The “Per Product Shipping” zone method has its own options to hide Free Shipping and Local Pickup whenever it is offered.
-
Does it work with multi-currency plugins?
-
Costs are entered and calculated in your store’s base currency. Shipeach does not convert them itself; a multi-currency plugin or a small snippet can convert each line’s cost with the
shipeach_rule_costfilter. -
How do I import rules from a CSV file?
-
With WP-CLI. Each line is one rule with six columns in this order: product ID (a variation ID is fine), country code, state code, postcode, line cost, item cost. A first line that does not start with a number is skipped as a header.
*or an empty country, state or postcode means “any”, and an empty cost is 0. Runwp shipeach rules import rules.csv(each product’s rules are replaced by the rows given for it) or add--mode=appendto add the rows after its existing rules.wp shipeach rules exportwrites all rules in the same format to the shipeach folder inside your uploads directory. The Tools screen does not upload files. -
Can I use a CSV file from the WooCommerce.com Per Product Shipping extension?
-
Its documentation lists the same six columns in the same order (product ID, country code, state code, postcode, line cost, item cost), and the header line is skipped, so
wp shipeach rules importreads that layout. Shipeach has not been tested with files exported by the extension itself, so review the imported rules afterwards. Also note that Shipeach uses the most specific matching rule, while that documentation says the first matching row from the top of the table is used. -
No. It makes no outbound requests and uses no external service. It charges the costs you enter; it does not fetch carrier rates, print labels or pack boxes.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Shipeach – Per Product Shipping for WooCommerce” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Shipeach – Per Product Shipping for WooCommerce” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.0
- Initial release: product and variation rules by country, state and postcode, the “Per Product Shipping” zone method, adding per-product costs to other methods, order breakdown, quick and bulk edit, Tools screen and WP-CLI import, export, list and set.
