Skip to main content
Guides

Local Delivery for a Shopify Food Store: Zones, Minimums, Hours & Pickup (2026)

Jahangir AlamAugust 5, 202613 min read
local delivery + pickup

Local delivery for a food store isn't one feature — it's a specific combination: deliver to nearby areas (not nationwide), require a minimum order so small deliveries don't lose money, only take orders while the kitchen is open, and offer pickup for everyone else. Shopify can do most of this, but there's a native limitation that quietly breaks it for a chunk of your customers — and almost no setup guide warns you about it.

This is the setup, told as one scenario, with the catch made obvious and the fix that makes your delivery rules hold for every customer, not just the ones paying with Shop Pay.

Quick answer: setting up local delivery for a Shopify food store

Turn on Shopify's native local delivery (zones by radius or postal code, with a per-zone fee and minimum), add local pickup, and switch off nationwide shipping — then enforce your delivery minimum, opening hours, and capacity at checkout with a Shopify Function so they hold across every wallet. The catch: native local delivery only works with Shop Pay, so Apple Pay, Google Pay, Amazon Pay, and PayPal customers don't get it. OrderRules closes that gap — its checkout enforcement runs on every payment method — and adds the hours, minimums, capacity, and scheduled pickup that native local delivery leaves out.

The scenario

Picture a burger shop that delivers to three nearby suburbs and offers pickup, with no nationwide shipping. It needs, in order:

  1. Delivery zones — the areas it will actually drive to.
  2. A delivery minimum — so a single $6 order doesn't cost money once the driver's paid.
  3. Opening hours — orders only while the kitchen is on.
  4. Pickup — for customers who'd rather collect.
  5. No shipping — so nobody orders a burger to be posted across the country.
  6. Capacity control — so a rush doesn't bury the kitchen.

Shopify handles zones, a fee, and a minimum natively. The other four — and one big catch on the first three — are where this guide earns its keep.

Step 1 — Set your local delivery zones

In Shopify, native local delivery is set per location. You define a zone two ways:

  • By radius — up to 100 miles / 160 km around the location (it can include neighboring regions, but not other countries).
  • By postal code — paste a list of the postcodes you serve (up to 3,000 characters).

You can create up to 10 zones per location, each with an optional delivery fee and up to 3 price-based rules (e.g. free delivery over $40), plus a minimum order amount for delivery. A radius is faster to set up; postcodes are more precise when a delivery boundary runs down the middle of a suburb — most shops start with a radius and switch to postcodes once they know exactly which streets they'll drive to. For most food shops that's enough to define where you deliver and what it costs.

If you need distance-based rates, hand-drawn map zones, or driver routing and dispatch, that's a separate layer — apps like Zapiet (zones, rates, scheduling) or EasyRoutes (route optimization and driver tracking) add it. OrderRules doesn't do zone geofencing or dispatch; it does the rules that sit on top.

The catch nobody warns you about: express wallets

Here's the limitation that breaks local delivery for real customers. Shopify's own help page says it plainly:

"Local delivery works with Shop Pay, but doesn't work with other accelerated checkouts such as Apple Pay, Google Pay, Amazon Pay, or PayPal."

When a shopper taps Apple Pay or Google Pay at the start of checkout, local delivery simply doesn't appear — checkout defaults to shipping (which, for a local-only food store, may not exist). On a phone, where most food orders happen and express wallets are everywhere, that's a lot of customers dropped or confused.

And it's a silent failure. You test checkout with a card, local delivery shows up, everything looks fine — meanwhile the Apple Pay customers who never saw a delivery option just close the tab. You don't get an error to investigate; you get a quieter conversion rate. That's what makes this limitation worth designing around up front rather than discovering months later.

Shopify's documented native workaround is blunt: deactivate those express checkouts if local delivery is core to your business. (A 2026 change lets customers use Apple Pay inside the Shop Pay flow, but standalone Apple Pay / Google Pay / PayPal / Amazon Pay buttons still bypass local delivery — the limitation is not fixed.)

