WPSlash

How to Set Up a Delivery Zone and Distance-Based Shipping Fee System in WooCommerce (2025)

Friday April 24, 2026

Why Delivery Zones Matter for Restaurant Websites

A customer finds your restaurant online, spends ten minutes building the perfect order, heads to checkout — and discovers you don’t deliver to their address. Or worse, they see a delivery fee so high it kills their appetite entirely. Both scenarios end the same way: an abandoned cart and a customer who probably won’t come back.

This is the reality for restaurant owners who skip proper delivery zone configuration. Unlike a typical eCommerce store shipping nationally through carriers like UPS or FedEx, a restaurant operates within a tight geographic radius where every mile matters. A five-mile delivery costs you significantly less in driver time and fuel than a fifteen-mile one, and your pricing should reflect that.

There are three common approaches to delivery fees:

  • Flat-rate delivery: One fixed fee regardless of distance. Simple, but you’ll either overcharge nearby customers or lose money on far-flung orders.
  • Zone-based delivery: Different fees for different geographic areas (e.g., $2 within 3 miles, $5 within 7 miles). A solid middle ground that’s easy for customers to understand.
  • Distance-based delivery: Fees calculated dynamically based on the actual driving distance or straight-line radius from your restaurant. The most precise and fair approach, but requires a bit more setup.

Most successful restaurant delivery operations use a combination of these — free delivery close by, tiered zone pricing for medium distances, and either a premium fee or a hard cutoff for the outer edge of their service area. Let’s walk through how to build this entire system in WooCommerce.

Setting Up WooCommerce Shipping Zones for Local Food Delivery (Step by Step)

WooCommerce ships with a built-in shipping zone system that works surprisingly well for basic restaurant delivery setups. You don’t need any plugins to get started — just a clear idea of the areas you want to serve.

Creating Your First Delivery Zone

Head to WooCommerce → Settings → Shipping in your WordPress dashboard. You’ll see a “Shipping zones” tab. Click Add shipping zone and give it a descriptive name like “Downtown — Free Delivery” or “Zone 1 — Close Range.”

Under Zone regions, you have several options. For restaurant delivery, the most practical choices are:

  • Postcodes/ZIP codes: Enter specific codes separated by commas (e.g., 10001, 10002, 10003). You can also use wildcard ranges like 100* to cover all codes starting with 100.
  • States or countries: Too broad for most restaurants, but useful if you operate a meal prep or catering service covering an entire state.

After defining the region, click Add shipping method and choose Flat rate. Set your delivery fee — say $3.00 for your closest zone. Repeat this process for each zone you want to create: perhaps a $5.00 zone for medium distances and a $8.00 zone for your outer delivery boundary.

Setting Up a Free Delivery Threshold

Want to offer free delivery on orders over a certain amount? Add a second shipping method to any zone — choose Free shipping and set the condition to “A minimum order amount” (for example, $30). WooCommerce will automatically show both options at checkout, and customers who hit the threshold can select free delivery.

A practical tip: set your free delivery minimum just above your average order value. If most orders land around $25, a $30 free delivery threshold nudges customers to add one more item — boosting your revenue without costing you much.

[IMAGE: Screenshot of the WooCommerce shipping zones settings page showing three configured delivery zones with different flat rates and zip code regions]

The Limitation of Built-In Zones

The built-in system works well if your delivery area maps neatly to ZIP codes. But restaurants rarely think in postal codes — they think in miles or kilometers from their kitchen. A single ZIP code can stretch across areas that are both within and outside your practical delivery range. That’s where distance-based plugins come in.

How to Add Distance-Based or Radius-Based Delivery Fees With Plugins

For restaurants that want precise, address-level delivery fee calculations, you’ll need a plugin that integrates with mapping services. There are a few approaches worth considering.

Using FoodMaster’s Built-In Delivery Zone System

If you’re running a restaurant ordering site on WooCommerce, FoodMaster is purpose-built for exactly this scenario. Unlike generic shipping plugins designed for physical product stores, FoodMaster includes delivery zone management tailored specifically for food businesses.

With FoodMaster, you can draw delivery zones directly on a map, set per-zone delivery fees, define minimum order amounts per zone, and restrict ordering entirely outside your service area. This visual, map-based approach is far more intuitive than juggling ZIP codes manually. You can also configure separate settings for delivery, pickup, and dine-in — something no generic WooCommerce shipping plugin handles natively.

