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

# POS tiles and blocks

> What each Omneo tile and block does in Shopify POS, the rules it enforces against the cart, and what you can configure under Settings > Point of Sale.

Each Omneo tile in Shopify POS does one job for the staff member at the till. This page describes the behaviour of every tile and block, the rules each one enforces, and what can be changed in the embedded admin under **Settings > Point of Sale**.

For placement and the overall setup order, see [Setting up Shopify POS](/extensions/shopify/pos/setup).

## Language settings

Every tile has a **Language** section. It lets you rewrite the labels, headings, button text, and messages shown on that tile, and supports more than one language, each in its own drop-down. Changing the wording never changes what the tile does. The tile-specific keys worth knowing about are called out below.

## Search Customer tile

Staff use this tile to find a Profile and attach it to the current sale.

**How it works**

1. Staff scan a barcode or QR code, or type an identifier such as a loyalty card number, then search.
2. The app searches Omneo [Identities](/concepts/profiles/identities) for that identifier. More than one Profile can be returned if the identifier matches several.
3. Each result shows whether the Profile is linked to this store through the store's identity handle. Linked Profiles show an **Attach** badge. Unlinked Profiles read **Not linked to this store, cannot attach**, because there is no Shopify customer to put on the sale.
4. Tapping a linked result attaches the Shopify customer to the cart and closes the search.

<Note>
  The Omneo tile is for identifier lookups, typically a scanned loyalty card. To find a customer by name, email, or mobile number, use Shopify POS's own customer search. Because every synced Profile has a matching Shopify customer, attaching a customer through native search gives the Omneo tiles the same Profile context as attaching through the Omneo tile.
</Note>

