WooCommerce’s built-in shipping zones only match a customer’s country, state, or postal code. If your real delivery area is a circle around your shop, a specific cluster of neighborhoods, or a boundary you could draw on a map but not describe in zip codes, the default zone system cannot express that. This post compares three real plugins that restrict WooCommerce shipping by distance from your store in three different ways: WooReer calculates and prices (or cuts off) shipping using actual driving distance from a mapping API, Cities Shipping Zones for WooCommerce lets you target named cities directly, and Shipping Zones by Drawing lets you draw the exact boundary on a map. If you want a straightforward radius cutoff backed by real distance math, start with WooReer.
| Plugin | Best for | Price | Last updated |
|---|---|---|---|
| WooReer | Pricing or capping shipping by real driving distance | Free | May 20, 2026 |
| Cities Shipping Zones for WooCommerce | Targeting delivery by a specific list of cities | Free | August 23, 2026 |
| Shipping Zones by Drawing for WooCommerce | Drawing an exact delivery boundary on a map | Free, Pro from $39/year | August 12, 2026 |
WooReer
WooReer (its WordPress.org slug is still wcsdm, a holdover from its old name, WooCommerce Shipping Distance Matrix) calculates shipping rates based on the actual road distance between your store and the customer’s address. It does not guess from zip code proximity. It calls a routing API, Google Maps Routes API, Mapbox Matrix API, DistanceMatrix.ai, Geoapify, or HERE Routing API, your choice, gets a real driving distance, and runs it through rate rules you define per shipping zone.
- Price: Free (open source, donation-supported)
- Requires: WordPress 6.4+, WooCommerce 8.8+, PHP 7.4+
- Last updated: May 20, 2026
What sets WooReer apart from the other two plugins here is that it does math, not just matching. You can set progressive or flat rates by distance band, add surcharges or discounts by percentage or fixed amount, cap costs with a minimum and maximum, and restrict travel mode to driving, walking, or bicycling, each with its own routing restrictions like avoiding tolls or highways. You can also block orders outright once a customer is too far away, which is the closest thing to a true delivery radius cutoff in this comparison. The calculated distance shows up on the cart and checkout page, so customers see why they are being charged what they are charged.
Setup starts like any plugin: search “WooReer” under Plugins > Add New, install, activate. The part that takes real effort is after that. You need your own API key from whichever provider you pick, which means creating an account with Google, Mapbox, or one of the others and, in most cases, attaching a billing method even if you stay under the free tier. Once the key is in place, you configure rate rules per WooCommerce shipping zone the same way you would any other shipping method. The plugin itself is free and actively maintained, but the ongoing dependency on a third-party API, and the account setup that comes with it, is the real cost. If you run a flower, food, or beverage delivery business where distance-based pricing actually changes your margins, that setup is worth it. If you just want a flat local-delivery fee, it is more plugin than you need.
Cities Shipping Zones for WooCommerce
Cities Shipping Zones for WooCommerce takes a completely different approach. Instead of calculating distance, it turns WooCommerce’s built-in state dropdown field into a city dropdown for the countries you choose. You then build a shipping zone the normal WooCommerce way, except the “state” you are selecting is actually a city.
- Price: Free
- Requires: WordPress 5.2+, WooCommerce 3.4+, PHP 7.0+
- Last updated: August 23, 2026
This is the right tool when your actual delivery area is not a clean circle. A lot of local businesses deliver to a specific list of towns they know by name, not a mathematically perfect radius, because of traffic patterns, existing driver routes, or just which neighborhoods they have historically served. Cities Shipping Zones lets you encode that list directly rather than approximating it with distance math or a pile of postal code wildcards. It also adds a bulk-select tool for adding many cities to a zone at once, a sales-by-city report under WooCommerce Reports, and a shortcode ([csz_cities]) that shows customers a shipping calculator by city before they reach checkout.
Setup is genuinely simple: install the plugin, pick the countries you want it active on in the plugin’s own settings, update your store’s general location in WooCommerce settings, then build a shipping zone under WooCommerce > Settings > Shipping using the now-city-based location field, and drag that zone to the top of your zone list so WooCommerce checks it first. The honest limitation is that it does not support the WooCommerce block-based checkout yet, its own FAQ says so directly, so if your site runs the newer Cart and Checkout blocks instead of the classic shortcode checkout, this plugin will not show the field correctly. It also will not catch a customer just outside your named city list even if they are technically closer than someone inside it. It is matching by name, not distance.
Shipping Zones by Drawing for WooCommerce
Shipping Zones by Drawing for WooCommerce splits the difference between the other two. Instead of calculating distance on the fly or matching a list of city names, you draw your actual delivery area directly on a map inside the WordPress admin, and the plugin turns that drawn shape into a WooCommerce shipping method.
- Price: Free (up to 5 zones), Pro from $39/year
- Requires: WordPress 6.0+, WooCommerce 11.0+ (blocks checkout supported), PHP 7.4+
- Last updated: August 12, 2026
The core idea is visual precision. If your delivery area follows a river, cuts off at a highway, or excludes one neighborhood in the middle of your radius for reasons a circle or a city list can’t capture, you draw that exact shape once and reuse it. At checkout, customers pick their delivery location from a map instead of typing an address and hoping it matches a zone. The plugin also supports limiting shipping options purely by distance from your store if you don’t want to draw anything, and it’s built to work with both the classic checkout and the newer WooCommerce Cart and Checkout blocks, which is a real advantage over Cities Shipping Zones.
Setup requires your own Google Maps API key with four specific APIs enabled: Maps JavaScript, Places, Geocoding, and Directions. Once that’s configured under WooCommerce > Settings > Shipping Zones by Drawing, you draw zones under WooCommerce > Shipping Zones by Drawing, then add each drawn zone as a shipping method inside a WooCommerce shipping zone the normal way. The free version caps you at five drawn zones, which is plenty for a single store with one or two delivery tiers but tight if you’re managing several locations or a lot of fine-grained sub-areas. It’s also the newest and smallest plugin in this comparison by install count, worth knowing if you weigh community size when picking a plugin to depend on.
How to pick
- If you want to charge more the farther a customer is, or cut off delivery past a real driving distance, and you don’t mind setting up an API key and account with a mapping provider, use WooReer.
- If your delivery area is a specific, known list of towns or cities rather than a clean circle, and you’re on the classic checkout, use Cities Shipping Zones for WooCommerce.
- If you want customers to pick their location from an actual map, need block checkout support, or your delivery boundary follows real geography a circle can’t capture, use Shipping Zones by Drawing for WooCommerce.
- If none of these fit because your delivery logic also needs to touch inventory, local pickup, or a custom checkout flow, that’s a case for a custom plugin rather than stretching one of these past what it’s built for.
FAQ
Can I restrict WooCommerce shipping to only customers within a certain distance of my store?
Yes. WooReer is built specifically for this: it calculates the real driving distance to the customer’s address through a routing API and can block the order once they’re past a distance you set, rather than just charging more. The other two plugins here restrict by named city or drawn map shape instead of a calculated radius.
Do I need a Google Maps API key for distance-based WooCommerce shipping?
For WooReer, you need an API key from one provider of your choice, Google Maps, Mapbox, DistanceMatrix.ai, Geoapify, or HERE, not necessarily Google. For Shipping Zones by Drawing, Google Maps specifically is required, with the Maps JavaScript, Places, Geocoding, and Directions APIs enabled. Cities Shipping Zones for WooCommerce needs no API key at all since it works from a static city list.
What’s the difference between a shipping zone by city and a shipping zone by radius?
A city-based zone, like Cities Shipping Zones for WooCommerce builds, matches customers by name against a list you define, so it’s exact for towns you already know you serve but won’t catch an address just outside that list even if it’s geographically close. A radius or distance-based zone, like WooReer calculates, measures actual distance and catches anyone within range regardless of which town they’re in.
Does distance-based WooCommerce shipping work with the block checkout?
It depends on the plugin. Shipping Zones by Drawing for WooCommerce explicitly supports the WooCommerce Cart and Checkout blocks. Cities Shipping Zones for WooCommerce’s own FAQ states it does not yet support the blocks checkout, only the classic shortcode-based checkout page. Check your active checkout type before choosing.
Can I combine a delivery radius with a flat local delivery rate?
Yes, with WooReer. You can set a flat rate for a base distance band and a per-distance or percentage surcharge beyond it, within the same shipping zone, since the plugin’s rate rules support minimum and maximum costs alongside progressive distance pricing.
None of these three plugins are ConicPlex products, and none of ConicPlex’s own plugins touch WooCommerce shipping logic, so there’s no honest reason to force one in here. If your delivery rules end up more complex than any of these three can handle cleanly, perhaps you’re routing between multiple warehouses, or combining a delivery radius with real-time inventory by location, that’s a reasonable point to stop stretching an off-the-shelf plugin and talk to a developer instead. Our Plugin Development team builds that kind of logic directly into your site.
For more on getting WooCommerce shipping to match how your business actually operates, see our posts on what to do when there’s no WooCommerce plugin for your shipping carrier and hiding a WooCommerce shipping method by product category. If pincode-level restriction is closer to what you need than distance or drawn zones, we also cover that in restricting cash on delivery by pincode. For general WooCommerce build work beyond plugin configuration, our WooCommerce Development service covers that too.



