Appearance
Fields Index
Complete reference of all fields across all features. Use this to understand which field ID corresponds to which UI element in the backoffice.
See also: Options Reference - All toggle states and dropdown options
Quick Field Lookup
Location Settings
| Field ID | Label | Type | Feature |
|---|---|---|---|
name | Location Name | text | Locations |
address.line1 | Address Line 1 | text | Locations |
address.city | City | text | Locations |
address.postal_code | Postal Code | text | Locations |
address.country | Country | select | Locations |
contact_information.email | Locations | ||
contact_information.phone | Phone | phone | Locations |
preferred_language | Language | select | Locations |
timezone | Timezone | derived (read-only) | Locations |
average_prep_time | Prep Time (min) | number | Locations |
branding_profile_id | Branding Profile | select (optional) | Locations |
billing_profile_id | Billing Profile | select (optional) | Locations |
location_type | Location Type | select (required, LocationTypes) | Locations |
category | Category | select (required) | Locations |
pinpoint.lat / pinpoint.lng | Map pin | number | Locations |
payment_profile_id | Payment Profile | select (optional) | Locations |
stripe_customer_id | Stripe Customer | text (optional) | Locations |
timezoneis not a merchant-editable form field — it is absent fromStoreLocationRequest::rules()and there is no timezone control in the Location form. It is set programmatically from the location's country or from a connected POS branch, defaulting toEurope/Brussels.preferred_languageis required and stores an ObjectId, not a language code.billing_profile_idisnullableinStoreLocationRequest; existence is enforced inLocationService::applyBillingProfileLink()(404 when the profile does not exist) and re-pointing an already-linked location to a different Stripe customer is rejected (400, "This location is already linked to a different billing profile."). An incomplete billing profile (empty Stripe customer id) stays selectable and is not rejected.
Business Hours
| Field ID | Label | Type | Feature |
|---|---|---|---|
business_hours.{day}.is_available | Day Available | toggle | Business Hours |
business_hours.{day}.times | Time Ranges | array | Business Hours |
restricted_dates | Restricted Dates | array | Restricted Dates |
restricted_dates.*.date | Date | date | Restricted Dates |
restricted_dates.*.yearly | Repeat Yearly | toggle | Restricted Dates |
Online Ordering Settings
| Field ID | Label | Type | Feature |
|---|---|---|---|
takeout.enabled | Enable Pickup | toggle | Online Ordering |
takeout.delay | Pickup Delay (min) | number | Online Ordering |
delivery.enabled | Enable Delivery | toggle | Online Ordering |
delivery.delay | Delivery Delay (min) | number | Online Ordering |
custom_availability | Custom Availability | toggle | Online Ordering |
accept_orders_until | Accept Orders Until | toggle | QR Ordering |
schedule | Custom Schedule | schedule | Online Ordering |
custom_scheduled_orders | Custom Scheduled Orders | toggle | Online Ordering |
hours_in_advance | Hours in Advance | number | Online Ordering |
minutes_before_pickup_delivery_time | Send to Kitchen Before | number | Online Ordering |
idle_timeout_type | Timeout Type | select | Idle Timeout |
idle_timeout_seconds | Timeout Duration | number | Idle Timeout |
show_warning_for_seconds | Warning Duration | number | Idle Timeout |
print_settings | Print Orders | select | Print Settings |
send_to_pos | Send to POS | select | Print Settings |
customer_information_full_name | Name Format | select | Customer Info |
customer_information_contact_details | Contact Details | select | Customer Info |
Delivery Settings
| Field ID | Label | Type | Feature |
|---|---|---|---|
delivery_region.type | Region Type | select | Delivery Settings |
delivery_region.radius | Radius (km) | number | Delivery Settings |
delivery_region.postal_codes | Postal Codes | array | Delivery Settings |
delivery_fee.type | Fee Type | select | Delivery Settings |
delivery_fee.fee | Delivery Fee | currency | Delivery Settings |
delivery_fee.minimum_order_amount_for_free_delivery | Free Delivery Minimum | currency | Delivery Settings |
delivery_fee.custom_fees | Custom Fees by Postal Code | array | Delivery Settings |
minimum_order_amount.enabled | Minimum Order Enabled | toggle | Delivery Settings |
minimum_order_amount.amount | Minimum Amount | currency | Delivery Settings |
Pickup Settings
| Field ID | Label | Type | Feature |
|---|---|---|---|
pick_up_instructions.enabled | Enable Instructions | toggle | Pickup Settings |
pick_up_instructions.placeholder | Instructions Text | text | Pickup Settings |
Scheduled Orders
| Field ID | Label | Type | Feature |
|---|---|---|---|
schedule_order_for_future_days.takeout.enabled | Enable Scheduled Pickup | toggle | Scheduled Orders |
schedule_order_for_future_days.takeout.days_in_advance | Pickup Days Ahead | number | Scheduled Orders |
schedule_order_for_future_days.delivery.enabled | Enable Scheduled Delivery | toggle | Scheduled Orders |
schedule_order_for_future_days.delivery.days_in_advance | Delivery Days Ahead | number | Scheduled Orders |
Order Capacity
| Field ID | Label | Type | Feature |
|---|---|---|---|
order_capacity.time_slot_duration_min | Time Slot Duration | select | Order Capacity |
order_capacity.limit_orders_per_time_slot | Limit Orders | toggle | Order Capacity |
order_capacity.number_of_orders_per_time_slot | Orders Per Slot | number | Order Capacity |
order_capacity.enable_flexible_limit_order_per_time_slot | Flexible Ordering | toggle | Order Capacity |
order_capacity.allow_up_to | Flexible Limit | number | Order Capacity |
order_capacity.value_threshold_per_time_slot | Value Threshold | currency | Order Capacity |
order_capacity.limit_items_per_time_slot | Limit Items | toggle | Order Capacity |
order_capacity.number_of_items_per_time_slot | Items Per Slot | number | Order Capacity |
order_capacity.enable_limit_specific_categories | Category Limits | toggle | Order Capacity |
order_capacity.limit_specific_categories | Category List | array | Order Capacity |
order_capacity.time_specific_rules | Time Rules | array | Order Capacity |
delivery_available_days | Delivery Days | array | Order Capacity |
pickup_available_days | Pickup Days | array | Order Capacity |
Tips & Notes
| Field ID | Label | Type | Feature |
|---|---|---|---|
collect_tips.enabled | Collect Tips | toggle | Tips |
collect_tips.options | Tip Percentages | array | Tips |
collect_tips.calculate_tips | Calculate Tips | select | Tips |
allow_notes.enabled | Allow Notes | toggle | Order Notes |
allow_notes.placeholder | Notes Placeholder | text | Order Notes |
Menu Items
| Field ID | Label | Type | Feature |
|---|---|---|---|
name | Item Name | text | Menu Items |
description | Description | textarea | Menu Items |
price | Price | currency | Menu Items |
category_id | Category | select | Menu Items |
image | Image | image | Menu Items |
status | Status | select | Menu Items |
allergens | Allergens | multiselect | Allergens |
dietary_preferences | Dietary Info | multiselect | Allergens |
tags | Tags | multiselect | Allergens |
tax_rate_code | Tax Rate | select | Menu Items |
Stock is not an item field. There is no
track_stock,stockorlow_stock_thresholdanywhere in the backend. "Tracked" is derived from the existence of an Inventory row —Item::getTrackQuantity()returns(bool) $this->getInventory()and serializes astrack_quantity. Stock levels are edited in Inventory (quantity), not on the item. See Inventory.
order_quantitiesis not an editable item field. It is read-only, stored atexternal_data.mpluskassa.order_quantitiesand synced from the article's MplusKassa bestelbeperking (Item::getOrderQuantities()) — there is no control for it anywhere in the back office. An empty list means unrestricted; a non-empty list makes the item per-person.
personsis an order-line field, not an item field. Kiosk and Online Ordering send it asitems.*.persons(nullable|integer|min:1); it is written onto the transaction item snapshot only when it is>= 1, and returned aspersons(null on ordinary lines) on the order-detail payloads.quantitystays article units — party size × how many of the dish — so the back office divides bypersonsto show dishes.
Modifiers
| Field ID | Label | Type | Feature |
|---|---|---|---|
details.name | Modifier Group Name | text | Modifiers |
details.description | Description | text | Modifiers |
pos_name | POS Name | text | Modifiers |
price | Group Price | currency | Modifiers |
pricing | Pricing Mode | select | Modifiers |
settings.is_mandatory | Required | toggle | Modifiers |
settings.allow_select_more_than_one | Allow multiple selections | toggle | Modifiers |
settings.allow_same_modifier_more_than_one | Allow same option twice | toggle | Modifiers |
visibility | Channel visibility | multiselect | Modifiers |
modifiers | Modifier Options | array | Modifiers |
modifiers.*.name | Option Name | text | Modifiers |
modifiers.*.kitchen_name | Kitchen Name | text | Modifiers |
modifiers.*.price | Option Price | currency | Modifiers |
modifiers.*.image.file / .source | Option Image | image | Modifiers |
There is no
required,min_selections,max_selectionsormodifiers.*.default. Mandatory-ness issettings.is_mandatory, and multi-select is expressed by the twosettings.allow_*booleans rather than a min/max pair. (StoreModifierGroupRequest.)
Payment Settings
| Field ID | Label | Type | Feature |
|---|---|---|---|
viva_wallet_physical_source_code | Physical Source Code (flat field on the Location) | text | Viva Wallet |
viva_wallet_online_source_code | Online Source Code (flat field on the Location) | text | Viva Wallet |
payment_test_mode | Test mode (per Location) | toggle | Payments |
processor | Processor (on the PaymentProfile) | text | Payments |
merchant_id | Merchant ID (on the PaymentProfile) | text | Payments |
stripe_account_id | Stripe Account ID (on the PaymentProfile) | text | Stripe |
These are flat fields, not dotted paths. There is no
viva_wallet.enabled, nostripe.enabledand nostripe.live_modeanywhere in the backend — test vs live is the per-locationpayment_test_modeflag, and Stripe payment-method availability comes from the connected account's capabilities rather than any toggle. See options-reference.md.
Loyalty Program
| Field ID | Label | Type | Feature |
|---|---|---|---|
program | Program Type | select (LoyaltyPrograms) | Loyalty |
points_earned_each_visit | Points per visit | number | Loyalty |
points_earned_each_dollar | Points per currency unit | number | Loyalty |
using_minimum_spend | Require minimum spend | toggle | Loyalty |
minimum_spend_to_earn_points | Minimum spend | currency | Loyalty |
sign_up_bonus / sign_up_bonus_points | Sign-up bonus | toggle / number | Loyalty |
do_points_expire / months_to_expire_points | Point expiry | toggle / select | Loyalty |
birthday_bonus | Birthday Bonus | toggle | Loyalty |
birthday_bonus_details.type | Bonus Type | select (RewardTypes) | Loyalty |
rewards.* | Rewards | array | Loyalty |
There is no
enabled,points_per_currency,points_valueorwelcome_bonus.birthday_bonusis a plain boolean; the reward itself lives in the sibling objectbirthday_bonus_details(type,discount,discount_unit,eligible_items) — there is nobirthday_bonus.enabledorbirthday_bonus.value. (StoreLoyaltyRequest.)
Branding
| Field ID | Label | Type | Feature |
|---|---|---|---|
primary_color | Primary Color | color | Branding |
secondary_color | Secondary Color | color | Branding |
primary_text_color | Primary Text | color | Branding |
secondary_text_color | Secondary Text | color | Branding |
primary_background_color | Primary Background | color | Branding |
secondary_background_color | Secondary Background | color | Branding |
heading_text_font | Heading Font | select | Branding |
body_text_font | Body Font | select | Branding |
slogan | Slogan | text | Branding |
short_description | Description | textarea | Branding |
social_links | Social Links | array | Branding |
Receipt Settings
| Field ID | Label | Type | Feature |
|---|---|---|---|
show_order_level_discounts_on_item_level | Show Discounts | toggle | Receipts |
show_tax_summary | Show Tax Summary | toggle | Receipts |
show_price | Show Prices | toggle | Receipts |
show_address | Show Address | toggle | Receipts |
display_contact_information | Show Contact | toggle | Receipts |
display_qr_code | Show QR Code | toggle | Receipts |
display_qr_code_applies_to | QR Code Type | select | Receipts |
custom_footer_text | Custom Footer | toggle | Receipts |
custom_footer_title | Footer Title | text | Receipts |
custom_footer_long_text | Footer Text | textarea | Receipts |
KDS Settings
| Field ID | Label | Type | Feature |
|---|---|---|---|
layout | Layout | select | KDS |
filter.order_source.all | All Sources | toggle | KDS |
filter.order_source.kiosk | Kiosk Orders | toggle | KDS |
filter.order_source.online_ordering | Online Orders | toggle | KDS |
orders.strike_through_individual_modifier | Strike Through | toggle | KDS |
orders.reset_timer_on_recall | Reset Timer | toggle | KDS |
orders.automatically_hold_scheduled_orders | Hold Scheduled | toggle | KDS |
timers.for_here.caution_time_seconds | For Here Caution | number | KDS |
timers.for_here.late_time_seconds | For Here Late | number | KDS |
timers.pickup.caution_time_seconds | Pickup Caution | number | KDS |
timers.pickup.late_time_seconds | Pickup Late | number | KDS |
sound.mute_order_sound | Mute Sounds | toggle | KDS |
sound.volume | Volume | number | KDS |
Integrations
| Field ID | Label | Type | Feature |
|---|---|---|---|
square.enable_auto_sync | Auto-sync the Square catalog on a schedule | toggle | Square |
credentials.site_id | Deliveroo Site ID | text | Deliveroo |
is_sandbox | Deliveroo sandbox mode | toggle | Deliveroo |
credentials.store_id | Uber Eats Store ID | text | Uber Eats |
settings.selected_store_id | Selected Uber Eats store (falls back to credentials.store_id) | text | Uber Eats |
An integration is turned on and off by connecting / disconnecting it (an integration record with
is_active), not by anenabledtoggle. There is nosquare.connected,square.sync_menu,square.sync_orders,deliveroo.enabledoruber_eats.enabledfield, and nodeliveroo.restaurant_idorauto_accepton either delivery integration. Deliveroo is configured on its own page (/deliveroo). See options-reference.md, Deliveroo.
Field Documentation Template
Each field should include:
markdown
### Field Name
| Property | Value |
|----------|-------|
| **Field ID** | `snake_case_id` |
| **Label** | Human-readable label |
| **Type** | text/number/toggle/select/array/etc. |
| **Default** | Default value |
| **Required** | Yes/No |
| **Validation** | Validation rules |
| **Depends On** | Parent field (if conditional) |
**Description**: What this field does.
**Business Logic**: How it works internally.
**Customer Impact**:
- **Online Ordering**: Effect on OO
- **Kiosk**: Effect on Kiosk
**Examples**: Real-world usage examples.
**Troubleshooting**: Common issues with this field.Field Types
Basic Types
text- Single line text inputtextarea- Multi-line text inputnumber- Numeric inputcurrency- Money amounttoggle- Boolean on/offcheckbox- Boolean with labelselect- Dropdown selectionmultiselect- Multiple selection
Complex Types
array- List of itemsobject- Nested fieldsdate- Date pickertime- Time pickerdatetime- Date and timedaterange- Date rangetimerange- Time rangecolor- Color pickerimage- Image uploadfile- File upload
Special Types
address- Address with autocompletephone- Phone number with validationemail- Email with validationurl- URL with validationschedule- Weekly schedulejson- Raw JSON editor
Statistics
- Total Fields Documented: 150+
- Categories: 15
- All fields link to detailed feature documentation
How Emily Uses This
When a merchant asks about a setting, Emily can:
- Find the field by searching this index
- Understand the type (toggle, select, number, etc.)
- Link to full documentation for detailed explanation
- Explain customer impact from the feature docs
Example Usage
Merchant asks: "How do I limit orders during lunch rush?"
Emily looks up: order_capacity.time_specific_rules → links to Order Capacity
Emily explains: "You can create time-specific rules in Order Capacity settings. Go to Online Settings, scroll to Time Specific Rules, and add a rule for your lunch hours with custom order limits."