The plugin also supports features like delivery time slots, which tie directly into your zone configuration. A farther zone might have longer estimated delivery windows, and you can communicate that clearly to customers during checkout.

Connecting the Google Maps Distance Matrix API

Distance-based plugins — whether standalone or built into a solution like FoodMaster — typically rely on the Google Maps Distance Matrix API to calculate actual driving distances between your restaurant and the customer’s address. Here’s how to set it up:

  1. Go to the Google Cloud Console and create a new project (or use an existing one).
  2. Enable the Distance Matrix API, Maps JavaScript API, and Geocoding API.
  3. Generate an API key under Credentials.
  4. Restrict the key to your website’s domain for security.
  5. Paste the API key into your plugin’s settings.

Google offers a $200 monthly credit for Maps Platform usage, which covers roughly 40,000 distance calculations per month — more than enough for most single-location restaurants. You won’t pay anything unless you exceed that volume.

Configuring Per-Mile or Per-Kilometer Rates

Once your API is connected, you can set up pricing rules. A common structure looks like this:

  • 0–3 miles: Free delivery (or $1.99)
  • 3–6 miles: $0.75 per mile beyond 3 miles
  • 6–10 miles: $1.25 per mile beyond 6 miles
  • Beyond 10 miles: Delivery unavailable

This tiered approach ensures customers close to your restaurant aren’t subsidizing deliveries across town, while still giving you coverage over a reasonable area. Set a maximum delivery radius as a hard cutoff — this prevents someone 30 miles away from placing an order you can’t fulfill.

Combining Delivery Zones With Minimum Order Amounts and Free Delivery Offers

Smart delivery pricing isn’t just about covering your costs — it’s a strategic tool for increasing order value and steering customer behavior.

Minimum Order Requirements by Zone

Delivering a $12 order across town is a losing proposition for nearly any restaurant. That’s why tying minimum order amounts to delivery zones makes so much financial sense. Here’s a real-world example of how a pizza restaurant might structure this:

  • Zone 1 (0–3 miles): $15 minimum order, $2.99 delivery fee, free delivery over $25
  • Zone 2 (3–6 miles): $25 minimum order, $4.99 delivery fee, free delivery over $40
  • Zone 3 (6–10 miles): $35 minimum order, $6.99 delivery fee, no free delivery option

This structure accomplishes several things simultaneously. It prevents unprofitable small orders from distant locations. It incentivizes larger orders through free delivery thresholds. And it naturally pushes your average order value upward — customers in Zone 2 who might have ordered $22 worth of food will add a side or dessert to hit that $25 minimum.

Free Delivery as a Marketing Lever

Offering free delivery within your closest zone (say, a 2-mile radius) is one of the most effective promotions a restaurant can run. The actual cost to you is minimal — a short delivery takes maybe 10–15 minutes round trip — but the perceived value to the customer is significant. Research from delivery platforms consistently shows that free delivery is the single biggest factor influencing whether a customer completes an order.

You can set this up in FoodMaster by configuring your innermost delivery zone with a $0 delivery fee, while applying standard fees to outer zones. This keeps your closest, most loyal neighborhood customers happy while maintaining profitability on longer deliveries.

[IMAGE: A visual diagram showing concentric delivery zones around a restaurant pin on a map, with pricing tiers labeled for each ring — free delivery in the inner circle, increasing fees in outer rings, and a red boundary marking the maximum delivery radius]

Displaying Delivery Zones and Fees Clearly on Your Restaurant Website

Even the most perfectly configured delivery system fails if customers can’t figure out whether you deliver to them before they invest time building an order. Transparency here directly impacts your cart abandonment rate.

Address Lookup at Checkout

The gold standard is an address autocomplete field that validates delivery eligibility in real time. When a customer starts typing their address, the field suggests matches via Google Places, and your system immediately confirms whether the address falls within a delivery zone — and what the fee will be.

This is far better than making customers complete an entire order only to discover at the final step that delivery isn’t available. FoodMaster supports this kind of address validation at the ordering stage, so customers know their delivery status upfront. If you want to dive deeper into setting up <a href="https://www.wpslash.com/how-to-set-up-google-address-autocomplete-for-your-woocommerce-restaurant-checkout-step-by-step/" title="How to Set Up Google Address Autocomplete for Your WooCommerce Restaurant Checkout (Step by Step)”>Google address autocomplete on your checkout page, that’s a topic worth exploring alongside your zone configuration.

