A shop that delivers with its own van charges by distance, because that is what delivering costs. Gatemi Distance Shipping adds a "Distance rate" method to any WooCommerce shipping zone and prices it from how far the address is — or how long it takes to drive there, which is the honest measure in a city where five miles is twenty minutes.
Where the distance cannot be worked out, there is no rate at all. Not a distance of nought, which quotes local delivery to another continent at the cheapest band. Not "the first band", which is the same bug with more steps. An unreachable Google, an address the shopper has not finished typing, a spent quota, a destination with no road to it — every one of those means this method offers nothing, WooCommerce shows whatever else the zone offers, and your own sentence explains. A guessed distance is a van sent eighty miles for four pounds, and you find out when it comes back.
A distance is looked up once and remembered. Google bills you per lookup, and WooCommerce recalculates shipping several times for one checkout — on the cart page, on every address change, on every coupon, on every quantity change, and again through the Store API on a block checkout. A plugin that asks each time turns one order into a dozen charges on your account. Here the answer is cached against the two addresses alone, for as long as you say, because the distance between two places does not change. Failures are never cached, so a replaced card fixes the shop on the next checkout rather than in a month.
Never asked before there is an address to ask about. WooCommerce will hand over a package whose destination is a country and nothing else — and a maps API answers that quite happily, with the distance to the geometric centre of a nation. So nothing is looked up until there is a postcode, a street or a city, which is both correctness and your bill.
Built on the Routes API, the one Google is migrating to. The Distance Matrix API is legacy. This plugin ships on the far side of that migration rather than needing a rewrite before its first support email, and Google is named in exactly one file so the next round of churn is paid for in one place.
Bands, typed where you are already standing
The rate table lives on the zone method, because "within 10 km" is different money in the next county and a shop with three delivery zones wants three tables and exactly one API key. One band per line:
0 - 5 : 3.00 5 - 15 : 4.00 + 0.80 15 - * : 12.00 0 - 30 : x Sorry, you are outside our delivery area. time 0 - 20 : 4.00 0 - 5 : 3.00 | Same-day local delivery
Flat amounts, an amount per kilometre or mile, a refusal with a sentence the shopper reads, bands measured in minutes of driving, and a band's own label at the checkout. First match wins, top to bottom, in the order you typed them — so the table you are looking at is the table that decides.
What is in it
- A "Distance rate" method in any shipping zone, beside your other rates
- Bands by distance or by driving time, first match wins
- Flat, per-unit, per-item and percentage-of-goods costs, which stack
- A floor, a ceiling and free delivery over an amount, per band
- Refusal bands, with your own sentence
- Kilometres or miles; van, motorbike, bicycle or on foot
- A test lookup on the settings screen that asks for real and says why it failed
- Optional logging to WooCommerce → Status → Logs
- No database tables, no meta, no storefront JavaScript
Every license includes
- One year of updates and priority support, delivered straight to your WordPress dashboard.
- Use on 1, 5 or 25 sites depending on your license — local, staging and development sites are always free.
- 30-day money-back guarantee — full refund, no questions asked.
- Keeps working after expiry — if you choose not to renew, the plugin keeps running exactly as installed; it simply stops receiving updates and support until you do.
Requires WordPress 6.4+ · PHP 7.4+ · tested up to WordPress 7.0. Works with the classic and block checkout alike.

Ruth (verified owner) –
Written by people who clearly run shops themselves. Distance Shipping is the first thing I install on a new build now. Cannot ask for more than that.
Gary S. (verified owner) –
Doesn’t load a pile of scripts on every page, which was my worry. I haven’t touched the Distance Shipping settings since the day I set them. Absolutely worth it.
Ryan D. (verified owner) –
Excellent bit of software. Set Distance Shipping up once and it’s looked after itself. Buy it.
Chloe L. (verified owner) –
Does exactly what I needed on my store. The Distance Shipping screen has no settings on it I don’t understand.
Camille T. (verified owner) –
Très satisfait, franchement. Distance Shipping est en place depuis février. Je le rachèterais demain.