Local delivery exploded during the pandemic. It stayed because customers liked it. Your local shop or restaurant can compete with DoorDash and Instacart by offering direct delivery — keeping the full margin instead of paying 15-30% platform fees.
WooCommerce handles local delivery well, but it requires specific configuration that most guides skip. This is the practical setup guide for restaurants, grocery stores, bakeries, and local retail shops.
Why Direct Local Delivery Beats Third-Party Platforms
Let's compare the economics:
Third-party platform (DoorDash, UberEats, Instacart):
- Commission: 15-30% of order value
- No customer data (the platform owns the relationship)
- No control over delivery experience
- Competing with every other restaurant/store on the platform
Direct delivery through your WooCommerce store:
- Cost: $3-8 per delivery (driver + fuel)
- You own all customer data
- Full control over experience
- No competition on your own site
On a $40 order: DoorDash takes $6-12 in commission. Your own delivery costs $3-8. That's $4-9 more profit per order, plus you build a direct customer relationship.
The math only gets better at volume. 20 deliveries per day x $6 savings = $120/day = $43,800/year in saved commissions.
WooCommerce Local Delivery Setup
Step 1: Configure Delivery Zones
WooCommerce has built-in shipping zones that work for local delivery.
Go to WooCommerce → Settings → Shipping → Add Zone:
Zone 1: Close range (0-3 miles)
- Free delivery or $2-3 delivery fee
- 30-45 minute delivery promise
Zone 2: Medium range (3-7 miles)
- $5-8 delivery fee
- 45-60 minute delivery promise
Zone 3: Extended range (7-12 miles)
- $10-12 delivery fee (or minimum order of $50+)
- 60-90 minute delivery promise
How to set zones by distance: WooCommerce's native zones use postal codes/ZIP codes. Map out which ZIP codes fall within your delivery radius.
For more precise radius-based zones: WooCommerce Distance Rate Shipping ($79/year) or Jetstash Distance Based Shipping calculate delivery fees based on actual distance from your store.
Step 2: Add Local Pickup Option
Always offer pickup alongside delivery. Some customers are nearby and prefer to save the fee.
WooCommerce → Settings → Shipping → Add "Local Pickup" to each zone:
- Set to free (standard) or add a small discount incentive
- Add pickup instructions in the method description ("Pickup at 123 Main St, side entrance")
Step 3: Set Up Time Slot Selection
This is critical for food delivery and useful for all local delivery. Customers need to choose when they want their order.
Plugins for time slot management:
Jetstash Delivery Slots for WooCommerce (from $49/year):
- Date and time picker at checkout
- Configurable time slots (30min, 1hr, 2hr windows)
- Capacity limits per slot
- Blackout dates for holidays
- Same-day delivery cutoff times
Order Delivery Date Pro ($99/year):
- Calendar-based date selection
- Time slots with capacity management
- Delivery charges by date/time
- Holiday management
Configuration example for a restaurant:
- Delivery hours: 11:00 AM - 9:00 PM
- Time slots: 30-minute windows
- Max orders per slot: 5 (based on kitchen/driver capacity)
- Same-day cutoff: 45 minutes before slot
- Minimum order for delivery: $20
Step 4: Order Management for Delivery
Standard WooCommerce order management works but needs tweaks for delivery:
Order notes: Use order notes to track delivery status ("Driver dispatched," "Delivered at 6:42 PM").
Custom order statuses: Add statuses like "Preparing," "Out for Delivery," and "Delivered" using the WooCommerce Order Status Manager plugin or custom code.
Order notifications: Enable SMS notifications so customers know when their order is being prepared and when the driver is on the way. Plugins: Jetstash WooCommerce SMS or integration with Twilio.
Driver Management
In-House Drivers
For most small operations (under 30 deliveries/day), in-house drivers are best:
Staffing models:
- Full-time driver (30+ deliveries/day, predictable schedule)
- Part-time drivers for peak hours (lunch/dinner rush)
- Owner/employee doubles as driver during slow periods
What drivers need:
- Reliable vehicle with insurance
- Phone with Google Maps
- Insulated delivery bag ($15-30)
- Access to order details (print or mobile app)
Driver app options:
- WooCommerce Delivery Drivers ($49/year): Assigns orders to drivers, GPS tracking
- Jetstash Local Delivery ($49/year): Route optimization, driver assignment
- Simple approach: Share orders via WhatsApp or a shared Google Sheet
Paying drivers:
- Hourly rate ($12-18/hour depending on region)
- Per-delivery rate ($3-6/delivery) — aligns incentives with volume
- Hybrid: base hourly + per-delivery bonus
- Vehicle allowance: $0.50-0.67/mile for drivers using personal vehicles
Third-Party Local Couriers
If hiring drivers isn't feasible:
- GoPuff Delivery Services — On-demand local courier
- Roadie — Local delivery marketplace
- DoorDash Drive — White-label delivery (no marketplace listing)
- Local courier services — Most cities have local courier companies that charge $5-12 per delivery
Third-party couriers cost more per delivery ($8-15) but eliminate the management overhead.
Google Business Profile Integration
Your Google Business Profile is your most important local discovery tool. Optimize it for delivery:
Setup
- Claim and verify your Google Business Profile
- Add your website URL (point to your WooCommerce store, not a generic homepage)
- Enable "Delivery" and/or "Curbside pickup" attributes
- Set accurate hours (including delivery hours)
- Add menu/product catalog (Google supports this for restaurants and retail)
Products/Menu in Google Business
Google Business lets you list products and menu items directly in your profile. When someone searches "pizza near me," your menu shows up in Google Maps.
For restaurants: Add your full menu with prices. For retail: Add your top products with photos and prices.
Google Ordering Integration
Google allows "Order Online" buttons that link to your WooCommerce store. Set this up:
- In your Google Business Profile → Links → Order ahead links
- Add your WooCommerce shop URL
- This creates a prominent "Order Online" button on your Google listing
Local SEO for Delivery Businesses
Local SEO gets your store found when people search "[product] delivery near me" or "[food] delivery [city name]."
On-Page SEO
Title tags:
- Homepage: "[Store Name] — [Product] Delivery in [City] | Order Online"
- Menu/shop page: "Order [Product] for Delivery in [City/Neighborhood]"
Content: Create a dedicated delivery page explaining:
- Your delivery area (with a map)
- Delivery times and fees
- How to order
- Minimum order requirements
Local Keywords to Target
- "[food type] delivery [city name]"
- "[product] delivery near me"
- "order [food] online [city name]"
- "[store type] with delivery [neighborhood]"
- "local [product] delivery [ZIP code]"
For WooCommerce-specific SEO tactics, see the SEO beginners guide.
Reviews
Reviews are the strongest local SEO signal. After every delivery:
- Send a follow-up SMS or email with a Google Review link
- Make it one-click easy (use a direct review link from Google Business)
- Respond to every review — positive and negative
- Target: 50+ reviews with 4.5+ average
Restaurant-Specific Setup
Restaurants have unique requirements that general WooCommerce guides miss:
Menu Management
Use WooCommerce product categories as menu sections:
- Appetizers
- Main Courses
- Sides
- Drinks
- Desserts
Product variations work for customization: size (small/medium/large), protein choice, spice level.
For complex modifiers ("add bacon," "substitute fries"): Use WooCommerce Product Add-Ons ($49/year) or YITH Product Add-Ons to add checkboxes and dropdowns to products.
Kitchen Integration
Orders need to reach the kitchen efficiently:
- Print orders: Use a receipt printer connected to WooCommerce (Star Micronics printers work well)
- Kitchen display: Tablet mounted in the kitchen showing incoming orders
- Audio alert: Notification sound for new orders (plugin: WooCommerce Notification)
Prep Time Management
Set realistic prep times and communicate them:
- Order confirmation should include estimated prep time
- Kitchen staff should update order status when food is ready
- Driver should be dispatched based on prep time (not order time)
Grocery Store and Local Shop Setup
Grocery stores and general retail have different needs:
Large Catalog Management
Grocery stores often have 500-5,000+ products. Management tips:
- Bulk import products via CSV
- Use categories that match how customers think (not how your store is organized)
- Enable search prominently (consider AI cart filling for stores with large catalogs — shoppers can type a grocery list instead of searching item by item)
- Show stock status ("In stock" / "Out of stock") clearly
Substitution Handling
Grocery delivery often requires substitutions. Set expectations:
- Add a checkout field: "Allow substitutions? (Yes/No)"
- Call/text for substitutions before delivering
- Build a substitution SOP for pickers
Order Weight and Capacity
Grocery orders can be heavy. Consider:
- Maximum order weight per delivery
- Multiple delivery fee tiers based on order size
- Vehicle capacity for your drivers
Operational Tips
Route Optimization
Batching deliveries saves time and fuel:
- Group orders going to the same area
- Use Google Maps or Route4Me for multi-stop routing
- Set delivery windows wide enough to allow batching (60-minute windows work)
Delivery Tracking for Customers
Customers want to know where their order is:
- Simple: Manual SMS updates ("Your order is on the way!")
- Better: Automated SMS at status changes (preparing → out for delivery → delivered)
- Best: Real-time tracking link (WooCommerce Delivery Drivers plugin, or integration with a service like Onfleet)
Handling Delivery Issues
- Wrong address: Driver calls customer. If unreachable, return to store.
- Nobody home: Leave at door (with customer's pre-authorization) or return.
- Damaged items: Refund or reship immediately. Don't argue.
- Late delivery: Apologize, offer discount on next order. Track why and fix the root cause.
Costs of Running Local Delivery
| Item | Monthly Cost |
|---|---|
| Delivery plugin(s) | $5-15 |
| SMS notifications | $10-30 |
| Insulated bags (one-time) | $30-60 |
| Driver labor (part-time, 20hrs/wk) | $960-1,440 |
| Fuel/vehicle costs | $200-500 |
| Packaging (bags, containers) | $100-300 |
| Total | $1,305-2,345 |
At 20 deliveries/day with $5 delivery fee + $40 average order: $800/day in delivery fee revenue + margin on products. Monthly delivery fees alone cover most of the operational cost.
The Competitive Advantage
Direct local delivery through WooCommerce gives you something DoorDash never will: a direct customer relationship. You collect emails, you control the experience, you set the prices, and you keep the margins.
It takes more setup than listing on a marketplace. But the economics are dramatically better, the customer experience is in your hands, and every customer you serve directly is one less customer paying inflated platform prices.
Start with a small delivery zone, a few time slots, and see how it goes. Expand based on demand. And always, always deliver on time — nothing builds local reputation faster than reliable delivery.
For local stores with large catalogs, List AI's AI cart filling lets customers type a shopping list and get a pre-built cart instantly. Perfect for grocery delivery — shoppers type their weekly list instead of clicking through hundreds of products.