> ## Documentation Index
> Fetch the complete documentation index at: https://help.atlas.kitchen/llms.txt
> Use this file to discover all available pages before exploring further.

# Set up item routing and printers

> How Atlas decides which printer prints which item, how to set up your kitchen, bar, and counter printers, and how to fine-tune each receipt type.

Atlas sends each item on an order to the right printer using **Printer / KDS / Dispatch tags**. You add tags to your products. You add the same tags to your printers. When the tags match, that printer fires.

This page covers how routing works, walks through a simple setup end-to-end, then covers the additional settings you can use to fine-tune behaviour.

## How printing works in Atlas

Every item on your menu can carry one or more tags (for example `print_food`, `print_drinks`, `print_retail`). Every printer in an outlet is set to listen for one or more tags. When an order comes in, Atlas checks each item against each printer — every item prints on every printer where the tags match.

Three rules cover almost every setup:

* **Match = print.** If an item carries any tag the printer is listening for, that printer prints it. No match, no print.
* **A printer with no tags is a catch-all.** Leave the tag list blank and the printer will print every item on every order. This is how your customer receipt printer keeps the receipt complete.
* **One tag, three jobs.** The same tags drive your printers, your Kitchen Display Screens (KDS), and your delivery dispatch — that's why the field is called *Printer / KDS / Dispatch tags*. Set them once on the product, they work everywhere.

Tags are free text and **case-sensitive**: `print_drinks`, `Print_Drinks`, and `print-drinks` are three different tags. Use lowercase with underscores and apply the same convention across every outlet.

## A simple setup: Sunny Beans café

Sunny Beans runs three prep stations, each with its own Atlas printer:

| Station | What it prepares         | Tag the printer listens for |
| ------- | ------------------------ | --------------------------- |
| Bar     | Coffees and other drinks | `print_drinks`              |
| Kitchen | Hot food and pastries    | `print_food`                |
| Counter | Retail and merch         | `print_retail`              |

Every product on Sunny Beans' menu carries exactly one tag — drinks get `print_drinks`, food gets `print_food`, retail gets `print_retail`. A customer orders a **latte, an avocado toast, and a tote bag**. Three items, three tags. Atlas sends each item to the station that prepares it:

<Frame caption="Sunny Beans' setup: one tag per item, one tag per printer.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/sunny-beans.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=233e042b7a7b897f155887ef6307cbe1" alt="An order with Latte (tagged print_drinks), Avocado toast (print_food), and Tote bag (print_retail). The Bar printer has Included tags: print_drinks and prints 1× Latte. The Kitchen printer has Included tags: print_food and prints 1× Avocado toast. The Counter printer has Included tags: print_retail and prints 1× Tote bag." width="2960" height="1560" data-path="images/hardware/sunny-beans.png" />
</Frame>

**How to read the diagram:** the **order summary** on the left lists what the customer ordered, with each item's tag underneath. On the right are the three **printer setups** — each card shows the tags that printer is listening for (its *Included tags*) and the **receipt output** it actually prints. The arrows show how each item flows from the order to its matching printer.

The rest of this guide covers how to replicate this kind of setup, then the settings you can adjust once you outgrow the simple case.

<Info>
  **Running a setup like this and something isn't printing where you expect?** Most often the cause is a missing tag on the item — no station is listening for it. Open the product and check the **Printer / KDS / Dispatch tags** field first.
</Info>

## Setting up a printer on Atlas

