Skip to content

Pickup Settings

Overview

Pickup Settings configure how customers can order for pickup (collection) at your location. Set preparation times, scheduling options, and pickup instructions.

Key Purpose: Configure pickup ordering options and timing.

Purpose

This page lets you configure all pickup-related settings for a location, including preparation times, scheduling options, time slot durations, pickup hours, and customer instructions.

Key Concepts

  • Preparation Time: The minimum time needed to prepare a pickup order, used to calculate the earliest available pickup slot (current time + prep time + pickup delay).
  • Pickup Delay: An additional buffer added on top of preparation time to give the kitchen extra breathing room, especially useful during busy periods.
  • Time Slot Duration: The interval at which pickup time slots are offered to customers (e.g., every 15 minutes: 12:00, 12:15, 12:30). Shorter slots give more precise times but require tighter kitchen management.
  • Advance Ordering Days: How many days into the future customers can schedule pickup orders, controlling the calendar range shown in the time picker.
  • Pickup Instructions: Free-text guidance shown to customers on the order confirmation and confirmation email, telling them where and how to collect their order.

Actions

Configure Pickup Settings

Set up or update all pickup parameters including enabling/disabling pickup, preparation time, delay, ASAP and scheduled ordering toggles, time slot duration, advance days, and pickup hours.

Set Pickup Instructions

Define the pickup location description and instructions text that customers see after placing their order, such as "Collect at the side entrance" or "Show order number at counter."

Enable Customer Notifications

Toggle the "Notify When Ready" setting to send customers an SMS, email, or push notification when their pickup order is ready for collection.

Location

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

Fields

Pickup Enabled

PropertyValue
Field IDenabled
LabelEnable Pickup
TypeToggle
Defaulttrue

Description: Allow customers to order for pickup.

Customer Impact:

  • Enabled: "Pickup" option available at checkout
  • Disabled: Only delivery or dine-in available

Preparation Time

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

Description: Minimum time needed to prepare a pickup order.

Business Logic:

  • Earliest pickup time = Now + Prep Time
  • Added to item-specific prep times

Customer Impact:

  • "Ready in approximately X minutes"
  • Earliest available time slot

Examples:

  • Fast food: 10-15 minutes
  • Casual dining: 20-30 minutes
  • Complex orders: 30-45 minutes

Pickup Delay

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

Description: Extra buffer time added to preparation time.

Use Cases:

  • Busy periods: Add 10-15 minutes
  • Kitchen constraints: Add buffer
  • Quality control: Extra time for checking

ASAP Orders

PropertyValue
Field IDasap_enabled
LabelAllow ASAP Orders
TypeToggle
Defaulttrue

Description: Allow customers to order for "As Soon As Possible".

Customer Impact:

  • Enabled: "ASAP" option shown (ready in ~X min)
  • Disabled: Must select specific time slot

Scheduled Orders

PropertyValue
Field IDscheduled_enabled
LabelAllow Scheduled Orders
TypeToggle
Defaulttrue

Description: Allow customers to schedule pickup for later.

Customer Impact:

  • Enabled: Date/time picker shown
  • Disabled: Only ASAP orders

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 pickup.

Customer Impact:

  • Calendar shows available days
  • Can't select dates beyond this limit

Examples:

  • 1 day: Today and tomorrow only
  • 7 days: Up to a week ahead
  • 14 days: Two weeks ahead

Time Slot Duration

PropertyValue
Field IDtime_slot_duration
LabelTime Slot Duration
TypeNumber
UnitMinutes
Default15
Validationmin: 5, max: 60

Description: Length of each pickup time slot.

Customer Impact:

  • Time picker shows slots (e.g., 12:00, 12:15, 12:30)
  • Smaller slots = more precise times

Examples:

  • 15 min: 12:00, 12:15, 12:30, 12:45
  • 30 min: 12:00, 12:30, 13:00, 13:30

Pickup Hours

PropertyValue
Field IDpickup_hours
LabelPickup Hours
TypeSchedule
DefaultSame as business hours

Description: Specific hours when pickup is available.

Business Logic:

  • Can be different from business hours
  • Can be different from delivery hours

Example:

  • Business hours: 9:00 - 22:00
  • Pickup hours: 10:00 - 21:30 (kitchen closes early)

Pickup Instructions

PropertyValue
Field IDpickup_instructions
LabelPickup Instructions
TypeTextarea
RequiredNo
Validationmax: 500 characters

Description: Instructions shown to customers about pickup.

Customer Impact:

  • Shown on order confirmation
  • Included in confirmation email

Examples:

  • "Please collect your order at the counter"
  • "Ring the bell at the side entrance"
  • "Parking available in rear lot"

Pickup Location

PropertyValue
Field IDpickup_location
LabelPickup Location
TypeText
RequiredNo
Validationmax: 100 characters

Description: Specific location for pickup within the venue.

Examples:

  • "Main counter"
  • "Side entrance"
  • "Pickup window"
  • "Ask at reception"

Customer Notification

PropertyValue
Field IDnotify_when_ready
LabelNotify When Ready
TypeToggle
Defaulttrue

Description: Send notification when order is ready for pickup.

Customer Impact:

  • SMS/Email: "Your order is ready for pickup!"
  • Push notification (if app)

Business Logic

Pickup Time Calculation

Current time: 12:00
Prep time: 20 minutes
Pickup delay: 5 minutes

Earliest pickup: 12:00 + 20 + 5 = 12:25

Rounded to next slot (15 min slots):
Available from: 12:30

Time Slot Availability

For each time slot:
├── Within pickup hours? No → Skip
├── In the past? Yes → Skip
├── Before earliest time? Yes → Skip
├── Capacity available? No → Skip
└── All checks pass → Show as available

Order Flow

Customer selects Pickup


