Skip to content

Order Notes

Overview

Order notes allow customers to add special instructions to their orders. Can be enabled per item or for the entire order.

Key Purpose: Capture customer special requests and instructions.

Purpose

This feature lets customers add free-text special instructions to individual items in their order on kiosk, QR ordering, and online ordering channels.

Key Concepts

  • Item-Level Notes: Notes are stored on the TransactionItem model as a notes string field — there is no separate order-level note in the backend
  • Per-Channel Toggle: The allow_notes setting ({enabled, placeholder}) is stored independently per channel: in in_house_setting for kiosk, and in online_settings for online ordering and QR ordering
  • All Item Types: Notes can be added to regular shopping bag items, reward items, offer items, and birthday bonus items on both kiosk and online ordering
  • Identity Exclusion: Items with different notes are treated as distinct entries in the shopping bag — note content is excluded from the item identity comparison used for quantity merging
  • Receipt Display: Notes appear on printed receipts as "Note: {text}" after the item's modifiers, and are passed through to KDS and kitchen tickets

Actions

Enable Notes for a Channel

Toggle allow_notes.enabled in In-House Settings (for kiosk), Online Settings (for online ordering), or QR Ordering settings.

Set Placeholder Text

Configure allow_notes.placeholder — the hint text shown in the notes input field (max 150 chars in backoffice, default: "E.g. 'For Oliver' or 'I'm allergic to mushrooms'").

Add Note to Item (Customer)

Tap "Add note" on an item in the shopping bag, enter text (max 100 chars on online ordering), and save.

Edit/Remove Note (Customer)

Tap "Edit note" to modify, or tap the trash icon (kiosk) / "Remove note" button (online ordering) to clear the note.

Location

  • Backoffice Route: /in-house/settings (In-House)
  • Backoffice Route: /online-settings (Online)

Fields

Notes Enabled

PropertyValue
Field IDallow_notes.enabled
LabelAllow Notes
TypeToggle
Defaultfalse

Description: Enable note input for customers.


Placeholder Text

PropertyValue
Field IDallow_notes.placeholder
LabelPlaceholder
TypeText
Default"E.g. 'For Oliver' or 'I'm allergic to mushrooms'"

Description: Hint text shown in note input field.


Note Types

Item Notes

Notes attached to specific items.

Use Cases:

  • "No onions"
  • "Extra sauce"
  • "Well done"
  • "Allergies: nuts"

Order Notes

Notes for the entire order.

Use Cases:

  • "Please ring doorbell"
  • "Leave at door"
  • "Call when arriving"
  • "For Oliver's birthday"

Per-Channel Settings

In-House (Kiosk)

json
{
  "in_house_setting": {
    "allow_notes": {
      "enabled": true,
      "placeholder": "Add special instructions..."
    }
  }
}

Online Ordering

json
{
  "online_settings": {
    "allow_notes": {
      "enabled": true,
      "placeholder": "E.g. 'For Oliver' or 'I'm allergic to mushrooms'"
    }
  }
}

Business Logic

Note Flow

Customer adds item to cart


Notes enabled?
├── No → No note option shown

└── Yes → Show "Add note" option


          Customer taps "Add note"


          Note input appears


          Customer enters note


          Note saved with item

Note Display

Order received


Has notes?
├── No → Standard display

└── Yes → Highlight notes

          ├── KDS: Show note prominently
          ├── Receipt: Include note
          └── Kitchen ticket: Print note

Business Rules

  • Notes are only available when allow_notes.enabled is true for the specific channel — the "Add note" button is hidden otherwise
  • The placeholder text is required when notes are enabled (validated as required|string when allow_notes.enabled is true)
  • Online ordering limits notes to 100 characters per item (enforced by the ShoppingBagNoteEditor component's maxLength prop)
  • Two items that are otherwise identical but have different notes remain as separate line items in the shopping bag — notes are excluded from the identity comparison
  • Notes are persisted on the TransactionItem model and flow through to receipt printing, KDS display, and kitchen tickets

FAQs

  • "Are there order-level notes separate from item notes?" No. Notes exist only at the item level on the TransactionItem model. There is no dedicated order-level note field on the Transaction model.
  • "Where are note settings configured?" In three places: In-House Settings (for kiosk), Online Settings (for online ordering), and QR Ordering settings. Each channel has its own independent allow_notes toggle.
  • "What is the maximum length for notes?" 100 characters on the online ordering frontend. The backoffice placeholder text field allows up to 150 characters.
  • "Can notes be added to reward items and birthday bonuses?" Yes, both the kiosk and online ordering stores support notes on regular items, reward items, offer items, and birthday bonus items.
  • "How are notes displayed on receipts?" The kiosk generates receipt lines with "Note: {text}" after the item's modifiers, using the same column layout as other receipt lines.

Customer Impact

Online Ordering

  • "Add note" button per item
  • Order-level notes at checkout
  • Notes visible in order confirmation

Kiosk

  • "Add note" option per item
  • On-screen keyboard for input
  • Notes shown in order summary

KDS

  • Notes displayed prominently
  • Different styling for visibility
  • Notes printed on tickets

Troubleshooting

  • "Add note" button not showing → Verify allow_notes.enabled is set to true for the correct channel (In-House for kiosk, Online Settings for online ordering).
  • Notes not appearing on KDS → Notes are included in the transaction item data sent to KDS. Verify the KDS is receiving updated order data and displaying item details.
  • Same item showing as separate lines → Items with different notes are treated as distinct entries. This is by design — each unique note creates a separate line item in the order.

Relations

Depends On

  • Locations: Notes per location

Affects

  • Transactions: Notes stored with order
  • KDS: Note display
  • Receipts: Note printing

Examples

Notes Enabled

json
{
  "allow_notes": {
    "enabled": true,
    "placeholder": "Special instructions..."
  }
}

Item with Note

json
{
  "item": {
    "id": "item-123",
    "name": "Margherita Pizza",
    "quantity": 1,
    "note": "No basil, extra cheese"
  }
}

Order with Notes

json
{
  "order": {
    "items": [
      {
        "name": "Burger",
        "note": "Medium rare"
      },
      {
        "name": "Fries",
        "note": "Extra crispy"
      }
    ],
    "order_note": "Please include extra napkins"
  }
}

KDS Display

┌─────────────────────────────────────┐
│ Order #42                    12:30  │
│ Pickup - John                       │
├─────────────────────────────────────┤
│ 1x Margherita Pizza                 │
│    ⚠️ NOTE: No basil, extra cheese  │
│                                     │
│ 1x Caesar Salad                     │
│    ⚠️ NOTE: Dressing on the side    │
├─────────────────────────────────────┤
│ ORDER NOTE:                         │
│ "For Oliver's birthday party"       │
└─────────────────────────────────────┘

Receipt with Notes

═══════════════════════════════════════
           YOUR ORDER
═══════════════════════════════════════

1x Margherita Pizza           €12.50
   Note: No basil, extra cheese

1x Caesar Salad                €8.50
   Note: Dressing on the side

───────────────────────────────────────
Special Instructions:
"For Oliver's birthday party"
───────────────────────────────────────

TOTAL                         €21.00

═══════════════════════════════════════