<Steps>
  <Step title="Plan your tags">
    Decide one tag per printer destination. Use lowercase with underscores:

    * `print_drinks` for the bar
    * `print_food` for the kitchen
    * `print_retail` for the counter

    Tags are case-sensitive: `print_drinks` and `Print Drinks` won't match. Choose one convention and use it across every outlet.
  </Step>

  <Step title="Tag your products">
    Tags live on the product, not on the menu — once a product is tagged, the tag follows it onto every menu it appears in.

    <ol type="a">
      <li>Go to your menu and open the product. See the <a href="/menu-builder/create-menus">Create menus</a> guide if you're new to editing products.</li>
      <li>On the <strong>Product details</strong> dialog, scroll down to the <strong>Printer / KDS / Dispatch tags</strong> field.</li>
      <li>Type the tag (or pick an existing one) and confirm. Repeat for additional tags if the item belongs on more than one printer.</li>
      <li>Save.</li>
    </ol>

    <Frame caption="The Printer / KDS / Dispatch tags field on the Product details modal.">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/product-printer-tags.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=7872880d2fb14aea675dfbf61dd7f929" alt="Product details modal with the Printer / KDS / Dispatch tags field highlighted, showing print_drinks applied to a product." width="2186" height="1564" data-path="images/hardware/product-printer-tags.png" />
    </Frame>

    **Take note:** a product with no tag will only print on **catch-all** printers (printers whose tag list is empty). It will not reach any tagged printer. If your only kitchen printer is tagged, an untagged item won't print there at all.
  </Step>

  <Step title="Add a printer">
    Each outlet manages its own printers.

    <ol type="a">
      <li>Go to <strong>Outlet settings → Outlets</strong> and open the outlet you want to configure.</li>
      <li>Open the <strong>Printers & receipts</strong> tab from the left side menu.</li>
      <li>Click <strong>Create new printer</strong>.</li>
      <li>Fill in the brand, name (e.g. "Bar printer"), and serial number (printed on the back of the printer, usually below a QR code). See <a href="/hardware/printers">Connect Atlas printer to WiFi</a> if you haven't connected the device yet.</li>
      <li>Toggle <strong>Print on POS checkout</strong> and/or <strong>Print on Online checkout</strong> depending on which channels should trigger this printer.</li>
    </ol>

    <Frame caption="The Printers & receipts page for an outlet, showing two printers (one for the kitchen, one for drinks).">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/printers-list.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=cdf2eee9a69f9d86bba7edc5bb4a69e2" alt="Outlet Printers & receipts page listing a Kitchen printer (tags: print_hot_food, print_starter) and a Drinks printer (tag: print_drinks)." width="3014" height="1052" data-path="images/hardware/printers-list.png" />
    </Frame>

    <Info>
      **Not seeing this page or the Create new printer button?** Printer settings are restricted by role. If you can't add or edit printers, ask an account owner to make the change — or reach out to [Atlas support](mailto:hello@atlas.kitchen).
    </Info>
  </Step>

  <Step title="Choose what item tags get printed on this printer">
    Scroll to **Products to be printed**. Add the tag(s) this printer should listen for under **Tag list** and leave **Include/Exclude products** on **Include tagged products**.

    <Frame caption="Products to be printed — the filter that decides which items reach this printer.">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/products-to-be-printed-panel.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=df28c5994a97929a07b7a09d398e7894" alt="Products to be printed modal showing a Tag list field with print_drinks selected, Include tagged products active, plus Separate modifiers, Exclude tagged modifiers, Fulfilment types, and Area fields below." width="1384" height="1116" data-path="images/hardware/products-to-be-printed-panel.png" />
    </Frame>

    Save. The other fields on this modal are for fine-tuning — see [Routing tags configuration](#routing-tags-configuration).
  </Step>

  <Step title="Choose which receipts this printer produces">
    A single printer can produce more than one kind of receipt — a customer receipt, a kitchen prep ticket, etc. Toggle on the formats you need.

    <Frame caption="Receipts to be printed. Each toggle enables a different receipt format on this printer.">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/receipts-to-print.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=aea888599cb62597eaf8cdd66398d6c6" alt="Receipts to be printed section with five toggles: Print customer receipt (condensed receipt for diners), Print delivery receipt, Print kitchen receipt (functional prep), Print item docket (one ticket per item), Print item sticker label." width="1394" height="834" data-path="images/hardware/receipts-to-print.png" />
    </Frame>

    For a basic kitchen printer (bar, kitchen, or counter), enable **Print kitchen receipt**.

    Each receipt type you enable gets its own settings panel below, where you can adjust font size, headers, item sorting, and what's shown on the slip. See [Receipt types and their settings](#receipt-types-and-their-settings).
  </Step>

  <Step title="Test it">
    Create a new test order, fire it or charge it with a manual payment, and verify the receipts. If nothing prints, fix the connection before going further.
  </Step>
</Steps>

## Routing tags configuration

The **Products to be printed** modal has five settings beyond the tag list. The tag list is what you need for the basic case; the rest are for layered or unusual setups.

### Tag list: include vs exclude

<Frame caption="Tag list and Include / Exclude products on the Products to be printed modal.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/products-to-be-printed-tag-list.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=108630225a515566fa17e3d24480c2d6" alt="Products to be printed modal with the Tag list field (showing print_drinks) and the Include/Exclude products selector highlighted. Include tagged products is selected." width="1074" height="827" data-path="images/hardware/products-to-be-printed-tag-list.png" />
</Frame>

The toggle below the tag list flips how the tag list is read.

* **Include tagged products**: print only items whose tags match. Use this on every station printer (bar, kitchen, counter).
* **Exclude tagged products**: print everything *except* items whose tags match. Use this on catch-all printers that should print most items but skip one category.

**Example.** A back-office printer prints every order but should not print retail items (collected at the counter, not the back). On that printer, switch to **Exclude tagged products** and add `print_retail`. The printer prints everything except retail items.

<Info>
  **Exclude** mode prints anything that isn't tagged. A new product added without a tag will start printing on every exclude-mode printer immediately.
</Info>

### Separate modifiers

<Frame caption="Separate modifiers toggle on the Products to be printed modal.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/products-to-be-printed-separate-modifiers.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=1c907fa36ff8c52aa6d19e437cf0fd84" alt="Products to be printed modal with the Separate modifiers row highlighted. The toggle is on. Caption reads: Print modifier products with matching tags as a standalone item on receipt." width="1074" height="827" data-path="images/hardware/products-to-be-printed-separate-modifiers.png" />
</Frame>

Modifiers (the choices on a product — "add cheese", "extra hot", "add a milkshake") follow their parent item by default. If a modifier has no tag of its own, it prints indented under the parent — that's how most restaurants run, and you don't need to touch anything.

Turn **Separate modifiers** on only when a tagged modifier should print as its own line on this printer, typically because it's handled by a different station from its parent.

**Example.** A cheeseburger is tagged `print_food` and goes to the kitchen. One of its modifiers, "Add chocolate milkshake", is tagged `print_drinks`. With **Separate modifiers** turned on at the bar printer, the bar receives the milkshake as its own line. The kitchen still receives the burger ticket without it. If **Separate modifiers** wasn't turn on, nothing would print at the Bar printer, as only top level items are matched.

<Frame caption="A cheeseburger with three modifiers — two untagged extras print with the burger on the kitchen ticket; the tagged milkshake breaks out as its own line on the bar ticket.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/separate-modifiers.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=489fbd8265930d8c22d8cca097314fd8" alt="Cheeseburger with three modifiers (Add cheese, Add bacon, Add chocolate milkshake). The kitchen printer prints the burger plus the two untagged add-ons. The bar printer prints just the chocolate milkshake because its modifier carries print_drinks and 'Include sub items as a separate item' is on." width="2960" height="1280" data-path="images/hardware/separate-modifiers.png" />
</Frame>

Untagged modifiers always stay with their parent. **Separate modifiers** only affects modifiers that carry a tag the printer is listening for.

<Tip>
  **Before enabling, check your modifier tags in Menu builder.** Only modifiers prepped at a different station from their parent should carry a station tag. Every tagged modifier will fire separately.
</Tip>

### Exclude tagged modifiers

<Frame caption="Exclude tagged modifiers field on the Products to be printed modal.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/products-to-be-printed-exclude-modifiers.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=0f8f6d22f13d7c2c16b6ab12c85bd104" alt="Products to be printed panel with the Exclude tagged modifiers field highlighted. The field shows the placeholder 'Leave blank to print all modifiers'. Caption reads: Modifiers with matching tags will not be printed." width="1074" height="827" data-path="images/hardware/products-to-be-printed-exclude-modifiers.png" />
</Frame>

Modifiers carrying any tag listed here are **dropped** from this printer's receipts. Use this to keep noise off a printer that doesn't care about certain modifiers. Leave blank to print every modifier.

**Example.** A bar printer should show ice level and sugar level but not kitchen modifiers like "no onions". Add the kitchen-modifier tag(s) here and they will be stripped from bar tickets.

<Frame caption="In the previous example, we use Exclude modifiers to avoid showing the drinks modifiers at the kitchen printer.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/separate-modifiers.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=489fbd8265930d8c22d8cca097314fd8" alt="Cheeseburger with three modifiers (Add cheese, Add bacon, Add chocolate milkshake). The kitchen printer prints the burger plus the two untagged add-ons." width="2960" height="1280" data-path="images/hardware/separate-modifiers.png" />
</Frame>

### Fulfilment types and area

<Frame caption="Fulfilment types and Area fields on the Products to be printed modal.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/products-to-be-printed-fulfilment-area.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=a1746c41ce8fcc36705409cbfff877d6" alt="Products to be printed panel with the Fulfilment types and Area fields highlighted at the bottom of the panel." width="1074" height="827" data-path="images/hardware/products-to-be-printed-fulfilment-area.png" />
</Frame>

Both fields narrow *which orders* fire this printer.

**Fulfilment types** restrict the printer to specific order types. Atlas supports:

* **Dine-in** — orders linked to a table.
* **Pickup / takeaway** — customer collects in-store.
* **Delivery** — your own delivery or third-party aggregators (foodpanda, Deliveroo, etc.).

Leave blank to print for all fulfilment types.

**Area** is dine-in only. Restrict the printer to specific table areas (for example "Patio", "Second floor", "Private dining"). Use this when one outlet has multiple kitchens or bars serving different parts of the venue.

**Example.** A two-floor restaurant with a downstairs bar and an upstairs bar routes patio orders to the patio bar printer and indoor orders to the main bar printer. A separate label printer set to **Pickup** and **Delivery** only labels bags, so dine-in plates do not get a sticker.

<Info>
  * Pickup and delivery orders bypass the Area filter — they aren't tied to a table.
</Info>

## Receipt types and their settings

Each receipt type enabled on a printer has its own formatting panel: copies, sorting, fonts, what to show on the slip, and so on. These are independent of routing: routing decides *which items* reach a receipt; these settings decide *how the receipt looks*.

Enable a receipt type in **Receipts to be printed**, and the matching settings panel appears below it on the same page.

<AccordionGroup>
  <Accordion title="CUSTOMER RECEIPT. Condensed receipt typically given to your diners.">
    <Frame caption="Customer receipt settings panel.">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/customer-receipt-settings.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=9b9e56f9aaec4e590fb08a534cdb191c" alt="Customer receipt settings: copies, item sorting (by menu order), show open item notes, show diner name on dine-in receipts, show server name." width="1348" height="872" data-path="images/hardware/customer-receipt-settings.png" />
    </Frame>

    Options:

    * **Number of copies**
    * **Item sorting**: You can choose to sort: i) by when the item was added, ii) by how items are sorted in the menu, iii) by order of printing tags or iv) with configurable items to the end.
    * **Show open item notes**: print free-text notes you add at checkout.
    * **Show diner name on dine-in receipts**: useful for quick service restaurants calling diners by name.
    * **Show server name**: adds the staff member who took the order.
  </Accordion>

  <Accordion title="DELIVERY RECEIPT. Optimised for packing and stapling to delivery and takeaway orders.">
    <Frame caption="Delivery receipt settings panel.">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/delivery-receipt-settings.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=bf73b71fb13b316ecc07628d9c0ef5ae" alt="Delivery receipt settings: copies, item sorting, print divider between items, show item notes, larger fonts (item / modifier / fulfilment type), optimise for chit holder, show server name." width="1346" height="1434" data-path="images/hardware/delivery-receipt-settings.png" />
    </Frame>

    Key options unique to delivery:

    * **Print divider between items**: adds a horizontal line between items for legibility while packing.
    * **Larger item / modifier / fulfilment type font**: easier to read at speed.
    * **Optimise for chit holder**: adds space at the top so the slip can be clamped without obscuring text.
  </Accordion>

  <Accordion title="KITCHEN RECEIPT. Functional receipt for kitchen use during food preparation.">
    <Frame caption="Kitchen receipt settings panel.">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/kitchen-receipt-settings.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=62e74aa015625d0ce0829a69d5beb04c" alt="Kitchen receipt settings: copies, item sorting, print divider between items, only print course header when firing, dine-in optimised headers, larger fonts, optimise for chit holder, show diner name, show server name." width="1350" height="1708" data-path="images/hardware/kitchen-receipt-settings.png" />
    </Frame>

    Key options unique to kitchen tickets:

    * **Only print course header when firing**: for course-fired service, prints just the header line for the course rather than every item again.
    * **Dine-in optimised headers**: strips delivery-only fields for restaurants without takeaway.
    * **Optimise for chit holder**: adds space at the top so the slip can be clamped without obscuring text.
    * **Larger item / modifier / fulfilment type font**: easier to read at speed.
    * **Add line between tagging group**: when sorting by printing tags is selected, this option adds a line between each tagging group.
  </Accordion>

  <Accordion title="ITEM DOCKET. Individual dockets for each item triggered.">
    <Frame caption="Item docket settings panel.">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/item-docket-settings.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=b5dee45ac25a87d7ca06343a3ece5f73" alt="Item docket settings: copies, item sorting, show fulfilment type, show order timing, larger item font, optimise for chit holder, combine multiples in one docket, indicate non-default modifiers." width="1354" height="1304" data-path="images/hardware/item-docket-settings.png" />
    </Frame>

    Key options unique to dockets:

    * **Combine multiples in one docket**: three of the same drink print on one slip instead of three.
    * **Indicate non-default modifiers with `**`**: flags any modifier the diner changed from the default, so prep staff can spot customisations at a glance.
    * **Show order timing**: prints when the item was fired.
  </Accordion>

  <Accordion title="ITEM STICKER LABEL. Individual sticker labels for each item triggered.">
    <Frame caption="Item sticker label settings panel.">
      <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/item-sticker-label-settings.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=233e03410bf95a304457b31ed6acf126" alt="Item sticker label settings: copies, sticker label size (30×50mm or 70×50mm), indicate non-default modifiers." width="1358" height="690" data-path="images/hardware/item-sticker-label-settings.png" />
    </Frame>

    Key options:

    * **Sticker label size**: 30×50mm (up to 4 modifiers per label) or 70×50mm (up to 14 modifiers).
    * **Indicate non-default modifiers**: same convention as item dockets.

    Stickers print only for items that explicitly carry a tag the printer is listening for. Untagged items never produce a sticker, even on a catch-all printer.
  </Accordion>
