Appearance
Idle Timeout
Overview
Idle timeout automatically resets the ordering session when a customer is inactive for too long. This releases reserved stock and clears the cart.
Key Purpose: Manage session timeouts and stock reservations.
Purpose
This page lets you configure automatic session reset timers for kiosk and online ordering, clearing carts and releasing reserved stock after a period of customer inactivity.
Key Concepts
- Dual Configuration: Idle timeout is configured in two independent places — Online Ordering settings (per location, default 120s) and Device Profiles (per kiosk profile, default 45s)
- Two Types Only: The backend enum supports only "Standard" (fixed values) and "Custom" (user-defined) — there is no "Extended" option
- Standard Defaults: Standard mode for online ordering sets timeout to 120s with 15s warning; for kiosk profiles it sets timeout to 45s with 15s warning
- Stock Reservation Tie-in: Stock reservations are tied to the idle timeout duration — when stock is reserved for a cart, the reservation expires after
idle_timeout_seconds, releasing items back to available inventory - Warning Modal: A warning modal is shown before the timeout fires (e.g., "Do you still need time?"), giving the customer a chance to continue their session
Actions
Configure for Online Ordering
Navigate to Pickup & Delivery → Online Ordering, scroll to the Idle Timeout section. Choose "Standard" (120s timeout, 15s warning) or "Custom" with user-defined seconds for both values.
Configure for Kiosk
Navigate to Devices → Profiles → [Profile] → Idle Settings. Choose "Standard" (45s timeout, 15s warning) or "Custom" with user-defined seconds. Each kiosk profile has its own idle settings.
Business Rules
- Standard mode for online ordering uses fixed 120-second timeout with 15-second warning; for kiosk profiles it uses fixed 45-second timeout with 15-second warning
- Custom values must be at least 1 second each (enforced server-side via
numeric|min:1validation) - Online ordering fallback if no setting exists: 600 seconds (10 minutes) — defined as
DEFAULT_IDLE_TIMEOUT_SECONDSin the frontend - Kiosk fallback if no profile setting exists: 45 seconds (hardcoded default)
- Stock reservations use the idle timeout seconds as their expiration duration — when a session times out, reservations are automatically released so stock becomes available to other customers
Location
- Backoffice Route:
/pickup-and-delivery/online-ordering - Backend Controller:
app/Http/Controllers/Api/OnlineOrderingController.php - Vue Component:
src/views/pickup-and-delivery/online-ordering/forms/IdleTimeout.vue
Fields
Idle Timeout Type
| Property | Value |
|---|---|
| Field ID | idle_timeout_type |
| Label | Timeout Type |
| Type | Select |
| Options | Standard, Extended, Custom |
| Default | Standard |
Description: Preset timeout duration.
Options:
- Standard: 2 minutes (120 seconds)
- Extended: 5 minutes (300 seconds)
- Custom: Set custom duration
Idle Timeout Seconds
| Property | Value |
|---|---|
| Field ID | idle_timeout_seconds |
| Label | Timeout Duration |
| Type | Number |
| Unit | Seconds |
| Default | 120 |
| Min | 30 |
| Max | 600 |
Description: Seconds of inactivity before session reset.
Warning Duration
| Property | Value |
|---|---|
| Field ID | show_warning_for_seconds |
| Label | Warning Duration |
| Type | Number |
| Unit | Seconds |
| Default | 15 |
Description: How long to show warning before timeout.
Business Logic
Timeout Flow
Customer active on page
│
▼
Start idle timer
│
▼
No activity for (timeout - warning) seconds
│
▼
Show warning modal
"Your session will expire in X seconds"
│
▼
Customer responds?
├── Yes → Reset timer, continue session
│
└── No → Wait warning duration
│
▼
Session timeout
│
▼
Release stock reservations
Clear cart
Reset to home/menuStock Reservation
Item added to cart
│
▼
Reserve stock (temporary)
│
▼
Session active?
├── Yes → Maintain reservation
│
└── No (timeout) → Release reservation
Stock available againCustomer Impact
Online Ordering
- Warning modal before timeout
- Option to continue session
- Cart cleared on timeout
- Stock released for others
Kiosk
- Same timeout behavior
- Screen returns to attract mode
- Cart cleared
- Terminal ready for next customer
Warning Modal
╔═══════════════════════════════════════╗
║ ║
║ ⏰ Session Expiring Soon ║
║ ║
║ Your session will expire in ║
║ ║
║ 15 seconds ║
║ ║
║ Your cart will be cleared. ║
║ ║
║ ┌─────────────────────────────────┐║
║ │ Continue Shopping │║
║ └─────────────────────────────────┘║
║ ║
╚═══════════════════════════════════════╝Relations
Depends On
- Online Ordering: Timeout settings
- Stock Management: Stock reservations
Affects
- Stock Management: Releases reservations
- Transactions: Session management
Related Features
Examples
Standard Timeout
json
{
"idle_timeout_type": "Standard",
"idle_timeout_seconds": 120,
"show_warning_for_seconds": 15
}Extended Timeout
json
{
"idle_timeout_type": "Extended",
"idle_timeout_seconds": 300,
"show_warning_for_seconds": 30
}Custom Timeout
json
{
"idle_timeout_type": "Custom",
"idle_timeout_seconds": 180,
"show_warning_for_seconds": 20
}FAQs
- "Is there an 'Extended' timeout option?" No. The backend only supports "Standard" and "Custom." There is no "Extended" option.
- "Why are there different default timeouts for kiosk and online ordering?" Kiosk defaults to 45 seconds because customers are at a shared physical device and should complete their order quickly. Online ordering defaults to 120 seconds because customers are on personal devices.
- "What happens to stock when a session times out?" Stock reservations expire after the idle timeout duration. Reserved items are released back to available stock for other customers.
- "Where is idle timeout configured for kiosks vs online ordering?" Kiosk idle timeout is in Device Profile settings (per profile). Online ordering idle timeout is in Online Ordering settings (per location). They are independent configurations.
- "What happens if no idle timeout is configured?" Online ordering falls back to 600 seconds (10 minutes). Kiosk falls back to 45 seconds. Warning duration defaults to 15 seconds (kiosk) or 10 seconds (online ordering).
Troubleshooting
- Session timing out too quickly → Check whether "Standard" or "Custom" is selected. Standard kiosk timeout is only 45 seconds. Switch to "Custom" to set a longer duration.
- Stock not being released after timeout → Verify the idle timeout is configured. Stock reservations use the timeout value as their expiration. If no timeout is set, the frontend fallback value is used.
- Warning modal not showing → The warning shows for
show_warning_for_secondsbefore the full timeout. If using "Standard," this is 15 seconds. Ensure the total timeout is long enough for the warning to appear.