Skip to content

Delivery Settings

Overview

Delivery Settings configure how customers can order for delivery. Set delivery fees, minimum orders, delivery times, and driver instructions.

Key Purpose: Configure delivery ordering options, fees, and timing.

Purpose

This page lets you configure all delivery-related settings for a location, including fees, minimum order amounts, timing, scheduling, delivery hours, and driver instructions.

Key Concepts

  • Delivery Fee: A base charge added to the order total for delivery, which can be overridden by zone-specific fees when delivery zones are enabled.
  • Free Delivery Threshold: An order subtotal above which the delivery fee is waived, encouraging customers to place larger orders.
  • Delivery Time Calculation: Total delivery time = preparation time + delivery travel time + additional delay buffer. This determines the earliest available delivery slot.
  • Time Slot Duration: The length of each selectable delivery window (e.g., 30-minute slots like "13:00-13:30"). Delivery slots are typically longer than pickup slots.
  • Delivery Hours: Specific hours during which delivery is available, which can be different from (and typically narrower than) the location's general business hours.

Actions

Configure Delivery Settings

Set up or update all delivery parameters including enabling/disabling delivery, fees, minimums, preparation and delivery times, scheduling options, and delivery hours.

Set Free Delivery Threshold

Define an order amount above which delivery becomes free, or set to null to always charge the delivery fee.

Configure Delivery Zones

Toggle zone-based delivery on or off. When zones are enabled, area-specific fees and minimums from delivery zones override the base delivery settings.

Location

  • Backoffice Route: /pickup-and-delivery/delivery
  • Backend Controller: app/Http/Controllers/Api/DeliveryController.php
  • Vue Component: src/views/pickup-and-delivery/delivery/index.vue

Fields

Delivery Enabled

PropertyValue
Field IDenabled
LabelEnable Delivery
TypeToggle
Defaultfalse

Description: Allow customers to order for delivery.

Customer Impact:

  • Enabled: "Delivery" option available at checkout
  • Disabled: Only pickup or dine-in available

Delivery Fee

PropertyValue
Field IDdelivery_fee
LabelDelivery Fee
TypeCurrency
Default0
Validationmin: 0

Description: Base fee charged for delivery.

Customer Impact:

  • Added to order total at checkout
  • Shown before checkout

Note: Can be overridden by delivery zones.


Free Delivery Threshold

PropertyValue
Field IDfree_delivery_threshold
LabelFree Delivery Above
TypeCurrency
Defaultnull (no free delivery)
Validationmin: 0

Description: Order amount above which delivery is free.

Customer Impact:

  • "Free delivery on orders over €X"
  • Encourages larger orders

Examples:

  • €25: Free delivery on orders €25+
  • €50: Free delivery on orders €50+
  • null: Always charge delivery fee

Minimum Order Amount

PropertyValue
Field IDminimum_order
LabelMinimum Order
TypeCurrency
Default0
Validationmin: 0

Description: Minimum order value required for delivery.

Customer Impact:

  • "Minimum order €X for delivery"
  • Can't checkout below minimum

Examples:

  • €10: Low minimum
  • €15: Standard minimum
  • €25: Higher minimum

Preparation Time

PropertyValue
Field IDprep_time
LabelPreparation Time
TypeNumber
UnitMinutes
Default20
Validationmin: 5, max: 120

Description: Time to prepare a delivery order.


Delivery Time

PropertyValue
Field IDdelivery_time
LabelDelivery Time
TypeNumber
UnitMinutes
Default30
Validationmin: 5, max: 120

Description: Estimated time for delivery after preparation.

Customer Impact:

  • Total time = Prep Time + Delivery Time
  • "Delivered in approximately X minutes"

Delivery Delay

PropertyValue
Field IDdelivery_delay
LabelAdditional Delay
TypeNumber
UnitMinutes
Default0
Validationmin: 0, max: 60

Description: Extra buffer time for busy periods.


ASAP Delivery

PropertyValue
Field IDasap_enabled
LabelAllow ASAP Delivery
TypeToggle
Defaulttrue

Description: Allow customers to order for immediate delivery.


Scheduled Delivery

PropertyValue
Field IDscheduled_enabled
LabelAllow Scheduled Delivery
TypeToggle
Defaulttrue

Description: Allow customers to schedule delivery for later.


Advance Ordering Days

PropertyValue
Field IDadvance_days
LabelOrder Ahead Days
TypeNumber
UnitDays
Default7
Validationmin: 1, max: 30

Description: How far in advance customers can schedule delivery.


Time Slot Duration