</AccordionGroup>

## Real-world setups

Four setups that combine several of the features above. Use them as templates if your operation looks similar.

### Bar station, kitchen station and runner station

Printing tags can be combined when multiple items must show on different places. Two common patterns:

* **Multiple tags on one printer.** A small kitchen with no separate bar can listen for `print_food` AND `print_drinks` on a single printer. Everything that needs preparation goes there.
* **A catch-all "runner" printer.** A printer with a blank tag list acts as a complete fallback and prints every item on every order. Useful as a backup at the pass, or while you're rolling out tags gradually.

<Frame caption="A layered setup: the bar printer listens for both drinks and retail, and a runner printer at the pass prints everything as a backup.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/routing-overview.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=6206b485632b1d9e62bfdfb464580256" alt="An order with Latte, Avocado toast and Tote bag. The Bar printer (tags: print_drinks, print_retail) prints the latte and tote bag. The Kitchen printer (tag: print_food) prints the avocado toast. The Runner printer (no tags) prints all three items as a catch-all backup." width="2960" height="1720" data-path="images/hardware/routing-overview.png" />
</Frame>

### Combining different type of receipts

A restaurant runs a dedicated **salad station** (printing item dockets for every salad) and a **drinks station** (printing item sticker labels). Salads and drinks can be ordered standalone *or* as modifiers inside a main course (for example, a steak with "Add side salad" and "Add iced coffee"). The kitchen handles the hot mains. Salads and drinks should not show on the kitchen ticket because they are prepped elsewhere.