If the attached customer was created in Shopify within the previous ten minutes, the app also records the POS location and staff member on the customer for [in-store sign-up attribution](/extensions/shopify/pos/overview#in-store-sign-up-attribution).

**Configuration:** wording only.

## Redemptions tile

Staff use this tile to apply a Profile's reward balance to the open cart.

**How it works**

1. With a customer attached, the tile reads the Profile's reward balance from Omneo and shows it as an available amount.
2. Staff enter the amount to redeem. The amount field will not accept more than the maximum for this cart.
3. The reward is stored on the cart as a `CX Redemption` property and appears as a discount on the cart and receipt. The tile changes from "available" to "applied".
4. When the order syncs, Omneo deducts the amount Shopify actually discounted under the reward, never more than the amount staff entered.

**Redemption limits at POS**

The limit configured on the reward redemption discount (see [Checkout rewards](/extensions/shopify/checkout-rewards)) is applied against the cart staff have open, with one difference from online checkout:

| Limit mode             | Behaviour at POS                                                                                                                            |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| **Percentage of cart** | The maximum is that percentage of the eligible items in the cart, exactly as online.                                                        |
| **Minimum cart spend** | The maximum is the eligible cart total. The cart minimum and maximum are **not** checked at POS. A sale below the minimum can still redeem. |

Staff see the limit on the tile subheading (for example the available balance followed by the maximum for this cart), on a **Redeemable on this cart** line in the redemption screen, and on the **Apply** button, which names the amount that will actually be applied. While the maximum is being calculated **Apply** is unavailable, and if the calculation fails staff are prompted to tap **Refresh**.

**Configuration:** wording, including separate keys for the redeemable label, the tile subheading prefix and suffix around the maximum, the note above the amount field, and the loading and error messages. The limit itself is set on the reward redemption discount, not here.

## Benefits tile

Staff use this tile to apply a Profile's claimable [Benefits](/concepts/incentives/benefits) to the sale, alongside the existing online checkout Benefits block.

**How it works**

1. With a customer attached and items in the cart, the tile shows how many Benefits can be applied to this cart. With no customer it reads **Select a customer**; with an empty cart it reads **Add cart items**.
2. Staff open the tile, see each Benefit as a card, and tap **Apply**. Applied Benefits show **Remove** instead.
3. A Benefit applies as its linked Shopify discount, or adds a free item where the Benefit provides one.

**Cart rules are enforced**

Unlike the Redemptions tile, the Benefits tile checks the linked discount's cart rules before allowing a Benefit to be applied, the same as online checkout:

| Rule                         | Behaviour at POS                                                                                                                                                                                                                                                                                        |
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Cart minimum or maximum      | If the eligible cart total is outside the range, the card explains why and **Apply** stays disabled.                                                                                                                                                                                                    |
| Full-price items only        | The app looks up each line's compare-at price. If the lookup fails or does not cover every line, the card reads **Cart pricing couldn't be checked** and **Apply** stays disabled rather than risk discounting a sale item. Adding or removing an item triggers a fresh lookup; **Refresh** forces one. |
| Combines with rewards        | A Benefit marked as not combinable is refused while a reward is on the sale.                                                                                                                                                                                                                            |
| Combines with other Benefits | A Benefit is refused while another non-combinable Benefit is applied.                                                                                                                                                                                                                                   |

**Failure handling**

* If the Benefits lookup itself fails, the tile reads **Unavailable, tap to retry** rather than showing zero, so a customer with Benefits never looks like one without.
* Switching customers mid-sale clears the previous customer's applied Benefits and any free items they added. If that clean-up fails, the tile reads **Clearing previous sale, retrying** and stays disabled until it succeeds, so the new customer cannot inherit the previous customer's discount.
* If the customer on the sale changes part-way through applying or removing a Benefit, the operation is abandoned and nothing is written to the new customer's sale.
* If applying a free-item Benefit fails and the free item could not be removed, staff are told to remove that line manually.

**Configuration:** wording, including the tile subheadings for each state, the modal headings and buttons, the empty and no-customer messages, and every refusal reason. Which Benefits appear is controlled by linking Definitions, see [Benefits](/extensions/shopify/benefits).

## Manage Comms tile

Staff use this tile to view and update a Profile's marketing preferences in store.

**How it works**

The tile shows one channel out of the box, **Email Promotions**, with its current state as **Opted in** or **Opted out**. Staff switch it on or off for the customer and the change is written to the matching marketing preference on the Profile in Omneo. Marketing consent then flows back to Shopify through the normal consent sync described in the [Shopify Ecommerce overview](/extensions/shopify/overview#what-the-extension-syncs).

**Configuration:** wording only.

## Forms tile

Staff use this tile to record structured information about a customer at the counter, for example sign-up details or preferences.

**How it works**

Staff open the tile, choose a form (the default form is preselected), fill in the fields with the customer, and submit.

**Form builder**

Under **Settings > Point of Sale > Forms tile** the **Forms** section lists existing forms with their name, number of fields, and created and updated dates. Select **Create Form** to add one, select a form to edit it, or **Delete** to remove it after confirming.

| Form property | Notes                                                                                 |
| ------------- | ------------------------------------------------------------------------------------- |
| **Title**     | Required, up to 50 characters                                                         |
| **Label**     | Optional display label                                                                |
| **Default**   | One form can be the default at a time. Setting a new default clears the previous one. |
| **Fields**    | The questions on the form                                                             |

| Field type        | Answer                                                         |
| ----------------- | -------------------------------------------------------------- |
| **Text**          | Free text                                                      |
| **Number**        | A numeric value                                                |
| **Tile selector** | A set of options staff tap, allowing one or several selections |

**Configuration:** wording, plus the forms themselves.

## Aggregations block

The block appears on the POS customer details screen under the heading **Customer Insights** and shows a set of summary numbers about the attached customer drawn from Omneo aggregations, such as total spend or favourite store.

**Configuration:** under **Settings > Point of Sale > Aggregations block**, choose which aggregation metrics are displayed. There is no wording section.

## Clienteling

Clienteling is not a POS tile. It is the Omneo [Clienteling](/concepts/platform-surfaces/clienteling) experience embedded in the Shopify admin, opened from the Omneo CX app. **Settings > Point of Sale > Clienteling** holds the **Access Token** that authenticates the embedded experience. Generate a token during setup, or generate a new one to replace an old one, and press **Save**. Anyone holding the token can connect to the experience, so keep it private.

## Quick reference

| Item                 | What you can change                 | Rules enforced against the cart                                           |
| -------------------- | ----------------------------------- | ------------------------------------------------------------------------- |
| Search Customer tile | Wording                             | Only Profiles linked to this store can be attached                        |
| Redemptions tile     | Wording, including limit text       | Percentage limit enforced; cart minimum and maximum not enforced          |
| Benefits tile        | Wording, including refusal messages | Cart minimum and maximum, full-price only, and combinability all enforced |
| Manage Comms tile    | Wording                             | None                                                                      |
| Forms tile           | Wording, form builder               | None                                                                      |
| Aggregations block   | Which metrics show                  | None                                                                      |
| Clienteling          | Access token                        | Not applicable                                                            |

## Related

* [Shopify POS overview](/extensions/shopify/pos/overview)
* [Setting up Shopify POS](/extensions/shopify/pos/setup)
* [Benefits](/extensions/shopify/benefits)
* [Checkout rewards](/extensions/shopify/checkout-rewards)
* [Identities](/concepts/profiles/identities)
