Screen layout fields

Every variable you can put on a KDS screen card — what each one shows, and where it belongs.

Drag a variable out of the Blocks pane onto the card, or click it and it lands in the right place. Drag the blocks already on the card to reorder them, and use a block's bin icon to take it off. For the build flow itself, see Design a KDS screen layout.

Order-wide variables go in the header (the coloured bar) or the footer (under the dish list) — the same list works in both. Per-item variables go on the item line.

Every variable has a token — a short code like {{order.table}} — shown when you open the tile. You only need the token for Text fields (below); everywhere else, picking the variable is enough.

If a variable has nothing to show on a particular order — no table on a counter order, no note from the guest — it simply doesn't appear on that card, and takes up no space. It never shows an empty label or the raw {{token}}.

That is why the editor's live preview has an Order type switch. No single order carries every variable on this page: a dine-in has a table, covers and a course; a collection has a takeaway number and a pickup time instead, and no table at all; a QR order is a table order the guest placed from their own phone, so it has a table but no till and no team member. If a variable you have placed shows nothing, switch the order type before assuming it is broken — between the four you can see all of them.

The card heading and the strip under the dish list. These are order-wide variables, and every one of them works in either place and in any section or column — click a block and use the Move arrows in the settings rail, or just drag it.

One row or two

A row in the header or footer has three places: left, centre and right. In the new Screen editor a section can have one row or two, so the order number and the table can sit on the first row and the date and the timer on the second. The kitchen screen draws them as two rows, one under the other. In the classic editor the same layout shows as two one-line sections.

A second row needs the Tillable app 5.0.33 or newer on the kitchen tablet; an older app shows the standard header until it's updated.

Order

  • Order number — the order's number, e.g. #42.
  • Table — the table or area the order is for. Table-service tickets carry one; counter orders don't.
  • Date & time — when the order was placed, e.g. 22/09/2026 13:55.
  • Elapsed timer — how long since the order was sent to the kitchen, counting up as MM:SS. A count-up since the order fired, not a countdown. Use it with pacing alerts — the header changes colour at the ready and late thresholds (see Pacing alerts: ready, late, and recall).
  • Station — the name of the station this card is showing on.
  • Order kind — where the order is sitting, and how it arrived: Takeaway, Dine in or Bar tab, with QR added when the guest ordered from a QR code. So a guest who scans at table 7 gives you Dine in QR, and the same table rung in by a server gives you Dine in. Pair it with Cashier / server in square brackets to get the server's name only when there is one: {{order.kind}}[ ({{order.cashier}})] reads Dine in (Sam) on a served order and Dine in QR on a scanned one. Same wording on the printed chit.
  • Pickup time — the collection slot on a pre-ordered takeaway.
  • Course — which course this card is, when you're coursing.
  • Placed by — who or what put the order in: QR when the guest ordered from a QR code, Takeaway for a collection, and otherwise the name of the team member who took it. It is blank unless someone is signed in on the till, so if your team don't sign in, this stays empty on in-person orders. Different from Cashier / server, which is always a person and so is blank on anything the guest placed themselves.
  • Guest note — the note the guest typed at online checkout.
  • Guest tags — the customer labels you've chosen to send to the kitchen.
  • Takeaway number — the short collection number, e.g. #007.
  • Covers — how many people are on the table, e.g. 4 covers. Blank if nobody was asked.
  • Cashier / server — who opened the tab.
  • Device — the till the order was fired from.

Business and Location

  • Business name, Legal entity name, VAT number
  • Location name, Location address, Location phone, Location email, Location website

These are the same details that print on a receipt. They're handy at the top of a card on a shared screen, or in a Text field.

Item line (applied to each item)

These are per-item variables and can only go on the item line.

  • Quantity — how many of the item.
  • Item name — the item itself.
  • Modifiers — the choices made on the item, e.g. size, temperature, milk choice, "no onions".
  • Notes — the kitchen note / special instruction typed for that item.
  • Category — the item's top-level menu category.

Under Safety there is one more tile — but only if allergens are switched on for your account:

  • Allergen pills — allergen tags on the item, shown as small pills.

If you don't see it, allergens are off for you. That is deliberate while the feature is being proven: with it off, allergen information is not sent to the kitchen at all, so the editor doesn't offer a block that would never print anything, and the sample card doesn't show warnings your tickets won't carry. Speak to support if you need it switched on.

In the new Screen editor these are not separate tiles. They are switches inside one component, Dishes: turn each detail on or off there, and set its size. The card always keeps at least one detail that shows the dish itself (allergen pills or your own text alone are not enough), so a kitchen ticket can never list no dishes. Your own text does count when it includes the dish name or the quantity variable.

Quantity and item name sit inline on the item's main line; everything else drops onto its own sub-line beneath, so a long modifier list doesn't crowd the name.

Text fields

Text block puts your own wording on the card, and can mix in variables. Add one from the Blocks pane, then type in the settings rail. The Insert a variable picker drops the right token in for you — worth using, because a token you mistype just renders blank.

For example, a header or footer Text block reading:

{{order.table}} · {{order.covers}}

renders as Table 7 · 4 covers. A variable with nothing to show leaves a blank, never the raw code.

Table already includes the word "Table". Typing Table {{order.table}} gives you Table Table 7, which is the commonest surprise on this page. The same goes for the takeaway number, which brings its own #.

Some variables can be written more than one way

A few variables have a Shows as setting in the settings rail, because the form that reads well on its own is not the form that reads well inside a sentence:

| Variable | Normally | Also available | | --- | --- | --- | | Covers | 4 covers | 4 | | Date & time | 23/09/2026 17:42 | 17:42 · 23/09/2026 | | Elapsed | 06:14 | 6m 14s | | Takeaway number | #007 | 7 |

Changing it changes the card, not the meaning. Everything else has one form.

Hiding a part when it is empty

Put square brackets around any piece of a Text block and that piece disappears completely when the variable inside it has nothing to show, instead of leaving its punctuation stranded. So:

{{order.table}}[ ({{order.covers:n}})]

reads Table 7 (4) on a table order and simply Table 7 on a takeaway, rather than Table 7 (). Brackets with no variable inside them are printed as you typed them, so [URGENT] still says [URGENT].

The Combined tiles in the Blocks pane are these already written for you.

What moves, and what stays put

Some things already appear on a card on their own: the Takeaway badge, the pickup time, the course badge, the guest's note, and the guest tags.

Put one of those on the card as its own variable block and it moves to where you put it — the automatic version switches off, so you never see it twice. Take the block off again and the automatic version comes back. A layout you've never edited is unaffected.

Mentioning one inside a Text block is different. A line reading Ready {{order.pickup_time}} prints the time in your sentence, but the automatic badge keeps showing too — so the time appears twice. Your own wording is wording, not a decision about where the value lives; only the variable block moves it. If you want the value in one place only, use the variable block rather than a sentence.

Three things are always on the card and can't be moved or removed, because they're safety signals rather than layout: the ⚠ Diner declared allergy banner, the per-item cross-contamination warning, and the Cancelled state.

A note on one-card-per-table screens

If a station runs in one card per table mode, the card is built from the item line only — header and footer blocks don't apply there. The editor says so in the Card settings.

The item list

The item list normally renders flat, in fired order. Turning on Group items by parent category in the layout's Card options partitions it under small headings taken from your top-level menu categories (items whose category can't be determined collect under a trailing Other heading) — see Design a KDS screen layout for the option itself.