<Frame caption="The same steak fires three printers: side salad breaks out to the salad station, iced coffee breaks out to the drinks station, and the kitchen ticket only carries the steak.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/salad-station.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=834625cb5363a24beda9920a5eae008d" alt="An order with a standalone Cobb salad (print_salad) and a Ribeye steak (print_food) that has two modifiers: Add side salad (print_salad) and Add iced coffee (print_drinks). The Salad station printer (print_salad, separate modifiers on) prints two item dockets — Cobb salad and Side salad. The Drinks station printer (print_drinks, separate modifiers on) prints a sticker for the iced coffee. The Kitchen station printer (print_food, exclude modifiers: print_salad, print_drinks) prints only the Ribeye steak with the salad and drink modifiers suppressed." width="2960" height="1760" data-path="images/hardware/salad-station.png" />
</Frame>

The salad and drinks station printers both turn **Separate modifiers** on, so tagged modifiers pull out as their own dockets and stickers. The kitchen printer pairs **Exclude tagged modifiers** with `print_salad` and `print_drinks`, so those same modifiers do not reprint under the steak on the kitchen ticket. Separate-on-the-station and exclude-from-the-kitchen always travel together.

### Cafe with receipts split by fulfilment type

A cafe needs different outputs depending on whether a coffee is being made for **takeaway** or **dine-in**. Takeaway orders get a **sticker label** on the cup plus a **delivery receipt** attached to the bag. Dine-in orders need only a **kitchen receipt** for the barista. The two receipt formats run on the same physical bar-side receipt printer.

