# Connect a Shopify store

> Link ArmPOS to one or more Shopify stores: products, stock, customers and orders, and what to check before importing orders.

*Section: Integrations · Updated: 2026-10-19 · Needs the plan feature: shopify*

By the end you will know how to link ArmPOS to one or more Shopify stores, what each sync does, and what to check before you import orders.

> **Note:** This guide was written from ArmPOS's screens and code. It was **not run**: it needs a Shopify store of your own. Shopify comes with some plans only; without it, the page isn't in your menu.

## What it does

- Products go both ways; stock only from ArmPOS to Shopify; customers both ways.
- Orders come from Shopify into ArmPOS, each as a sale that lowers stock.
- Syncs run when you click; Shopify also tells ArmPOS about new orders, customers and product changes once its webhooks are registered. A sale at your till doesn't change Shopify's stock until you click **Sync inventory now**.

## In Shopify first

In your Shopify admin: **Settings › Apps and sales channels › Develop apps › Create an app**. Give it the Admin API scopes `read_products`, `write_products`, `read_inventory`, `write_inventory`, `read_customers`, `write_customers`, `read_orders`, `write_orders` and `read_locations`, install it, and copy the **Admin API access token** (shpat\_…, shown once) and the **API secret key** (shpss\_…).

## Add the store

1. **Open [Settings › Shopify Settings](/app/shopify)**, tab **Stores**, and **click Create.**
2. **Fill the Name, the Shop domain** (your-store.myshopify.com) **and the Admin API access token.** All three are required.
3. **Add the API secret key.** It is needed for webhooks.
4. **Pick the Warehouse** your stock and Shopify's orders use, or leave **All Warehouses**.
5. **Check no box was filled in by your browser,** and **click Save.**
6. **Open the store again with Edit,** click **Load locations from Shopify**, pick the **Shopify location**, and save.
7. **Click Test connection,** then **Register webhooks** on the store's row. Your shop must be reachable on the internet over HTTPS for webhooks to arrive.

![The Add store window: Name, Shop domain (my-store.myshopify.com), Admin API access token (shpat\_…), API secret key (shpss\_…, required for webhooks), API version 2025-01, Warehouse All Warehouses, Shopify location with Load locations from Shopify, Active, and Save.](https://armpos.online/storage/help/c13ea1203e-shopify-2-add-store.webp)
*Some browsers fill your ArmPOS sign-in into these boxes: empty any box you didn't type in.*

![Shopify Settings: the tabs Stores, Products, Inventory, Customers, Orders, View logs and Guide, and Shopify stores with Create and "No Shopify store connected yet".](https://armpos.online/storage/help/9fd5f33231-shopify-1-stores.webp)
*The other tabs open once a store is added. The header's selector picks which store a sync acts on.*

## The first sync, in this order

1. **Products › Pull from Shopify**: links the products you both have by SKU and brings the rest in.
2. **Products › Push to Shopify**: sends your products not yet in Shopify (**Only products not synced yet** stays ticked).
3. **Inventory › Sync inventory now**: sets Shopify's stock to ArmPOS's.
4. **Customers**: push and pull. Customers need an email or a phone number.
5. **Orders › Import orders now**: brings Shopify's orders in as sales.

> **Warning:** - **Import orders now** brings in Shopify's **whole order history**, and each order lowers today's stock. Run it once your stock is right, and expect old orders to appear.
> - Refunds and cancellations in Shopify don't give stock back in ArmPOS: adjust the stock yourself.
> - Deleting the store, or changing its domain, forgets which orders came in: the next import makes them again.
> - Unticking **Only products not synced yet** overwrites the products in Shopify with ArmPOS's.

## What's next

[WooCommerce](/app/help/woocommerce), if you also sell there.