The better fix doesn't cost you a payment method. A Shopify checkout validation Function runs on every payment path — Shopify's docs are explicit that this "includes express checkouts, such as Shop Pay, PayPal, Google Pay, and Apple Pay." So instead of turning off wallets, you enforce your delivery rules (minimum, hours, eligibility) at checkout where every wallet has to pass through. That's the mechanism behind the next three steps.

Step 2 — Set a delivery minimum that actually holds

Native local delivery has a per-zone minimum, but it rides the same Shop-Pay-only limitation. To make a minimum that holds for every customer, enforce a minimum order value with a checkout Function. A shopper paying with Apple Pay who's under your $20 delivery minimum gets blocked at checkout, same as everyone else — no leaky path. See the minimum order value guide. OrderRules does this on the Pro plan.

Step 3 — Enforce your opening hours at checkout

This is the one native local delivery just doesn't do: it has no concept of opening hours and will take a delivery order in the middle of the night. Add store hours so checkout closes when the kitchen is off, with a clear "we're closed, back at 11" message instead of an order you'll refund. Because it runs at checkout via a Function, it holds across every wallet. See how to set store hours and display vs. enforcement.

Step 4 — Add pickup

Turn on local pickup per location. Native pickup shows customers a processing time ("ready in about 1 hour") — but it does not let them choose a pickup date or time slot, and there's no per-slot capacity. If you want customers to book a pickup window (and cap how many collect in each), add a scheduling app; OrderRules offers a delivery/pickup date and time-slot picker with per-slot caps on the Advanced plan. See delivery time slots.

Step 5 — Turn off nationwide shipping

If you only deliver locally and offer pickup, make sure a customer can't accidentally choose shipping. Remove or empty your shipping rates (or the shipping delivery profile) so the only options at checkout are local delivery and pickup. Nothing frustrates a local customer more than a "shipping" line on a hot-food order — and nothing burns you more than accepting one.

Step 6 — Cap delivery capacity and cutoffs

Native local delivery has no capacity controls, so a viral Friday can hand your kitchen more deliveries than it can cook or drive. Add:

  • Per-day and per-slot capacity caps, so a delivery window sells out instead of overbooking. (See delivery capacity limits.)
  • An order cutoff and prep lead time, so late orders roll to the next window. (See cutoff times.)

Both enforce at checkout across every payment method — the recurring theme of this whole setup.

Native Shopify vs. what you'll add

CapabilityNative Shopify local deliveryWhat you add
Delivery zones (radius / postcode)Yes (10 zones, 100 mi)— (or Zapiet for advanced zones)
Per-zone delivery fee + minimumYesMinimum that holds across all wallets (OrderRules)
Works with Apple/Google Pay, PayPalNo — Shop Pay onlyCheckout-Function enforcement (all wallets)
Opening-hours enforcementNoStore hours (OrderRules)
Delivery/pickup time slots + capacityNoSlot picker + caps (OrderRules)
Scheduled pickup (customer picks a time)No (only "ready in X")Pickup scheduling (OrderRules)
Distance-based rates / driver routingNoZapiet / EasyRoutes

The pattern: native gets you the map; you add the rules (and the routing, if you need it).

Delivery radius, minimums & fees: getting the numbers right

The settings are easy; the numbers are what make local delivery profitable. Rules of thumb for a food store:

  • Radius — set it to what your drivers can reach with hot food on time, not the maximum Shopify allows. A tight 3–5 km radius usually beats a 20 km one: faster deliveries, better food, fewer refunds. Start small and widen only if you can keep delivery times honest.
  • Minimum order — set it above the point where a delivery loses money once the driver's paid. If a run costs you $8, a $12 minimum barely breaks even; many food shops land at $20–30. The minimum only works if it's enforced at checkout for every wallet (Step 2).
  • Delivery fee vs. free-over-threshold — a flat fee covers the driver; a "free delivery over $40" rule nudges customers to add an item and lifts your average order. Shopify allows up to three price-based rules per zone, so you can do both.
  • Different rules per zone — charge more, or require a higher minimum, for the farthest suburb. It keeps distant deliveries worthwhile without punishing your core area.