<Frame caption="Same drinks tag, two different outputs depending on fulfilment type. The takeaway order fires the cup sticker plus a delivery receipt; the dine-in order fires the kitchen receipt on the same hardware.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/bar-fulfilment.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=4fafefef19596fbb645ea341a3357c0f" alt="Two orders: order W1235 (Takeaway/Pickup, 2x Cappuccino) and order P1293 (Dine-in, 1x Flat white). The Cup label printer (print_drinks, fulfilment: Pickup) prints two Cappuccino stickers. The Bar receipt printer's delivery-receipts config (fulfilment: Pickup) prints a delivery receipt for order W1235. A second config on the same Bar receipt printer (fulfilment: Dine-in) prints a kitchen receipt for order P1293. The takeaway order uses a solid indigo trunk-fork arrow to its two printers; the dine-in order uses a dashed teal straight arrow to the kitchen receipts config." width="2960" height="1640" data-path="images/hardware/bar-fulfilment.png" />
</Frame>

The two bar receipt printer cards in the diagram are **two configs pointing at the same physical device**, differentiated by **Fulfilment types**. The first config has Takeaway selected and emits a delivery receipt; the second has Dine-in selected and emits a kitchen receipt. Atlas evaluates each config independently per order, so one bar-side printer ends up producing the right slip for each fulfilment type.

