> ## 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.

# Setting up Shopify POS

> Enable Omneo tiles in Shopify POS, attribute in-store sales and sign-ups to the right store and staff, and configure what staff see at the till.

Set up the Omneo CX app for Shopify POS by confirming the sync foundation, choosing how in-store sales and sign-ups are attributed, placing the Omneo tiles on the POS smart grid, and configuring each tile in the embedded admin.

## Before you start

The POS surfaces rely on the same app installation and sync configuration as the online store. Complete these first if you have not already:

| Requirement                                               | Where                                                                                        |
| --------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| Omneo CX app installed on the Shopify store               | [Install the Shopify app](/extensions/shopify/setup#install-the-shopify-app)                 |
| Identity handle decided and left unchanged after go-live  | [Profile sync settings](/extensions/shopify/setup#profile-sync-settings)                     |
| Transaction order status chosen                           | [Order and transaction sync](/extensions/shopify/setup#order-and-transaction-sync)           |
| Shopify locations synced to Omneo                         | Run a locations sync from the app's **Sync** page so every store exists as an Omneo location |
| Shopify POS in use on devices signed in to the same store | Shopify                                                                                      |

You also need admin access to the embedded Omneo CX app in the Shopify admin (**Apps > Omneo CX**) and access to at least one POS device to place tiles and test.

<Warning>
  The identity handle links every Shopify customer to a Profile, and POS search relies on it to decide whether a Profile can be attached to a sale. Changing it after Profiles have synced breaks those links. Treat it as a go-live decision.
</Warning>

## Set up POS

<Steps>
  <Step title="Confirm the webhooks that carry POS activity are active">
    In the embedded admin go to **Settings > General** and check the Shopify webhook switches. POS sales and in-store sign-ups reach Omneo only when these events are **Active**:

    | Event                                                                            | Why POS needs it                                        |
    | -------------------------------------------------------------------------------- | ------------------------------------------------------- |
    | `orders/create`, `orders/updated`                                                | A POS sale becomes an Omneo Order or Transaction        |
    | `refunds/create`                                                                 | In-store returns are recorded against the Transaction   |
    | `customers/create`, `customers/update`                                           | Customers created or edited at the till become Profiles |
    | `customers_marketing_consent/update`, `customers_email_marketing_consent/update` | Changes made through the Manage Comms tile stay aligned |

    New installations start with every webhook inactive. If any of these are off, switch them on and press **Save**. See [Enable data sync](/extensions/shopify/setup#enable-data-sync) for the two sync directions.
  </Step>

  <Step title="Set the default and order locations">
    Two settings decide which store a Profile or Transaction is attributed to when Shopify does not supply a location.

    | Setting              | Where                   | Effect                                                                                  |
    | -------------------- | ----------------------- | --------------------------------------------------------------------------------------- |
    | **Default location** | **Settings > Profiles** | Home store stamped on new Profiles created by the sync when no POS location is recorded |
    | **Order Location**   | **Settings > Orders**   | Location used for orders that have no linked Shopify location                           |

    POS orders always carry the register's Shopify location, and customers created at the till carry the POS location, so these settings act as fallbacks for online activity. Choose your head office or online store location for both unless your reporting needs differ. See [In-store sign-up attribution](/extensions/shopify/pos/overview#in-store-sign-up-attribution) for how the POS location reaches the Profile.
  </Step>

  <Step title="Add the Omneo tiles to the POS smart grid">
    Tiles are placed on each POS device. On the device, open the Shopify POS home screen, choose **Add tile**, select **App**, choose **Omneo CX**, and add the tiles you want staff to use:

    * **Search Customer**
    * **Redemptions**
    * **Benefits**
    * **Manage Comms**
    * **Forms**

    The **Aggregations** block does not need placing. It renders on the customer details screen under **Customer Insights** once the app is installed.

    Repeat on each device, or configure the smart grid layout once and apply it to your locations using Shopify's POS layout tools. If **Omneo CX** does not appear in the app list, confirm the app is installed and active on this store.
  </Step>

  <Step title="Configure what each tile shows">
    In the embedded admin go to **Settings > Point of Sale**. Each tile has its own page. Most let you change the wording staff see, and two do more:

    | Page                   | What you configure                                                        |
    | ---------------------- | ------------------------------------------------------------------------- |
    | **Search tile**        | Wording                                                                   |
    | **Redemptions tile**   | Wording, including the text shown when a redemption limit caps the amount |
    | **Benefits tile**      | Wording, including the messages shown when a Benefit cannot be applied    |
    | **Comms tile**         | Wording                                                                   |
    | **Forms tile**         | Wording, plus the form builder where you create the forms staff fill in   |
    | **Aggregations block** | Which aggregation metrics appear under Customer Insights                  |

    Every wording change lives under a **Language** section that supports more than one language. Change the words to suit your brand; the tile's behaviour does not change. Press **Save** on each page. See [POS tiles and blocks](/extensions/shopify/pos/tiles) for what each tile does and the rules it enforces.
  </Step>

  <Step title="Link the Benefit Definitions staff can redeem">
    The Benefits tile shows only Benefit Definitions that have been linked to a Shopify automatic discount. Linking is done once and applies to online checkout and POS together. Follow [Benefits](/extensions/shopify/benefits) to link each Definition and set its cart rules and whether it combines with rewards.
  </Step>

  <Step title="Review redemption limits">
    The Redemptions tile applies the redemption limit set on the reward redemption discount. Open **Settings > Discounts**, edit the **Reward redemption discount**, and review the **Cart Rules**. The two modes behave differently at POS; see [Redemptions tile](/extensions/shopify/pos/tiles#redemptions-tile). Configuration is shared with online checkout and documented in [Checkout rewards](/extensions/shopify/checkout-rewards).
  </Step>

  <Step title="Generate the Clienteling access token">
    If staff will use Omneo Clienteling from the Shopify admin, go to **Settings > Point of Sale > Clienteling**, select **Generate** under **Access Token**, and press **Save**. Without a token the Clienteling page in the app shows an error instead of the experience.

    Keep the token private. Regenerate it if you believe it has been shared. See [Clienteling](/concepts/platform-surfaces/clienteling) for what the experience provides.
  </Step>
</Steps>

## Verify the setup

Work through these on a POS device signed in to a synced location:

* **Search:** open **Search Customer**, scan a loyalty barcode or type an identifier, and confirm the Profile appears with an **Attach** badge. Tap it and confirm the customer is attached to the cart.
* **Redemption:** with a customer attached and items in the cart, open **Redemptions**. The tile should read the available balance and, if a limit applies, the maximum for this cart. Apply an amount and confirm a `CX Redemption` discount appears on the cart.
* **Benefits:** open **Benefits** and confirm linked Benefits the customer holds are listed with **Apply** enabled when the cart rules are met.
* **Comms:** open **Manage Comms**, toggle the channel, and confirm the change on the Profile in Omneo CX Manager.
* **Insights:** open the attached customer's details screen and confirm **Customer Insights** shows the aggregations you selected.
* **Transaction:** complete the sale, then find the Transaction on the Profile in CX Manager. Confirm the location matches the register and the redemption is linked.
* **Sign-up attribution:** create a new customer at the till, attach them, complete a sale, and confirm the new Profile's joined location is the store.

## Troubleshooting

| Symptom                                                            | Likely cause                                                                                      | What to do                                                                                 |
| ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| **Omneo CX** is missing from the **Add tile** app list             | App not installed or not active on this store                                                     | Reinstall or reactivate from the Shopify App Store listing                                 |
| Search result reads **Not linked to this store, cannot attach**    | The Profile has no identity for this store's identity handle                                      | Sync the customer from Shopify, or link the Profile's identity in Omneo, then search again |
| Redemptions tile shows the balance but **Apply** stays unavailable | The redeemable amount for the cart is still being calculated, or the calculation failed           | Wait for the calculation, or tap **Refresh**                                               |
| Benefits tile reads **Unavailable, tap to retry**                  | The benefits lookup failed                                                                        | Open the tile and tap **Refresh**                                                          |
| A Benefit's card reads **Cart pricing couldn't be checked**        | The Benefit requires full-price items and Shopify did not return compare-at prices for every line | Add or remove an item to trigger a fresh lookup, or tap **Refresh**                        |
| Benefits tile reads **Clearing previous sale, retrying**           | The previous customer's applied Benefits could not be removed after a customer switch             | Make any change to the sale; the tile retries automatically                                |
| Transaction in Omneo shows the wrong location                      | The POS order had no linked location, so **Order Location** was used                              | Check the register's location in Shopify POS settings                                      |
| New Profile joined at head office rather than the store            | The customer was attached more than ten minutes after creation, or was created online             | Expected. Attribution only applies to customers created at the till and attached promptly  |
| Clienteling page shows an error                                    | No access token generated                                                                         | Generate a token under **Settings > Point of Sale > Clienteling** and save                 |

## Related

* [Shopify POS overview](/extensions/shopify/pos/overview)
* [POS tiles and blocks](/extensions/shopify/pos/tiles)
* [Setting up the Shopify extension](/extensions/shopify/setup)
* [Benefits](/extensions/shopify/benefits)
* [Checkout rewards](/extensions/shopify/checkout-rewards)