Model these against your real average order value and driver cost before launch — the gap between a $15 and a $25 minimum is often the gap between local delivery paying for itself and quietly draining margin.

Delivery + pickup: offer both

Offer both and let customers self-select — pickup is your friend. Every pickup order is one you don't pay a driver for and one that doesn't consume delivery-slot capacity, so pickup is a pressure valve on a busy night:

  • Nudge pickup with a small perk — a discount or a free side for collecting takes load off delivery capacity at peak.
  • Give pickup its own prep time — native pickup shows a "ready in X"; add scheduling if you want customers to book a slot and cap how many collect at once.
  • Keep hours consistent — the same store-hours rule closes checkout for both delivery and pickup, so neither takes orders while you're shut.

The result: every customer gets delivery or pickup — never a shipping option you don't offer, and never an order outside your hours or capacity.

Where OrderRules fits — and where it doesn't

To be clear about scope: OrderRules is the rules layer that enforces your minimum order value, opening hours, capacity caps, cutoffs, scheduled delivery/pickup, and per-customer limits at checkout — across every payment method, which is exactly where native local delivery falls down. It does not draw delivery zones or calculate distance-based rates (native local delivery or Zapiet do that), and it does not route or dispatch drivers (EasyRoutes and similar do that). Use it alongside those — it's the piece that makes your delivery rules actually stick.

Your own drivers or a dispatch app?

Someone has to carry the food, and local delivery gives you two options:

  • Your own drivers — cheapest for a tight radius, and you control the customer's last impression. Fine when volume is low and the area is small.
  • A dispatch / routing app — as you grow, an app like EasyRoutes batches orders into efficient routes and gives customers live tracking (the experience they got used to on the delivery apps).

Either way, keep the division of labor straight: the routing app moves orders; OrderRules controls which orders you accept — in-hours, above the minimum, within capacity — so the ones reaching your driver are always deliverable. It's the same rules-layer split covered in how to start a food delivery business on Shopify.

Local delivery on your store vs. on the marketplaces

You could run local delivery through DoorDash or Uber Eats instead — but they take 15–30% of every order and won't enforce your hours or capacity. Running it on your own Shopify store keeps that margin and gives you the controls above; the common play is to use the apps for discovery and drive repeat customers to your own store. See own Shopify store vs. food-delivery marketplaces for the full trade-off, and run a ghost kitchen on Shopify if you're delivery-only.

Common mistakes to avoid

  • Not knowing about the wallet limitation. You test with a card, it works, and you never see the Apple Pay customers who couldn't check out. Enforce eligibility at checkout.
  • A delivery minimum only in native settings. It leaks through express wallets. Enforce it with a Function.
  • No hours enforcement. Taking (and refunding) 3am delivery orders.
  • Leaving shipping on. Local customers pick "shipping" for hot food, or you accept an order you can't post.
  • No capacity cap. One busy night buries the kitchen and the driver.
  • Too wide a radius. Cold food and late deliveries hurt your reviews faster than a small delivery area ever will.
  • Only testing with a card. Always place a test order with Apple Pay to catch the express-wallet gap before your customers do.

Quick setup checklist

For a local-only food store, the whole setup in one list:

  1. Zones — radius or postcodes for the areas you'll actually drive to.
  2. Delivery fee + free-over-threshold — cover the driver, nudge bigger orders.
  3. Shipping off — so no one orders hot food to be posted.
  4. Pickup on — with a realistic "ready in X" prep time.
  5. Minimum order — enforced at checkout across every wallet, not just in native settings.
  6. Store hours — checkout closes when the kitchen's off.
  7. Capacity caps + cutoff — so a rush can't bury the kitchen or the driver.
  8. Test with Apple Pay, not just a card — to catch the express-wallet gap.