### Fine-dining restaurant with a 5-course menu

A fine-dining restaurant sells a **5-course menu** where each course is a modifier under one parent product. The kitchen needs every course to print as its **own top-level line on the kitchen ticket, in course order**. The diner's customer receipt should show only the parent ("1× Degustation menu"), with none of the courses underneath.

<Frame caption="One Degustation menu order with 5 course modifiers. The kitchen receipt prints six lines in tag order (set first, then courses 1–5). The customer receipt shows just the parent line.">
  <img src="https://mintcdn.com/atlaskitchen/37r-J_hXXYBWK2Sv/images/hardware/degustation-menu.png?fit=max&auto=format&n=37r-J_hXXYBWK2Sv&q=85&s=4d64095dd8879d01645fdf7f8b70fad3" alt="An order with 1x Degustation menu tagged print_set, plus five course modifiers tagged print_1, print_2, print_3, print_4, print_5. The Kitchen station printer's Included tags are listed in order: print_set, print_1, print_2, print_3, print_4, print_5. Item sorting is set to By order of printing tags. Include sub items as separate is on. Exclude modifiers print_1 through print_5. Receipt output shows six lines: Degustation menu followed by Course 1 through Course 5 in order. The Customer printer has Include sub items off, excludes modifiers print_1 through print_5, and its receipt output is a single line: 1× Degustation menu — $180.00." width="2960" height="1600" data-path="images/hardware/degustation-menu.png" />
