{"id":357988,"date":"2026-09-03T08:57:19","date_gmt":"2026-09-03T08:57:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/xshipping\/"},"modified":"2026-10-29T11:30:33","modified_gmt":"2026-10-29T11:30:33","slug":"extnify-shipping","status":"publish","type":"plugin","link":"https:\/\/kmr.wordpress.org\/plugins\/extnify-shipping\/","author":23554136,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"Extnify Shipping Rules for WooCommerce","header_author":"Extnify Labs LLC","header_description":"Zone-based shipping rules for WooCommerce \u2014 flat, subtotal and table-rate costs per shipping zone.","assets_banners_color":"ded5ff","last_updated":"2026-10-29 11:30:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/extnify.com\/platforms\/woocommerce","header_author_uri":"https:\/\/extnify.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":306,"num_ratings":2,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"extnify","date":"2026-09-30 08:58:49","revision":3720759},"1.0.1":{"tag":"1.0.1","author":"extnify","date":"2026-10-06 08:36:59","revision":3730310},"1.0.2":{"tag":"1.0.2","author":"extnify","date":"2026-10-29 11:30:33","revision":3772769}},"upgrade_notice":{"1.0.2":"<p>Refreshed the plugin listing and corrected the in-admin Documentation link.<\/p>","1.0.1":"<p>Namespaced the shared form-builder library so Extnify plugins can run side by side.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":2},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3720759,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3720759,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3720759,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3720759,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3720759,"resolution":"1","location":"assets","locale":"","width":3668,"height":1207},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3720759,"resolution":"2","location":"assets","locale":"","width":3668,"height":1207},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3720759,"resolution":"3","location":"assets","locale":"","width":3685,"height":840},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3720759,"resolution":"4","location":"assets","locale":"","width":3668,"height":1207},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3720759,"resolution":"5","location":"assets","locale":"","width":3403,"height":1597},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3720759,"resolution":"6","location":"assets","locale":"","width":3365,"height":1769}},"screenshots":{"1":"Global settings and your list of shipping methods.","2":"Creating a shipping method \u2014 general settings and its shipping zone.","3":"Price Setting \u2014 choose Flat Amount, SubTotal, or SubTotal + Tax.","4":"Price Setting \u2014 a subtotal-based cost range table.","5":"Your shipping methods shown to customers at checkout.","6":"Built-in Help &amp; Support with the live debug log."}},"plugin_section":[],"plugin_tags":[146193,5230,5030,30113,5023],"plugin_category":[],"plugin_contributors":[278991],"plugin_business_model":[],"class_list":["post-357988","plugin","type-plugin","status-publish","hentry","plugin_tags-conditional-shipping","plugin_tags-free-shipping","plugin_tags-shipping-rules","plugin_tags-table-rate-shipping","plugin_tags-woocommerce-shipping","plugin_contributors-extnify","plugin_committers-extnify"],"banners":{"banner":"https:\/\/ps.w.org\/extnify-shipping\/assets\/banner-772x250.png?rev=3720759","banner_2x":"https:\/\/ps.w.org\/extnify-shipping\/assets\/banner-1544x500.png?rev=3720759","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/extnify-shipping\/assets\/icon-128x128.png?rev=3720759","icon_2x":"https:\/\/ps.w.org\/extnify-shipping\/assets\/icon-256x256.png?rev=3720759","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/extnify-shipping\/assets\/screenshot-1.png?rev=3720759","caption":"Global settings and your list of shipping methods."},{"src":"https:\/\/ps.w.org\/extnify-shipping\/assets\/screenshot-2.png?rev=3720759","caption":"Creating a shipping method \u2014 general settings and its shipping zone."},{"src":"https:\/\/ps.w.org\/extnify-shipping\/assets\/screenshot-3.png?rev=3720759","caption":"Price Setting \u2014 choose Flat Amount, SubTotal, or SubTotal + Tax."},{"src":"https:\/\/ps.w.org\/extnify-shipping\/assets\/screenshot-4.png?rev=3720759","caption":"Price Setting \u2014 a subtotal-based cost range table."},{"src":"https:\/\/ps.w.org\/extnify-shipping\/assets\/screenshot-5.png?rev=3720759","caption":"Your shipping methods shown to customers at checkout."},{"src":"https:\/\/ps.w.org\/extnify-shipping\/assets\/screenshot-6.png?rev=3720759","caption":"Built-in Help &amp; Support with the live debug log."}],"raw_content":"<!--section=description-->\n<p><strong>Extnify Shipping Rules<\/strong> lets you create your own shipping methods for the WooCommerce cart and checkout \u2014 each with its own cost and the shipping zone it applies to. You manage all of them from one screen, and the matching ones appear at checkout as selectable shipping options.<\/p>\n\n<p>Charge a flat rate, a percentage of the subtotal, or build a subtotal-based <strong>range table<\/strong> (for example, free shipping over $100 and a flat rate below it). A built-in live log shows you exactly why a method did or didn't appear at checkout.<\/p>\n\n<p><a href=\"https:\/\/extnify.com\/docs\/woocommerce\/extnify-shipping-rules-woocommerce\">Read the documentation \u00bb<\/a> | <a href=\"https:\/\/wc-dev.extnify.com\/?auto_login=extnify-shipping\">Try the live demo \u00bb<\/a><\/p>\n\n<p><strong>See it in action:<\/strong><\/p>\n\n<p>https:\/\/www.youtube.com\/watch?v=NMbBS3aB3ZQ<\/p>\n\n<h4>What you can do with Extnify Shipping Rules<\/h4>\n\n<ul>\n<li>Offer a <strong>flat-rate<\/strong> shipping method (for example, $10 standard shipping).<\/li>\n<li>Give <strong>free shipping<\/strong> \u2014 on everything, or only above a subtotal threshold.<\/li>\n<li>Build <strong>table-rate<\/strong> shipping that changes with the cart subtotal.<\/li>\n<li>Charge shipping as a <strong>percentage of the subtotal<\/strong>.<\/li>\n<li>Restrict a method to a <strong>specific shipping zone<\/strong>.<\/li>\n<li>Run <strong>several methods at once<\/strong> \u2014 each qualifying one shows as its own choice at checkout.<\/li>\n<\/ul>\n\n<h4>How it works<\/h4>\n\n<p>This is a little different from a normal zone method, so it's worth understanding:<\/p>\n\n<ul>\n<li>You build and manage all your shipping methods on the dedicated <strong>WooCommerce \u2192 Extnify Shipping Rules<\/strong> screen.<\/li>\n<li>WooCommerce sees <strong>one<\/strong> \"Extnify Shipping Rules\" method, which you add to your zones once.<\/li>\n<li>At checkout, that one method looks at every rule you created and offers <strong>each qualifying one as its own shipping rate<\/strong> \u2014 so a single entry in your zone can present several shipping choices to the customer.<\/li>\n<\/ul>\n\n<blockquote>\n  <p>Important: you must add \"Extnify Shipping Rules\" to your shipping zone(s) for rates to appear. The plugin shows a one-click \"Add it to a zone\" button to make this easy.<\/p>\n<\/blockquote>\n\n<h4>Flexible shipping costs<\/h4>\n\n<p>Choose how each method's cost is worked out:<\/p>\n\n<ul>\n<li><strong>Flat Amount<\/strong> \u2014 a fixed value (enter <code>0<\/code> for free shipping), or a percentage of the subtotal with a trailing <code>%<\/code>.<\/li>\n<li><strong>SubTotal<\/strong> \u2014 a range table based on the cart subtotal.<\/li>\n<li><strong>SubTotal + Tax<\/strong> \u2014 the same range table, based on the subtotal including tax.<\/li>\n<\/ul>\n\n<p>With a range table, the first row whose band contains the cart value sets the rate \u2014 so you can do things like \"<code>$8<\/code> under $100, free at $100+\" in one method.<\/p>\n\n<h4>Conditional by shipping zone<\/h4>\n\n<p>Target a method to the WooCommerce shipping zone(s) the destination must match, or leave it open to apply in any zone the method is attached to. Product, category and brand targeting, plus country\/region\/postcode and weight\/quantity conditions, are available in Pro.<\/p>\n\n<h4>Tax handling<\/h4>\n\n<p>Shipping tax follows your WooCommerce tax settings (WooCommerce \u2192 Settings \u2192 Tax \u2192 Shipping tax class).<\/p>\n\n<h4>Easy management<\/h4>\n\n<p>Create, enable, disable, copy, delete and bulk-save all your methods from one screen, and set the order they're listed in at checkout. New methods appear in the sidebar instantly and are written to the database when you save.<\/p>\n\n<h4>Live debugging<\/h4>\n\n<p>When a method doesn't show up at checkout and you're not sure why, turn on the built-in debug log. For each method it reports whether its rules passed or failed, the resolved cost, and whether it was offered or skipped \u2014 so you can see exactly which rule filtered it out. The log is stored in your own database (never a file, never sent anywhere) and can be cleared with one click.<\/p>\n\n<h4>Works everywhere WooCommerce does<\/h4>\n\n<p>Rates are returned through WooCommerce's standard shipping system, so your methods appear on both the <strong>classic<\/strong> and the <strong>block<\/strong> cart and checkout.<\/p>\n\n<h4>Built for speed and privacy<\/h4>\n\n<ul>\n<li><strong>No external requests and no tracking<\/strong> \u2014 every rule and calculation runs on your own store.<\/li>\n<li><strong>Lightweight<\/strong> \u2014 no bloat, no third-party libraries pulled in on your storefront.<\/li>\n<li><strong>Translation-ready<\/strong> \u2014 ships with a <code>.pot<\/code> file and a clean <code>extnify-shipping<\/code> text domain.<\/li>\n<li><strong>Clean uninstall<\/strong> \u2014 deleting the plugin removes its table, option and log; nothing is left behind.<\/li>\n<\/ul>\n\n<h4>Need more? Extnify Shipping Rules Pro<\/h4>\n\n<p><a href=\"https:\/\/extnify.com\/products\/x-shipping-pro-woocommerce\">Extnify Shipping Rules Pro<\/a> adds:<\/p>\n\n<ul>\n<li>Product, category and brand targeting, plus country\/region\/postcode and weight\/quantity conditions.<\/li>\n<li>More cost types \u2014 per-item, weight, distance and dimensional \u2014 with tiered ranges, per-unit blocks and min\/max caps.<\/li>\n<li>Method grouping, logos and descriptions.<\/li>\n<li>CSV import\/export.<\/li>\n<\/ul>\n\n<p>Your free methods carry over automatically \u2014 Pro shares the same data.<\/p>\n\n<h4>More plugins by Extnify<\/h4>\n\n<ul>\n<li><strong>Extnify Fee Rules<\/strong> \u2014 add conditional fees or discounts to the WooCommerce cart and checkout.<\/li>\n<li><strong>Extnify Offer Rules<\/strong> \u2014 let customers pick selectable discounts or add-ons at checkout.<\/li>\n<\/ul>\n\n<p>Extnify Shipping Rules is built by Extnify, the team behind the X-ShippingPro extension for OpenCart.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Make sure WooCommerce is installed and active.<\/li>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/<\/code>, or install it from <strong>Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Extnify Shipping Rules<\/strong> and set <strong>Module Status = Enabled<\/strong> in Global Settings.<\/li>\n<li>Click <strong>Add New Method<\/strong>, set its cost on the Price Setting tab, and (optionally) pick a shipping zone. Save.<\/li>\n<li>Add <strong>Extnify Shipping Rules<\/strong> to your shipping zone(s) \u2014 use the one-click \"Add it to a zone\" button, or add it under <strong>WooCommerce \u2192 Settings \u2192 Shipping \u2192 [zone] \u2192 Add shipping method<\/strong>. Your rates then appear at checkout.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"my%20shipping%20rates%20don%27t%20appear%20at%20checkout.\"><h3>My shipping rates don't appear at checkout.<\/h3><\/dt>\n<dd><p>Most often the method isn't attached to a zone \u2014 use the \"Add it to a zone\" button, or add \"Extnify Shipping Rules\" under WooCommerce \u2192 Settings \u2192 Shipping \u2192 your zone. Also confirm <strong>Module Status<\/strong> and the method's own <strong>Status<\/strong> are Enabled, then check the live debug log while recalculating on the cart.<\/p><\/dd>\n<dt id=\"how%20do%20i%20offer%20free%20shipping%3F\"><h3>How do I offer free shipping?<\/h3><\/dt>\n<dd><p>Set the cost to <code>0<\/code> \u2014 either a Flat Amount of <code>0<\/code>, or a <code>0<\/code> cost row in a SubTotal range (for example, free over $100).<\/p><\/dd>\n<dt id=\"can%20the%20cost%20be%20a%20percentage%3F\"><h3>Can the cost be a percentage?<\/h3><\/dt>\n<dd><p>Yes. Enter the amount with a trailing <code>%<\/code> (for example <code>5%<\/code>); it's taken from the cart subtotal.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20table-rate%20shipping%3F\"><h3>How do I set up table-rate shipping?<\/h3><\/dt>\n<dd><p>Choose <strong>Shipping By = SubTotal<\/strong> (or SubTotal + Tax) on the Price Setting tab, then add rows with a Start, End and Cost. The first row whose range contains the cart value sets the rate.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20the%20woocommerce%20block%20checkout%3F\"><h3>Does it work with the WooCommerce block checkout?<\/h3><\/dt>\n<dd><p>Yes. Rates are returned through WooCommerce's standard shipping system, so they appear on both the classic and block cart and checkout.<\/p><\/dd>\n<dt id=\"does%20this%20send%20any%20data%20anywhere%3F\"><h3>Does this send any data anywhere?<\/h3><\/dt>\n<dd><p>No. Extnify Shipping Rules makes no external requests and collects no data \u2014 everything runs on your store.<\/p><\/dd>\n<dt id=\"can%20i%20upgrade%20to%20pro%20without%20losing%20my%20settings%3F\"><h3>Can I upgrade to Pro without losing my settings?<\/h3><\/dt>\n<dd><p>Yes. Extnify Shipping Rules and Extnify Shipping Rules Pro share the same data, so your configured methods carry over automatically.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Expanded the plugin listing (features, demo, FAQ).<\/li>\n<li>Corrected the in-admin Documentation link.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Internal: namespaced the shared form-builder library so Extnify plugins can run side by side.<\/li>\n<li>Hide the live debugging log by default.<\/li>\n<li>Link Documentation to the product docs page.<\/li>\n<li>Reworded the plugin description.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Build your own WooCommerce shipping methods \u2014 flat rate, subtotal-based and table-rate costs, conditional by shipping zone, all from one screen.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/357988","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=357988"}],"author":[{"embeddable":true,"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/extnify"}],"wp:attachment":[{"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=357988"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=357988"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=357988"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=357988"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=357988"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/kmr.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=357988"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}