Choose time:
├── ASAP → Calculate earliest time
└── Scheduled → Select from available slots


Complete order


Order sent to kitchen


Order prepared


Marked as ready


Customer notified (if enabled)


Customer collects order

Customer Impact

Online Ordering Checkout

  1. Select "Pickup" as order type
  2. Choose ASAP or scheduled time
  3. See estimated ready time
  4. Complete payment
  5. Receive confirmation with pickup details
  6. Get notification when ready
  7. Collect order at location

Confirmation Display

Order Confirmed!

Pickup Details:
📍 Mario's Restaurant
   123 Main Street, Amsterdam

⏰ Ready at: 12:30 PM
   (approximately 25 minutes)

📋 Order #1234

Instructions:
Please collect your order at the main counter.
Show this confirmation to staff.

Relations

Depends On

  • Locations: Pickup settings per location
  • Business Hours: Pickup within open hours
  • Order Capacity: Affects slot availability

Affects

  • Online Ordering: Pickup option
  • Transactions: Pickup orders
  • KDS: Order preparation

Business Rules

  • The earliest pickup time is calculated as: current time + preparation time + pickup delay, then rounded up to the next available time slot boundary.
  • Pickup hours can be configured independently from business hours and delivery hours, allowing a narrower or different pickup window.
  • Time slots that fall outside pickup hours, are in the past, are before the earliest calculated time, or have reached capacity limits are all hidden from the customer.
  • The advance ordering days setting limits how far into the future the scheduling calendar extends; dates beyond this limit are disabled in the date picker.
  • If both ASAP and scheduled pickup are disabled, no pickup options will be available and customers cannot place pickup orders.

FAQs

  • What happens when a customer selects ASAP? The system calculates the earliest possible pickup time (current time + prep time + delay, rounded to next slot) and assigns the order to that slot. The customer sees an estimated ready time.
  • Can pickup hours differ from delivery hours? Yes. Pickup hours, delivery hours, and general business hours are all independent settings. For example, you might accept pickup until 21:30 but stop delivery at 21:00.
  • How does the "Notify When Ready" feature work? When enabled and the kitchen marks the order as ready, the customer receives a notification (SMS, email, or push) telling them their order is ready for collection.
  • What is the pickup delay used for? The pickup delay adds a buffer on top of the preparation time. It is useful during busy periods to prevent orders from being promised too soon. You can adjust it temporarily without changing the base prep time.
  • Can I disable ASAP and only allow scheduled pickup? Yes. Turn off the ASAP toggle and keep scheduled orders enabled. Customers must then choose a specific future time slot, which is useful for businesses with long preparation times or pre-order models.

Troubleshooting

Problem: No pickup times available

Causes:

  1. Outside pickup hours
  2. Capacity limits reached
  3. Prep time too long
  4. All slots in past

Solutions:

  1. Check pickup hours
  2. Increase capacity limits
  3. Reduce prep time
  4. Try scheduling for later

Problem: Pickup time too far in future

Causes:

  1. Long prep time configured
  2. Large pickup delay
  3. Capacity constraints

Solutions:

  1. Review prep time setting
  2. Reduce pickup delay
  3. Increase capacity

Problem: Customer arrived but order not ready

Causes:

  1. Kitchen behind schedule
  2. Prep time underestimated
  3. High order volume

Solutions:

  1. Increase prep time buffer
  2. Add pickup delay during busy times
  3. Manage capacity limits

Examples

Fast Food Pickup

json
{
  "enabled": true,
  "prep_time": 10,
  "pickup_delay": 0,
  "asap_enabled": true,
  "scheduled_enabled": true,
  "advance_days": 1,
  "time_slot_duration": 15,
  "pickup_instructions": "Collect at the counter. Show your order number.",
  "notify_when_ready": true
}

Restaurant Pickup

json
{
  "enabled": true,
  "prep_time": 25,
  "pickup_delay": 5,
  "asap_enabled": true,
  "scheduled_enabled": true,
  "advance_days": 7,
  "time_slot_duration": 15,
  "pickup_hours": {
    "Monday": { "from": "11:00", "to": "21:00" },
    "Tuesday": { "from": "11:00", "to": "21:00" },
    "Wednesday": { "from": "11:00", "to": "21:00" },
    "Thursday": { "from": "11:00", "to": "21:00" },
    "Friday": { "from": "11:00", "to": "21:30" },
    "Saturday": { "from": "11:00", "to": "21:30" },
    "Sunday": { "from": "12:00", "to": "20:00" }
  },
  "pickup_instructions": "Please use the side entrance for pickup orders. Parking available in rear.",
  "pickup_location": "Side entrance pickup window",
  "notify_when_ready": true
}

Scheduled Only (No ASAP)

json
{
  "enabled": true,
  "prep_time": 45,
  "pickup_delay": 0,
  "asap_enabled": false,
  "scheduled_enabled": true,
  "advance_days": 14,
  "time_slot_duration": 30,
  "pickup_instructions": "Orders must be scheduled at least 1 hour in advance.",
  "notify_when_ready": true
}

Pickup Time Selection UI

┌─────────────────────────────────────┐
│ When would you like to pick up?     │
├─────────────────────────────────────┤
│                                     │
│ ○ ASAP (Ready in ~25 min)           │
│                                     │
│ ● Schedule for later                │
│                                     │
│   Date: [Today ▼]                   │
│                                     │
│   Time:                             │
│   ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐  │
│   │12:30│ │12:45│ │13:00│ │13:15│  │
│   └─────┘ └─────┘ └─────┘ └─────┘  │
│   ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐  │
│   │13:30│ │13:45│ │14:00│ │14:15│  │
│   └─────┘ └─────┘ └─────┘ └─────┘  │
│                                     │
│              [Continue]             │
└─────────────────────────────────────┘