</Frame>

Three settings work together on the kitchen printer.

<ol type="a">
  <li><strong>Include sub items as a separate item</strong> is on, so each course modifier promotes to its own top-level line.</li>
  <li><strong>Exclude tagged modifiers</strong> lists the same course tags — that strips them from being printed nested under the parent, so each course appears exactly once.</li>
  <li><strong>Item sorting</strong> is set to <em>By order of printing tags</em>, which means the order of the tag list in the printer config <em>is</em> the order they print in. <code>print\_set</code> first, then <code>print\_1 → print\_5</code> in sequence.</li>
</ol>

The customer printer is the mirror image: **Separate modifiers** is off and the course tags appear in **Exclude tagged modifiers**, so the diner sees only "1× Degustation menu" without the course list. Same tag scheme, opposite intent.

## Behaviours to know

A few behaviours catch people out. Review these before going live.

<AccordionGroup>
  <Accordion title="A printer with no tags prints everything">
    A blank **Tag list** means "accept all items". This is intentional and is how the main customer receipt printer works. It also means a kitchen printer added without tags will print every item on every order.
  </Accordion>

  <Accordion title="Customer receipt printers should usually have no tags">
    The receipt given to the customer needs to show the full order. Leave that printer's tag list blank. Adding any tag turns the customer receipt into a filtered ticket, and the customer gets an incomplete receipt.
  </Accordion>

  <Accordion title="Exclude mode flips the safety net">
    In Include mode, an untagged product goes nowhere — visible to the operator. In Exclude mode, an untagged product goes **everywhere** silently. Use Include mode unless you have a specific reason for the inverse.
  </Accordion>

  <Accordion title="Tags also drive KDS and dispatch">
    The same tag system controls Kitchen Display Screens and delivery dispatch routing. That's why the field is *Printer / KDS / Dispatch tags*. You don't need separate tag schemes for KDS and printers.
  </Accordion>
</AccordionGroup>

## Troubleshooting

After setup, a working printer should:

* Show a **green status dot** in **Printers & receipts**.
* Output immediately on a test print.
* Receive only the items whose tags match in a live test order.
* Show the full order on the customer receipt; only matching items on station printers.

If something isn't behaving as expected, check the matching scenario below.

