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

# Shopify

> Connect your Shopify store to Adapt to analyze orders, products, customers, inventory, and revenue

Adapt can connect to Shopify two ways. Pick whichever fits your store:

* **[Custom OAuth app](#connect-with-a-custom-oauth-app) (recommended)** — you create a Shopify app, save its Client
  ID and Client Secret in Adapt, and authorize over OAuth. Adapt receives a
  long-lived offline token, so there is nothing to rotate day to day. This is the
  best option for stores set up in the Shopify Dev Dashboard.
* **[API key](#connect-with-an-api-key)** — you paste an Admin API access token (`shpat_`) from a custom app.
  Simplest if your store already has an admin-created custom app with a token.

Both are read-only and use the same Shopify scopes. Choose the matching **Shopify**
tile in Adapt's integration catalog for the method you use.

## Connect with a custom OAuth app

### Create a Shopify OAuth app

Create the app in the [Shopify Dev Dashboard](https://shopify.dev/docs/apps/build/dev-dashboard/create-apps-using-dev-dashboard).
Adapt uses the standard [authorization code grant](https://shopify.dev/docs/apps/build/authentication-authorization/access-tokens/authorization-code-grant).

<Steps>
  <Step title="Open the Dev Dashboard">
    Go to [dev.shopify.com/dashboard](https://dev.shopify.com/dashboard) and
    sign in, or create an account if you do not have one.
  </Step>

  <Step title="Create the app">
    Click **Create app**, then in the **Start from Dev Dashboard** card set an
    **App name** (for example, "Adapt") and create the app.
  </Step>

  <Step title="Set the access scopes">
    Open the app's **Access** section and set the **Scopes** field to the read
    scopes Adapt uses:

    ```
    read_orders, read_products, read_customers, read_inventory, read_locations, read_analytics
    ```

    These cover Adapt's Shopify use cases — revenue and ROAS reporting, customer
    retention, and inventory management. These configured scopes are exactly what
    the store grants when the app is installed, so set everything you need here
    before installing. Request only what your use case needs.
  </Step>

  <Step title="Add Adapt's redirect URL">
    Still in the **Access** section, add this exact value under **Redirect URLs**:

    ```
    https://app.adapt.com/integrations/shopify/callback
    ```

    Shopify only redirects back to URLs registered here, so it must match
    exactly.
  </Step>

  <Step title="Set the app to custom distribution">
    On the app's **Overview** page, in the **Distribution** panel, click **Select
    distribution method**. Choose **Custom distribution**, click **Select**, then
    confirm **Select custom distribution** in the dialog (this can't be undone).
    Enter your **Store domain** (for example `my-store.myshopify.com`), leave
    **Allow multi-store install for one Plus organization** as needed, and click
    **Generate link**. Choosing custom distribution automatically grants the app
    access to protected customer data (required for `read_orders` and
    `read_customers`), so there is no separate approval to request.
  </Step>

  <Step title="Release a new version">
    Release a new version of the app so the scopes and distribution settings
    become active.
  </Step>

  <Step title="Install the app on your store">
    Copy the generated **Install link** and open it to install the app on your
    store. You can return to it anytime from the **Distribution** panel, which now
    shows **Manage custom install link** (or use **Install app** in the
    **Installs** panel). Installing is what grants the app the scopes and
    protected customer data you configured. If you change scopes later, release a
    new version and reinstall, then reconnect in Adapt.
  </Step>

  <Step title="Copy the Client ID and Client Secret">
    Open the app's **Settings** and copy the **Client ID** and **Client
    secret**. See Shopify's [About client credentials](https://shopify.dev/docs/apps/build/authentication-authorization/client-secrets).
    Store the secret securely — you will paste it into Adapt next.
  </Step>
</Steps>

<Note>
  `read_orders` and `read_customers` return customer PII (protected customer
  data); custom distribution grants this automatically. Accessing PII also
  requires your store to be on a paid Shopify plan. Adapt calls the GraphQL Admin
  API (Shopify is phasing out REST access to protected data).
</Note>

### Save your app credentials in Adapt

You do this once per organization. Any org member can save or rotate these shared
credentials, and every member can then connect their store using them.

<Steps>
  <Step title="Open Integrations">
    In Adapt, go to **Settings > Integrations**.
  </Step>

  <Step title="Find Shopify">
    Search for **Shopify** and select the custom OAuth app option from the
    catalog.
  </Step>

  <Step title="Enter your app credentials">
    On the **Connect your OAuth app** setup screen, enter your **Client ID** and
    **Client Secret**, then click **Save credentials**.
  </Step>
</Steps>

![Shopify integration setup in Adapt with fields for the custom OAuth app Client ID and Client Secret](https://adapt.com/docs/images/integrations/shopify/custom-oauth-credentials.png)

<Note>
  Adapt encrypts the Client Secret at rest with AES-256 and never shows it again.
  To rotate it later, use **Update credentials** on the Shopify integration and
  paste a new secret.
</Note>

### Connect your store

<Steps>
  <Step title="Start the connection">
    With credentials saved, click **Connect** on the Shopify integration.
  </Step>

  <Step title="Enter your store subdomain">
    Enter just your store subdomain — for example `my-store` for
    `my-store.myshopify.com` — and a name for the connection, then click
    **Connect**.
  </Step>

  <Step title="Approve access on Shopify">
    You are redirected to Shopify to review the requested scopes. Approve the
    request, and Shopify sends you back to Adapt with the connection in place.
  </Step>

  <Step title="Test the connection">
    Ask Adapt to list your most recent orders.
  </Step>
</Steps>

## Connect with an API key

Use this if your store already has (or can create) an admin custom app with an
Admin API access token.

<Note>
  Shopify is retiring new custom app creation from the store admin. The **Develop
  apps** flow remains available on many stores where custom app development is
  enabled and is what produces a long-lived `shpat_` token. If you can't create a
  custom app this way, use the custom OAuth app method above instead.
</Note>

### Set up credentials

<Steps>
  <Step title="Open the Develop apps area">
    In your Shopify admin, go to **Settings > Apps and sales channels > Develop
    apps**.
  </Step>

  <Step title="Enable custom app development">
    If prompted, click **Allow custom app development** and confirm. This is a
    one-time action per store.
  </Step>

  <Step title="Create the app">
    Click **Create an app**, give it a name (for example, "Adapt"), select an app
    developer, and click **Create app**.
  </Step>

  <Step title="Configure Admin API scopes">
    Open the **Configuration** tab, then under **Admin API integration** click
    **Configure**. Select the read scopes you need — for example `read_orders`,
    `read_products`, `read_customers`, `read_inventory`, `read_locations`,
    `read_analytics` — then click **Save**.
  </Step>

  <Step title="Install the app">
    Open the **API credentials** tab, click **Install app**, then confirm.
    Installing generates the Admin API access token.
  </Step>

  <Step title="Reveal and copy the access token">
    Under **Admin API access token**, click **Reveal token once** and copy the
    value. It starts with `shpat_`. Shopify shows this token only once, so store
    it securely.
  </Step>

  <Step title="Note your store domain">
    Your store domain is the `.myshopify.com` address for your shop, for example
    `my-store.myshopify.com`.
  </Step>
</Steps>

### Connect to Adapt

<Steps>
  <Step title="Open Integrations">
    In Adapt, go to **Settings > Integrations**.
  </Step>

  <Step title="Find Shopify">
    Search for **Shopify** and select the API key option from the catalog.
  </Step>

  <Step title="Start the connection">
    Click **Connect** to open the connection form.
  </Step>

  <Step title="Add your credentials">
    Enter the values you gathered above, then click **Add connection**:

    | Secret Name                  | Value                                           |
    | ---------------------------- | ----------------------------------------------- |
    | `SHOPIFY_STORE_DOMAIN`       | Your store domain (e.g. my-store.myshopify.com) |
    | `SHOPIFY_ADMIN_ACCESS_TOKEN` | Your Admin API access token                     |

    You can rename the connection and choose whether it is shared with your
    organization or kept personal to you.
  </Step>

  <Step title="Test the connection">
    Ask Adapt to list your most recent orders.
  </Step>
</Steps>

## Security

* Credentials and access tokens are encrypted at rest with AES-256
* Adapt requests read-only scopes; grant only what your use case needs
* Revoke access anytime by uninstalling the app from your Shopify store, or by removing the credentials in Adapt
* The Client Secret (OAuth) and Admin API access token (API key) are shown only once; store them securely
* Never share your credentials or commit them to source control

## Capabilities

Adapt can read and analyze your Shopify store data through the Admin API. Ask
questions about sales performance, catalog, customers, and inventory in natural
language.

### Examples

```
Which channel is driving efficient revenue this week, and where am I wasting spend?
```

```
Who bought once and never came back, and who used to buy regularly but went quiet?
```

```
Which SKUs are about to stock out across channels?
```

```
Show total revenue by month for the last year
```
