← All plugins

Distance Based Pricing for WooCommerce

Charge for delivery by how far the customer is: distance bands or a rate per mile or kilometre, as a shipping method.

Pro · from $49/year
Distance Based Pricing for WooCommerce graphic

What it does

Charge for delivery by how far the customer is: distance bands or a rate per mile or kilometre, as a shipping method.

Distance Based Pricing adds one delivery method to your shipping zones. It finds the customer's delivery address, measures how far it is from the place you deliver from, and charges for that distance. Florists, caterers, removals firms and any shop that delivers by the mile or the kilometre can set a fair price without a table of postcodes. Price a delivery from a table of distance bands, such as "up to 5 km is 4.00, up to 10 km is 7.00", or from a starting charge plus a rate for every mile or kilometre past a distance the starting charge covers. Set a lowest charge, a highest charge and a furthest delivery distance, and tell a customer who is too far away so in your own words. Because it is a WooCommerce shipping method, the classic cart and checkout, the Cart and Checkout blocks, the mini-cart, orders and emails all show it, and it is zoned and taxed like any other method.

You choose how distance is measured. Straight line is the default: OpenStreetMap finds the address and the plugin measures the distance a bird would fly, which is shorter than the road, so the settings screen says so and you can add a percentage to allow for roads. For a driving distance, choose a routing server you run or rent (OSRM) or Google with your own key. You are never required to have a Google key, and Google bills you, not PluginCity, for the requests you send it.

A current licence adds the cases a busy shop runs into. Several branches: each customer is priced from the nearest of your branches by straight line, and only that one is sent to a routing service, so more branches do not mean more lookups. Rules by product, category and shipping class can add a fixed amount, an amount per unit or a percentage to the delivery charge, or refuse delivery; every rule that matches applies in the order you wrote them, and a refusal wins. Surcharges for chosen weekdays and times of day, fixed or a percentage, are judged in your shop's time zone, including windows that run past midnight. A round-trip option counts every distance twice. A daily limit on lookups, a usage report and a choice of how long saved answers are kept (1 to 90 days) keep a busy shop's requests under control.

Pro also prices products by distance, for work you travel to: a workshop at the customer's venue, a van hire, a removal. The customer enters an address on the product page, the shop measures it, and the travel charge is added to the cart as a fee, once for each line of that product. The browser never sends a price, only the address is measured, and a product with no quote cannot be added to the cart. If you add a separate Google browser key, the address box on the product page can suggest addresses as the customer types.

Only the delivery address leaves your site, and only to the service you chose, only while a customer's delivery is being priced or an administrator saves the address you deliver from. Nothing is sent on activation or on a schedule, and customer addresses, distances and charges are not sent to PluginCity. Address lookups use OpenStreetMap Nominatim by default; map data is © OpenStreetMap contributors, under the ODbL. The public Nominatim server asks for no more than one request a second, so lookups are spaced out and saved for 30 days against a scrambled copy of the address, and a busy shop can point the plugin at its own Nominatim server. A suggested paragraph for your privacy policy, naming the service in use, is added under Settings, Privacy.

If the licence lapses, nothing is deleted. Delivery is priced from your main address by the distance table, as it was before. Your branches, rules, surcharges and distance options stay on the screen as words you can read but not change, and products priced by distance sell at their ordinary price. Renewing switches everything back on as you left it. Nothing is written to an order, so High-Performance Order Storage is supported.

See it in action

Where you deliver from: the address every distance is measured from, looked up once when you save it, and the unit distances are priced in.
Branches: more places to deliver from, up to ten. Each customer is priced from the nearest of them.
The delivery method on a shipping zone: a table of distance bands, or a starting charge and a rate for each mile beyond the distance it covers.
Rules: add a fixed amount, an amount per unit or a percentage to the delivery charge, or refuse delivery, when the cart holds particular products, categories or shipping classes.
The block cart pricing the delivery by distance, with the distance in the name of the method.
The same method on the block checkout, with its charge.
A customer too far away is told so in your own words, in the cart and at checkout.
Surcharges: extra charges for chosen weekdays and times of day, fixed or a percentage, in your shop's time zone.
Distance options: round trips, a daily limit on lookups, how long answers are kept, and an optional Google key for address suggestions on product pages.
A product priced by distance. The customer checks the distance from their address on the product page and the travel charge is added to the cart.