<AccordionGroup>
  <Accordion title="Printer is online but doesn't print orders">
    1. Confirm at least one receipt type is enabled in **Receipts to be printed**. A printer with no enabled receipts has nothing to output.
    2. Check the tag list. In Include mode, the products you expect to print must carry at least one of the printer's tags.
    3. Check **Print on POS checkout** and **Print on Online checkout**. If the channel the order came from is toggled off, the printer won't fire.
    4. Check **Fulfilment types**. If you set this and the test order's type isn't in the list, nothing prints.
    5. Send a test print from the printer's row in **Printers & receipts**. If the test slip prints, the connection is fine and the issue is routing.
    6. Power-cycle the printer.
  </Accordion>

  <Accordion title="Wrong items printing on a station printer">
    1. Open the product and check its tags. If it carries the printer's tag, it will print there.
    2. If you're using **Exclude tagged products**, check the tag list. Exclude mode prints anything not tagged, so any new untagged product starts printing automatically.
    3. Check **Separate modifiers**. If it's on, any modifier carrying a matching tag prints as its own line on this printer.
  </Accordion>

  <Accordion title="Items printing twice (modifier + product tagged with the same tag)">
    Symptom: a tagged modifier appears twice on the same printer's slip — once indented under its parent, and once as its own top-level line.

    Cause: the parent product and the modifier share a tag the printer is listening for, and **Separate modifiers** is on. The modifier breaks out as a standalone line *and* still rides under the parent.

    Fix one of two ways:

    1. **If you don't need the modifier to appear separately**, remove the tag from the modifier. Untagged modifiers ride with their parent automatically.
    2. **If you need the modifier to print separately** (typical for course-fired or station-routed modifiers), add that tag to **Exclude tagged modifiers** on this printer so the modifier doesn't also reprint under the parent. The [Degustation menu](#degustation-menu) example uses this pattern.
  </Accordion>

  <Accordion title="Customer receipt prints incomplete">
    The most common cause is a tag in the customer receipt printer's tag list. Open that printer's settings and clear the **Tag list** field.
  </Accordion>

  <Accordion title="Modifiers printing where they shouldn't">
    1. To stop a tagged modifier from appearing as its own line on the wrong printer, turn **Separate modifiers** off on that printer, or remove the tag from the modifier.
    2. To strip a noisy modifier from a station printer (for example, kitchen modifiers showing up on the bar), add that modifier's tag to **Exclude tagged modifiers**.
  </Accordion>

  <Accordion title="Tags don't match (case or spelling)">
    Symptom: an item silently misroutes — it doesn't reach the station it's tagged for and only appears on catch-all printers (or doesn't print at all).

    Cause: the tag on the product and the tag on the printer don't match character-for-character. `print_drinks`, `Print_Drinks`, `print-drinks`, and `print_drinks ` (with a trailing space) are four different tags.

    Fix:

    1. Open the product and the printer side by side. Compare the tags character by character.
    2. Copy-paste rather than retyping. Tags are case-sensitive and whitespace-sensitive.
    3. When typing a tag on a product, pick the exact existing suggestion from the dropdown rather than creating a new one by accident.
  </Accordion>

  <Accordion title="Area filter not working">
    1. Confirm the order is **dine-in** with a table assigned. Pickup and delivery orders bypass the Area filter.
    2. Confirm the table is assigned to one of the printer's listed areas.
    3. If the printer is set as a station's primary printer, the Area filter is intentionally bypassed for that printer.
  </Accordion>

  <Accordion title="Still stuck">
    Email support at [hello@atlas.kitchen](mailto:hello@atlas.kitchen) with:

    * Your outlet name.
    * The printer name.
    * A screenshot of the printer's **Products to be printed** panel.
    * The order ID that misprinted (if any).
  </Accordion>
</AccordionGroup>

## Next steps

* [Connect Atlas printer to WiFi](/hardware/printers) — if you're setting up a new device.
* [Create menus](/menu-builder/create-menus) — for adding products and tagging them.