PropertyValue
Field IDtime_slot_duration
LabelTime Slot Duration
TypeNumber
UnitMinutes
Default30
Validationmin: 15, max: 60

Description: Length of each delivery time slot.

Note: Delivery slots typically longer than pickup (30 min vs 15 min).


Delivery Hours

PropertyValue
Field IDdelivery_hours
LabelDelivery Hours
TypeSchedule
DefaultSame as business hours

Description: Specific hours when delivery is available.

Example:

  • Business hours: 10:00 - 22:00
  • Delivery hours: 11:00 - 21:00 (shorter window)

Delivery Instructions Field

PropertyValue
Field IDshow_delivery_instructions
LabelShow Delivery Instructions Field
TypeToggle
Defaulttrue

Description: Allow customers to add delivery instructions.

Customer Impact:

  • Text field for special instructions
  • "Ring doorbell", "Leave at door", etc.

Driver Instructions

PropertyValue
Field IDdriver_instructions
LabelDefault Driver Instructions
TypeTextarea
RequiredNo

Description: Default instructions for all delivery drivers.

Examples:

  • "Always call customer before delivery"
  • "Do not leave orders unattended"

Delivery Radius

Use Delivery Zones

PropertyValue
Field IDuse_zones
LabelUse Delivery Zones
TypeToggle
Defaulttrue

Description: Use delivery zones for area-based settings.

If Enabled: See Delivery Zones


Maximum Delivery Distance

PropertyValue
Field IDmax_distance
LabelMaximum Distance
TypeNumber
UnitKilometers
Default10
Depends Onuse_zones = false

Description: Maximum delivery distance from location.


Business Logic

Delivery Time Calculation

Current time: 12:00
Prep time: 20 minutes
Delivery time: 30 minutes
Delivery delay: 10 minutes

Earliest delivery: 12:00 + 20 + 30 + 10 = 13:00

Rounded to next slot (30 min slots):
Available from: 13:00

Delivery Fee Calculation

Order subtotal: €22.00
Base delivery fee: €3.50
Free delivery threshold: €25.00

Subtotal < Threshold?
├── Yes → Charge delivery fee (€3.50)
└── No → Free delivery (€0.00)

OR with zones:
├── Check customer postal code
├── Find matching zone
└── Use zone's delivery fee

Address Validation

Customer enters address


Validate address format


Check delivery zones:
├── In zone? → Accept, apply zone settings
└── Not in zone? → "We don't deliver to this area"

OR check distance:
├── Within max distance? → Accept
└── Too far? → "Outside delivery area"

Customer Impact

Online Ordering Checkout

  1. Select "Delivery" as order type
  2. Enter delivery address
  3. Address validated against zones/distance
  4. See delivery fee and minimum
  5. Choose ASAP or scheduled time
  6. Add delivery instructions (optional)
  7. Complete payment
  8. Track order status

Delivery Information Display

Delivery Details:
📍 Delivering to:
   Kalverstraat 123
   1012 AB Amsterdam

⏰ Estimated delivery: 13:00 - 13:30
   (approximately 45 minutes)

💰 Delivery fee: €3.50
   (Free delivery on orders over €25)

📝 Instructions:
   "Ring doorbell twice, apartment 4B"

Relations

Depends On

  • Locations: Delivery settings per location
  • Delivery Zones: Area-specific settings
  • Business Hours: Delivery within hours
  • Order Capacity: Affects slot availability

Affects

  • Online Ordering: Delivery option
  • Transactions: Delivery orders
  • Reports: Delivery analytics

Business Rules

  • When delivery zones are enabled (use_zones = true), zone-specific delivery fees and minimums override the base delivery fee and minimum order amount configured here.
  • The free delivery threshold applies to the order subtotal (before delivery fee); if the subtotal meets or exceeds the threshold, the delivery fee is waived to zero.
  • Delivery hours can be configured separately from business hours, allowing a narrower delivery window (e.g., business hours 10:00-22:00 but delivery only 11:00-21:00).
  • The earliest available delivery time is calculated as: current time + preparation time + delivery travel time + additional delay buffer, then rounded up to the next available time slot.
  • If both ASAP and scheduled delivery are disabled, no delivery time slots will be available and customers cannot place delivery orders.

FAQs

  • What is the difference between delivery fee and zone fee? The delivery fee here is the base/default fee. When delivery zones are enabled, each zone can have its own fee that overrides this base fee for customers in that zone.
  • How does the free delivery threshold work? If a customer's order subtotal reaches or exceeds the threshold amount, the delivery fee drops to zero. If the threshold is set to null, the delivery fee always applies.
  • Can delivery hours be different from pickup hours? Yes. Delivery hours, pickup hours, and general business hours are all configured independently, allowing you to offer each service during different time windows.
  • What does the additional delay setting do? The delivery delay adds extra buffer time on top of preparation and delivery times. Use it during busy periods to give the kitchen and drivers more breathing room.
  • Can customers add delivery instructions? Yes, if the "Show Delivery Instructions" toggle is enabled. Customers can enter free-text instructions like "Ring doorbell" or "Leave at door" during checkout.

