> For the complete documentation index, see [llms.txt](https://docs.boomerangme.cards/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.boomerangme.cards/marketplace/shopify-pos.md).

# Shopify POS

### Which Shopify integration do I need?

Boomerangme offers two separate ways to connect to Shopify:

|                                           | **Shopify POS**                                                                            | [**Shopify**](/integrations/shopify.md)                                                  |
| ----------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| How it connects                           | Custom app created in your Shopify store (Admin API)                                       | Ready-made app installed in one click from Integrations                                  |
| Card types                                | Stamp, cashback, discount, or reward                                                       | Cashback only                                                                            |
| Boomerangme branding                      | None — no storefront widget, no Boomerangme branding visible to customers                  | Storefront widget with Boomerangme branding, visible to customers on the store           |
| Can be connected via a white-label domain | Yes                                                                                        | No                                                                                       |
| Accrual depth                             | For stamp and reward cards, accrual must be done manually through the in-store Scanner app | Fully automatic — no scanner needed, points/cashback accrue directly from Shopify orders |

#### Correct way to connect Shopify

{% hint style="success" %}
**Correct**: Connect the Shopify store **only inside the client's sub-account** — the one that must receive orders, points, and customer data.
{% endhint %}

{% hint style="danger" %}
**Incorrect**: Connecting Shopify in your agency account first and then trying to reconnect it in the client's sub-account. Even with the same Shopify login, the app becomes bound to the first location it was connected in. This applies to both this integration and the native Shopify app.
{% endhint %}

**If you already connected it incorrectly, here's how to fix it:**

1. Completely remove the Boomerang app from the Shopify store.
2. Make sure the integration is disconnected in your **agency** account.
3. Log into the **client's sub-account** using `app.boomerangme.cards` or your agency's white-label domain, if you have one configured.
4. Reconnect Shopify **only** from inside the client's sub-account.
5. Re-enter the custom app's Access Token to confirm the connection.

### Step 1. Create a custom app in your Shopify store

1. Log in to your Shopify store.
2. Go to Settings → Apps → **Develop apps** → **Build apps in Dev Dashboard**.

<figure><img src="/files/f4j0zIuW8chgxeyOid89" alt=""><figcaption></figcaption></figure>

3. In the Dev Dashboard, click **Create app** and give it a name.
4. Create a version for your app:
   * In the **URLs** section, define your app URL. If your app isn't embedded in the Shopify admin, you can use the default URL `https://shopify.dev/apps/default-app-home`.

<figure><img src="/files/r5BEHnSa6swRGG0fEXmn" alt=""><figcaption></figcaption></figure>

* In the **Webhooks API Version**, select the latest available version.

<figure><img src="/files/gkYe3AqIqBJxSKlQjRPP" alt=""><figcaption></figcaption></figure>

* In the **Access** section, enter the following Admin API access scopes:

`read_products`, `read_orders`, `read_customers`, `read_returns`

<figure><img src="/files/6ceKtsVHffyN93znceKt" alt=""><figcaption></figcaption></figure>

5. Click **Release**, then confirm by clicking **Release** again.

<figure><img src="/files/foVhWELqptwuB2kqflsb" alt=""><figcaption></figcaption></figure>

6. Back in the Dev Dashboard, open the **Apps** section, select the app you just created, go to the **Installs** section, and click **Install app**. If you have multiple stores, select the store you want to install it on.
7. Confirm the installation by clicking **Install**.

{% hint style="info" %}
When you click Install, Shopify shows a confirmation screen listing the data the app needs access to, along with an orange **"This app hasn't been reviewed"** warning. This is expected for custom apps — they aren't submitted for Shopify's App Store review process. Review the requested permissions and click **Install** to confirm.
{% endhint %}

{% hint style="info" %}
**Want to test this first without touching your live store?** You can create a free Shopify Dev Store through the [Partner Dashboard](https://partners.shopify.com) and repeat these steps there before doing the same in your real store. This is optional — the steps themselves are identical either way.
{% endhint %}

<figure><img src="/files/iuNmi5yLjsd1DF3YJbwG" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/axC2uKuUUKxSnayPe1cG" alt=""><figcaption></figcaption></figure>

For a store, it is better to choose Grow plan (on Basic you will need to create webhooks manually)

<figure><img src="/files/859BhSlFot1u8tl53hoD" alt=""><figcaption></figcaption></figure>

If you wish, you can hit "generate test data for the store"

<figure><img src="/files/hLDQDwrWH1hf0WgCbdQI" alt=""><figcaption></figcaption></figure>

**Set up webhooks (Basic plan only)**

**If you have a basic plan**, you should also add a manual webhook (not relevant for Shopify plans and above).\
Go to settings -> notifications -> webhooks.

<figure><img src="/files/erZu9qR1KHDLJN4zFayt" alt=""><figcaption></figcaption></figure>

Click create webhook.

In the event specify “Order update”,

In the URL - <https://shopify.apps.digitalwallet.cards/webhook>

In the Webhook API version select Latest.

<figure><img src="/files/t4ZQGqCp8ujjnUYj6RSG" alt=""><figcaption></figcaption></figure>

Click Save.

The shop will be generated. Now let's go to the dev dashboard again. In the dev dashboard, click Apps, choose the app that we just created, then click Install app.

<figure><img src="/files/R9cfZW2YleBTHXHfOAFT" alt=""><figcaption></figcaption></figure>

The shop will be created, and you will see this screen.

<figure><img src="/files/rqGqtkzWueTXontnQjR9" alt=""><figcaption></figcaption></figure>

If you have multiple stores, you'll be asked to choose which one to install the app on.&#x20;

<figure><img src="/files/4kyEQG9eG9Iq7iBcCCR0" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
When you click Install, Shopify shows a confirmation screen listing the data the app needs access to, along with an orange **"This app hasn't been reviewed"** warning. This is expected for custom apps — they aren't submitted for Shopify's App Store review process. Review the requested permissions and click **Install** to confirm.
{% endhint %}

<figure><img src="/files/SjNL4X4BGYOXEuTiTxmF" alt=""><figcaption></figcaption></figure>

### Step 2. Get the Access Token

The app is now installed. Next, let's get the credentials needed for the access token.

<figure><img src="/files/Z1aer2mYcnItwgcRItjN" alt=""><figcaption></figcaption></figure>

Open the app you just created, then click Settings in the left menu.

<figure><img src="/files/lFgUVix16y927BXCZF6N" alt=""><figcaption></figcaption></figure>

Here are the credentials you'll need — Client ID and Secret. Copy them.

<figure><img src="/files/hADYs15loto2uo9goCE3" alt=""><figcaption></figcaption></figure>

Create a text file with the following command, replacing the placeholders with your own values, then run it in Terminal:

```bash
curl -X POST \
  "https://{your-shop-address}/admin/oauth/access_token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id={your_client_id}" \
  -d "client_secret={your_client_secret}"
```

* `{your-shop-address}` — your Shopify store's admin address (e.g. `your-store.myshopify.com`), copied from Settings.
* `{your_client_id}` and `{your_client_secret}` — the Client ID and Client secret from your custom app's API credentials page (Step 1).

<figure><img src="/files/IAgPBsKCRcxuvJtHJhDx" alt=""><figcaption></figcaption></figure>

Run it in the terminal. Copy the access token.

![](/files/zfKDVwjG3pK1NnmiznBt)<br>

{% hint style="warning" %}
You can reveal an Admin API access token only once. If you lose it, you'll need to uninstall and reinstall the app to get a new one — this also removes any webhooks registered under the old token, so they'll need to be set up again.
{% endhint %}

### Step 4. Connect the app in Boomerangme

Let's go to Boomerangme Shopify integrations. Choose the loyalty card (the card must be activated), then enter your shop URL and access token as shown in the screenshot.

<figure><img src="/files/ofhTTOHCTojH750GyIZG" alt=""><figcaption></figcaption></figure>

Select a card template (stamp, cashback, discount, or reward).

{% hint style="warning" %}
For **stamp** and **reward** cards, this integration only accrues stamps/points automatically if the card's accrual rule is set to **Visit** (see the note further below). With any other accrual rule (Stamps, Spend, or Products), points must be accrued manually using the Boomerangme Scanner app in-store instead.
{% endhint %}

Enter the Shopify store Url **without https\://** and Access Token

<figure><img src="/files/ztgfEZMW5T50fO6cSBGy" alt=""><figcaption></figcaption></figure>

Choose the Location, then choose the Accrual rules. Then choose products in your shop. (For these products, accumulation will occur if they are purchased.)

<figure><img src="/files/C1feoveHrMDmZXGlehnQ" alt=""><figcaption></figcaption></figure>

Select an accrual rule (for the whole cheque; for a cheque over a certain amount; for certain items)

<div><figure><img src="/files/ONN3DIjbI7r01rbe4Bkq" alt=""><figcaption></figcaption></figure> <figure><img src="/files/62lrtDyDybaTHFaTmfAp" alt=""><figcaption></figcaption></figure> <figure><img src="/files/hArWGB9I2T0TiPn4dvKm" alt=""><figcaption></figcaption></figure></div>

Select delivery channels for card installation links.

<figure><img src="/files/O2QjYtckt5RCBBosClK2" alt=""><figcaption></figcaption></figure>

### How it works

Once the order has been paid for in your Shopify store, the details of the payment order will be transferred to Boomerang. If the order is canceled, the points will be deducted from the card. The updated balance is automatically reflected on the customer's loyalty card installed on their phone, and the customer will receive a push notification about the change.

If a customer with this phone number and email has a loyalty card, they will be awarded points. If the customer is not in the system, it will be created, the card will be issued, and the link to install the card will be sent to the selected delivery channels (connected mailers in your account are required).

{% hint style="danger" %}
**Attention!** The currency in the Boomerang account and in the app must be the same.
{% endhint %}

{% hint style="warning" %}
**If you're using a stamp card**, open the card settings → **Reward Program** and set the accrual rule to **Visit** ("Give stamps based on the customer visits"), then set how many stamps are earned per visit (e.g. 1 visit = 1 stamp). This is required for the Shopify integration to accrue stamps automatically — the other options (Stamps, Spend, Products) won't trigger accrual through this integration.
{% endhint %}

<figure><img src="/files/RiI95Ck1gwE2Vy4CGbFR" alt=""><figcaption></figcaption></figure>

After placing an order on Shopify, the customer will appear on the Boomerang side, and a card will be issued to them with a stamp applied. If you selected a card delivery method in the integration settings, the customer will receive an SMS or email at that moment with a unique link to set up the card.
