---
title: "Connect Shopify to Rig with your own app | Rig guide"
description: "Create a merchant-owned Shopify app, grant read-only Admin API scopes, install it on your store and connect it to Rig with client credentials."
canonical: "https://rig.so/guides/connect-shopify"
format: markdown
---

Search guides, references, playbooks…⌘K

Browse guides

# Connect Shopify to Rig with your own app

Create a private Shopify app owned by your organisation, install it on your store, then give Rig its Client ID and Client Secret. This connects Shopify without waiting for Rig's shared public app to pass App Store review. Rig uses read-only access and requests a fresh short-lived token for every sync.

Seeing “This app is under review”?
Cancel that installation. It is the shared Rig app, which Shopify will not let a new merchant install until its review is complete. Follow this guide to create an app inside your own Shopify organisation instead.

## Why use your own app

Shopify's client credentials flow is designed for trusted server-to-server integrations that are owned by the same organisation as the store. Because you own both the app and the store, the app does not need an App Store listing or public-app review. It can only be installed on stores in your Shopify organisation.

Shopify access is still controlled by the read scopes you grant. Your Shopify plan and protected-customer-data settings can also affect whether customer names, emails, phone numbers and addresses are returned.

## Before you start

- Sign in with the Shopify organisation that owns the store you want to connect. The app and store must belong to the same organisation.
- You need permission to build and manage apps. The organisation owner has this automatically; another user needs the relevant app development role or permission.
- Know the permanent `.myshopify.com` address of the store. Your customer-facing domain is not the value Rig needs.
- By the end, you will paste three values into Rig: the shop subdomain, Client ID and Client Secret.

## Step 1: Create the Shopify app

1. Open Shopify's [Dev Dashboard](https://dev.shopify.com/dashboard) and make sure the correct organisation is selected.
2. Open `Apps`, then click `Create app`.
3. Choose `Start from Dev Dashboard`.
4. Name the app `Rig data sync` and click `Create`.

## Step 2: Configure read access

1. Open the app's `Versions` tab and create a version.
2. For the app URL, use Shopify's default non-embedded app URL, `https://shopify.dev/apps/default-app-home`. Rig does not need an app screen inside Shopify.
3. Choose the newest available Webhooks API version.
4. Add the Admin API access scopes. The field takes a comma-separated list, so paste this exactly:
   
   `read_orders,read_customers,read_products,read_locations,read_inventory,read_discounts`Copy
   
   All six are required. Missing any one of them makes that part of the sync fail with an access-denied error.
5. Release the version.

Read-only by design
Do not add write scopes. Rig only needs to read Shopify data for the warehouse sync.

Need orders older than 60 days?
Shopify documents `read_orders` as covering the latest 60 days by default. For a full historical backfill, request access to `read_all_orders` in the app's API access area, then add it alongside `read_orders` in a new released version. Shopify may review this restricted scope.

## Step 3: Install the app on your store

1. Open the app's `Home` tab in the Dev Dashboard.
2. Scroll to the installation section and click `Install app`.
3. Select the store you want Rig to sync.
4. Review the read permissions and click `Install`.

If your store is not listed, it is usually in a different Shopify organisation. Switch to the organisation that owns the store and create the app there.

## Step 4: Copy the credentials

1. In the app, open `Settings`.
2. Under **Credentials**, copy the **Client ID**.
3. Reveal and copy the **Client Secret**. Treat it like a password.
4. Find your store's permanent address, for example `acme.myshopify.com`. Rig needs only the part before the suffix, in this example `acme`.

There is no token to copy
That is expected for a Dev Dashboard app using client credentials. Rig exchanges the Client ID and Client Secret for a Shopify access token when each sync starts. The token expires after about 24 hours, so there is nothing for you to refresh manually.

## Step 5: Connect it in Rig

New to Rig? Watch how to find Connections

1. In Rig, open `Connections` in the left sidebar and go to `Sources & actions`.
2. Search for **Shopify** and open its card.
3. In **Shop subdomain**, enter only the part before `.myshopify.com`.
4. Leave **Option A: Admin API token** blank. That field is only for older Shopify custom apps that already have a permanent token.
5. Paste the Shopify Client ID into **Option B: App API key / client ID**.
6. Paste the Shopify Client Secret into **Option B: App API secret / client secret**.
7. Leave **Days of history on first sync** at `0` for all history Shopify permits, or enter a smaller number for a faster first sync.
8. Click `Continue`, then `Test`. When the test passes, click `Sync`.

## What Rig pulls in

Shopify lands in its own `shopify` schema in your warehouse. Rig uses Shopify's GraphQL Bulk Operations API for the large tables, then keeps them current with incremental syncs.

- **Orders**, line items, transactions, refunds, fulfilments, shipping lines, tax lines and discount applications
- **Customers** and their order history, subject to Shopify's protected-customer-data rules
- **Products**, variants, options and collections
- **Locations** and inventory levels
- **Discounts** and refund detail

## Troubleshooting

- **“This app is under review”**: you opened the shared public Rig app. Cancel and use the merchant-owned app flow in this guide.
- **The store is missing at install**: the app and store are not in the same Shopify organisation, or your user lacks access to the store.
- **The test says invalid client credentials**: copy the Client ID and Secret again from the app's Settings page, and check that the app is installed on the exact store subdomain entered in Rig.
- **The test reports access denied**: first check that all six read scopes are in the released app version. If they are all there and it still fails, **reinstall the app** — Shopify issues the access token once, at install, carrying only the scopes granted at that moment, and editing the scope list afterwards does not change a token that already exists. On the app's `API credentials` tab choose **Uninstall** and then install it again (do not delete the app). Shopify issues a new token; paste that into Rig and sync again. The tell-tale sign is an access-denied error naming a scope you can see ticked on screen.
- **Only recent orders appear**: request and release `read_all_orders`, or confirm with Shopify what historical access the app has.
- **You rotated the Client Secret**: update the secret in Rig before the next sync. The old secret stops working after you revoke it.

## Shopify references

- [Create apps using the Dev Dashboard](https://shopify.dev/docs/apps/build/dev-dashboard/create-apps-using-dev-dashboard)
- [Use the client credentials grant](https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/client-credentials-grant)
- [Manage Admin API access scopes](https://shopify.dev/docs/apps/build/authentication-authorization/manage-access-scopes)
- [Work with protected customer data](https://shopify.dev/docs/apps/launch/protected-customer-data)

## What people use this for

- Track revenue, AOV and discount impact
- Measure repeat purchase, LTV and cohorts
- Analyse product and inventory performance
- Understand contribution margin per order

[More ideas for using Shopify](https://rig.so/integrations/shopify)

Was this guide helpful?

Yes No

---

- [This page as HTML](https://rig.so/guides/connect-shopify)
- [Site map for language models](https://rig.so/llms.txt)
- [API and agent documentation](https://rig.so/developers)