Adding a Delivery Zone Map

Consider embedding a simple map on a dedicated “Delivery Info” page that visually shows your coverage area. You can create this with a Google Maps embed and custom overlays, or use a plugin that generates the map from your zone settings. A visual map answers the “do you deliver to me?” question instantly — no address entry required for a quick check.

Writing a Clear Delivery Information Page

Create a page (linked from your main navigation and footer) that spells out:

  • Your delivery hours (which may differ from dine-in hours)
  • The areas you serve, listed by neighborhood name or ZIP code
  • Your fee structure in a simple table format
  • Minimum order requirements per zone
  • Estimated delivery times per zone
  • What happens if an order falls outside your area (suggest pickup as an alternative)

This page does double duty: it reduces customer service inquiries and improves your <a href="https://www.wpslash.com/how-to-optimize-your-restaurant-website-for-local-seo-in-wordpress-so-hungry-customers-find-you-first/" title="How to Optimize Your Restaurant Website for Local SEO in WordPress (So Hungry Customers Find You First)”>local SEO, since you’re naturally including neighborhood names and geographic terms that people search for.

Testing, Troubleshooting, and Optimizing Your Delivery Fee Setup

Launching your delivery zones is just the beginning. You need to verify everything works correctly, then refine it based on real order data.

Testing With Real Addresses

Before going live, place test orders using addresses at the edges of each zone boundary. Specifically test:

  • An address clearly inside Zone 1 — does the correct fee appear?
  • An address right on the boundary between Zone 1 and Zone 2 — which fee applies?
  • An address just outside your maximum delivery radius — is the order properly blocked or flagged?
  • An address in a different city or state — does the system prevent ordering?

Test on both desktop and mobile. A surprising number of delivery zone issues only surface on mobile devices where the address autocomplete behaves differently.

Common Issues and Fixes

Overlapping zones: If a ZIP code appears in two zones, WooCommerce uses the first matching zone in your list. Drag your zones into the correct priority order on the Shipping settings page — put your most specific (smallest) zones at the top.

Incorrect distance calculations: If the API returns straight-line (“as the crow flies”) distances instead of driving distances, check that you’ve enabled the Distance Matrix API (not just the Geocoding API) and that your plugin is configured for driving mode, not straight-line radius.

API key errors: The most common cause is domain restrictions that don’t match your actual site URL. Make sure you’ve added both yourdomain.com and www.yourdomain.com to your allowed referrers in the Google Cloud Console.

Optimizing Over Time With Order Data

After a month of orders, pull your WooCommerce order data and analyze it by delivery zone. Look for:

  • Order volume by zone: If Zone 3 generates only 5% of orders but causes 30% of your delivery complaints, consider shrinking or eliminating it.
  • Average order value by zone: If farther zones have higher AOV (because of your minimum order requirements), your pricing structure is working.
  • Delivery time by zone: If Zone 2 deliveries consistently take 45+ minutes, you may need to either tighten that zone’s radius or set more realistic time estimates.
  • Refund and complaint rates: Cold food complaints that cluster in outer zones are a signal to adjust your maximum delivery distance.

Revisit your zone boundaries and pricing quarterly. Seasonal changes, new road construction, and shifts in your customer base all affect what makes sense. A delivery zone setup isn’t a “set it and forget it” configuration — it’s a living part of your business strategy.

A Final Practical Note

If you’re building a restaurant ordering website from scratch, choosing a WooCommerce restaurant plugin that handles delivery zones natively — rather than bolting on generic shipping plugins — saves you enormous setup time and ongoing headaches. FoodMaster, for instance, integrates zone management, order type selection (delivery, pickup, dine-in), and checkout validation into a single cohesive system. That means fewer plugin conflicts, a smoother customer experience, and less time troubleshooting mismatched settings across three or four different tools.

Get your zones right, price them fairly, communicate them clearly, and you’ll turn delivery from a cost center into a genuine competitive advantage — one that keeps customers ordering directly from your site instead of handing 30% commissions to third-party platforms.

Leave a Comment

Your email address will not be published. Required fields are marked *