Items 5–7 (and the cross-wallet enforcement on all of them) are OrderRules; 1–4 are native Shopify, plus a zones app if you need distance-based rates or driver routing.

The bottom line

Local delivery for a food store is a combination — zones, a minimum, hours, pickup, no shipping, and capacity — and Shopify natively covers only part of it, with a wallet limitation that silently drops customers. Set the zones natively, switch off shipping, and enforce the minimum, hours, and capacity at checkout so they hold for every customer, however they pay.

Start OrderRules free to add store hours, a delivery minimum, capacity caps, and scheduled pickup to your Shopify food store — enforced at checkout across Shop Pay, Apple Pay, Google Pay, and every other way your customers pay.

Frequently asked questions

Yes. Shopify has native local delivery — you set a zone by radius (up to 100 miles / 160 km) or by a list of postal codes (up to 10 zones per location), with an optional per-zone delivery fee and a minimum order amount. What it doesn't do natively: delivery time slots, per-slot capacity limits, opening-hours enforcement, or distance-based rates and driver routing — those need an app. And it has a significant payment-wallet limitation (below).

Because Shopify's native local delivery only works with Shop Pay. Shopify's own help page states it 'doesn't work with other accelerated checkouts such as Apple Pay, Google Pay, Amazon Pay, or PayPal.' A customer who picks one of those wallets never sees local delivery and defaults to shipping. Shopify's documented native fix is to deactivate those express checkouts; the better fix is to enforce your delivery rules with a Shopify checkout Function, which runs across every payment method.

Native local delivery lets you set a minimum order amount per zone, but it inherits the Shop-Pay-only wallet limitation. To make a minimum that holds for every customer, use a minimum order value enforced by a Shopify checkout validation Function — it runs across Shop Pay, Apple Pay, Google Pay, PayPal, and standard checkout, so a below-minimum delivery order is blocked no matter how the customer pays. OrderRules does this on the Pro plan.

Native local delivery has no opening-hours enforcement — it will happily take a delivery order at 2am. Add store hours that close checkout outside your service hours with a clear message. OrderRules enforces this server-side at checkout (across all wallets), so a closed kitchen can't take orders it won't cook.

Keep local delivery and local pickup enabled, and remove or empty your shipping rates (or delivery profiles) so no shipping option appears at checkout. That way a customer can only choose delivery or pickup — not a nationwide shipping method you don't actually fulfill. Watch the express-wallet limitation: with shipping off, an Apple Pay user could still be blocked from local delivery, so enforce eligibility at checkout.

No. Native local pickup only shows a processing time (a 'ready in X' estimate you set per location) — customers can't choose a specific pickup date or time slot, and there's no per-slot capacity. For scheduled pickup with slots and caps, add a scheduling app such as OrderRules (delivery/pickup date + time-slot picker on the Advanced plan).

In native local delivery, define a zone per location by radius (up to 100 mi / 160 km) or by pasting a list of postal codes (up to 3,000 characters), with up to 10 zones and up to 3 price-based delivery-fee rules per zone. For distance-based rate calculation, map-drawn zones, or driver routing and dispatch, add an app like Zapiet or EasyRoutes — that's a separate layer from the ordering rules.

Store hours with a closed-checkout block and a daily order cap are on the free Starter plan. A minimum order value and per-customer limits are on Pro ($9.99/month). The full delivery suite — date/time-slot picker, per-date and per-slot capacity, cutoffs, blackout dates, and scheduled in-store pickup — is on Advanced ($19.99/month). All of it enforces at checkout across every payment method, on any Shopify plan (no Plus).

Comparing apps?

See how OrderRules stacks up against every other Shopify app in this category.

Ready to take control of your orders?

Try OrderRules Free