What the plugin does

  • A delivery method you add to any shipping zone, as many times as you like, so a van and a bicycle can each have a table of their own.
  • Price a delivery from a table of distance bands, such as "up to 5 km is 4.00, up to 10 km is 7.00". The last band is the furthest the method delivers.
  • Or a starting charge plus a rate for every mile or kilometre past a distance the starting charge covers.
  • A lowest charge, a highest charge and a furthest delivery distance.
  • Miles or kilometres, for the whole shop.
  • The address you deliver from, looked up once when you save it, or typed as latitude and longitude to skip the lookup.
  • Straight-line distance by default, from the address OpenStreetMap finds, with an optional percentage added to allow for roads.
  • Driving distance from a routing server you run or rent (OSRM), or from Google with your own key.
  • Your own wording when delivery is not offered, because the address is too far, cannot be found or the service is not answering, on the classic and block cart and checkout.
  • A fallback charge for an address that cannot be found.
  • Saved lookups, so an address found once is not looked up again, with a button to clear them.
  • The classic cart and checkout and the Cart and Checkout blocks, zoned and taxed like any other shipping method.
  • Several branches: each customer is priced from the nearest by straight line, and only that one is sent to a routing service.
  • Rules by product, category and shipping class that add a fixed amount, an amount per unit or a percentage to the delivery charge, or refuse delivery. Every matching rule applies in order, and a refusal wins.
  • Weekday and time-of-day surcharges, fixed or a percentage, in your shop's time zone, including windows that run past midnight.
  • Round-trip distances, so every distance is counted twice.
  • A daily limit on lookups, a usage report (today, the last 7 days, failures and saved answers used) and a choice of how long saved answers are kept, from 1 to 90 days.
  • Products priced by distance: the customer enters an address on the product page and the travel charge is added to the cart as a fee, once for each line of that product.
  • A product priced by distance cannot be added to the cart without a quote, on the classic cart and the Cart block.
  • Optional Google address suggestions on the product page, with a separate browser key of your own.
  • A suggested paragraph for your privacy policy, naming the service in use.
  • Settings import and export, including branches, rules and surcharges, for a backup or another shop. The Google key is never exported.
  • High-Performance Order Storage.
  • PluginCity licensing, updates and direct support.

Pricing

Every Pro plan is the same plugin with every feature. The only difference is how many sites you can run it on.

Prices in

Single site

One site, with a year of updates and support.

$49/year

Secure checkout. Cancel any time.

5 sites

Most popular

Up to 5 sites, with a year of updates and support.

$99/year

Secure checkout. Cancel any time.

25 sites

Up to 25 sites, with a year of updates and support.

$199/year

Secure checkout. Cancel any time.

Need more than 25 sites? Get in touch about a custom licence.

Frequently asked questions

How is the distance measured?

You choose. Straight line is the default: OpenStreetMap finds the address and the plugin measures the distance a bird would fly, which is shorter than the road. You can add a percentage to allow for roads. For a driving distance, choose a routing server you run or rent (OSRM) or Google with your own key.

Is it a driving distance?

Only if you choose it. Straight line is not a road distance, and the settings screen says so. Choose OSRM or Google if you want the driving distance.

Do I need a Google account or key?

No. Straight line, the default, does not need one. Google is there if you want driving distances, with your own key, and Google bills you for those requests. A second, separate Google key is only for address suggestions on product pages, and is optional.

Which services does it contact, and what do they receive?

Only the one you choose. OpenStreetMap Nominatim, the default, receives the delivery address, or the address you deliver from. An OSRM server you supply receives map coordinates only, never an address. Google, if you choose it, receives the address and then the coordinates. A request is made only while a customer's delivery is being priced, or while an administrator saves the address you deliver from. Nothing is sent on activation or on a schedule.

What does PluginCity receive?

Licence and update checks, and nothing else. Customer addresses, distances and charges are not sent to PluginCity.

Is customer data kept?

A found location is kept against a scrambled copy of the address for 30 days, or for 1 to 90 days if you choose another length, and then expires. The plugin keeps nothing else about a customer. It adds a suggested paragraph naming the service in use to Settings, Privacy, Policy Guide.

What if the address cannot be found, or is too far away?

The customer sees your own wording. For an address that cannot be found you can set a fallback charge, so they are offered that instead of losing the sale. A customer outside your furthest delivery distance is told delivery is not offered.

Will the public OpenStreetMap server cope with a busy shop?

The public Nominatim server asks for no more than one request a second, so the plugin spaces lookups out and saves every answer, and an address found once is not asked for again. A busy shop should point the plugin at its own Nominatim server, which is a setting.

Can I deliver from more than one place?

Yes. Add branches, up to ten. Each customer is priced from the nearest of your branches and your main address by straight line, and only that one is sent to Google or a routing server, so more branches do not mean more charges.

Do rules and surcharges stack?

Yes. Every rule that matches applies, in the order you wrote them, then every surcharge in force. A rule that refuses delivery wins over the rest. A surcharge is judged by the moment the customer is shown the price, in your shop's time zone, and a window that runs past midnight belongs to the day it starts on.

What happens when the daily limit on lookups is reached?

Customers are offered your fallback charge, or no delivery if you set none, until the next day. Orders are never blocked by it.

How does a product priced by distance work?

The customer enters an address on the product page and the shop measures it. The travel charge is added to the cart as a fee, once for each line of that product. The browser never sends a price, only the distance is kept, and the charge is worked out again from the product's settings every time the cart is totalled.

Does it work with the block cart and checkout?

Yes. The delivery method is a WooCommerce shipping method, so the classic and block cart and checkout, the mini-cart, orders and emails all show it. The message for a customer too far away is shown on both.

Can I use more than one delivery method?

Yes. Add the method to as many shipping zones as you like, or twice to one zone with different tables, such as a van and a bicycle.

Does it work with High-Performance Order Storage?

Yes. It does not write distances or charges to orders.

How do updates and support work?

Download the plugin from your PluginCity account and enter your licence key under WooCommerce, Distance Based Pricing, Licence. Updates then appear on the Plugins screen, and the key also connects the site to direct support.

What happens if my licence lapses?

Nothing is deleted. Delivery is priced from your main address by the distance table, as before. Your branches, rules, surcharges and distance options stay on the screen as words you can read but not change, and products priced by distance sell at their ordinary price. Renewing switches them back on as you left them.

Requires WordPress 6.7+ · WooCommerce 10.0+ · PHP 8.1+

More plugins