Troubleshooting

Problem: "We don't deliver to this area"

Causes:

  1. Address outside delivery zones
  2. Address beyond max distance
  3. Postal code not configured
  4. Address validation error

Solutions:

  1. Add postal code to delivery zone
  2. Increase max distance
  3. Configure postal codes
  4. Check address format

Problem: Delivery fee incorrect

Causes:

  1. Zone fee overriding base fee
  2. Free delivery threshold applied
  3. Wrong zone matched

Solutions:

  1. Check zone settings
  2. Verify threshold setting
  3. Review zone postal codes

Problem: No delivery times available

Causes:

  1. Outside delivery hours
  2. Capacity limits reached
  3. All slots in past
  4. Delivery disabled

Solutions:

  1. Check delivery hours
  2. Increase capacity
  3. Try scheduling for later
  4. Enable delivery

Problem: Delivery taking too long

Causes:

  1. Prep time underestimated
  2. Delivery time underestimated
  3. High order volume
  4. Driver delays

Solutions:

  1. Increase prep time
  2. Increase delivery time
  3. Add delivery delay during busy times
  4. Manage driver capacity

Examples

Standard Delivery Settings

json
{
  "enabled": true,
  "delivery_fee": 3.50,
  "free_delivery_threshold": 25,
  "minimum_order": 15,
  "prep_time": 20,
  "delivery_time": 30,
  "delivery_delay": 0,
  "asap_enabled": true,
  "scheduled_enabled": true,
  "advance_days": 7,
  "time_slot_duration": 30,
  "show_delivery_instructions": true,
  "use_zones": true
}

Premium Delivery (Free)

json
{
  "enabled": true,
  "delivery_fee": 0,
  "free_delivery_threshold": null,
  "minimum_order": 20,
  "prep_time": 25,
  "delivery_time": 25,
  "asap_enabled": true,
  "scheduled_enabled": true,
  "driver_instructions": "Always call customer 5 minutes before arrival"
}

Limited Delivery Hours

json
{
  "enabled": true,
  "delivery_fee": 4.50,
  "minimum_order": 20,
  "delivery_hours": {
    "Monday": { "enabled": true, "from": "17:00", "to": "21:00" },
    "Tuesday": { "enabled": true, "from": "17:00", "to": "21:00" },
    "Wednesday": { "enabled": true, "from": "17:00", "to": "21:00" },
    "Thursday": { "enabled": true, "from": "17:00", "to": "21:00" },
    "Friday": { "enabled": true, "from": "17:00", "to": "22:00" },
    "Saturday": { "enabled": true, "from": "12:00", "to": "22:00" },
    "Sunday": { "enabled": true, "from": "12:00", "to": "21:00" }
  }
}

Delivery Time Selection UI

┌─────────────────────────────────────┐
│ When would you like delivery?       │
├─────────────────────────────────────┤
│                                     │
│ ○ ASAP (Delivered in ~45 min)       │
│                                     │
│ ● Schedule for later                │
│                                     │
│   Date: [Today ▼]                   │
│                                     │
│   Time:                             │
│   ┌───────────┐ ┌───────────┐      │
│   │13:00-13:30│ │13:30-14:00│      │
│   └───────────┘ └───────────┘      │
│   ┌───────────┐ ┌───────────┐      │
│   │14:00-14:30│ │14:30-15:00│      │
│   └───────────┘ └───────────┘      │
│                                     │
│ Delivery Instructions (optional):   │
│ ┌─────────────────────────────────┐│
│ │ Ring doorbell, apt 4B           ││
│ └─────────────────────────────────┘│
│                                     │
│              [Continue]             │
└─────────────────────────────────────┘

Order Summary with Delivery

Order Summary
─────────────────────────────────────
Margherita Pizza (L)          €15.50
Garlic Bread                   €4.50
2x Cola                        €5.00
─────────────────────────────────────
Subtotal                      €25.00
Delivery Fee                   €0.00 ✓
  (Free delivery on orders €25+)
─────────────────────────────────────
Total                         €25.00
─────────────────────────────────────

📍 Delivery to:
   Kalverstraat 123, Amsterdam

⏰ Estimated: 13:00 - 13:30