Shopify
Integrating Shopify with Osano
Connecting to Shopify
In order for Osano to discover data stored in your systems, we must connect to those data providers via an API. We require, at minimum, read-only access to establish a connection to these providers. Each provider you connect may require different information. Please see the linked vendor documentation for instructions on where and how to obtain this data.
Setup
An admin must create a custom app in the Shopify Dev Dashboard and enter its Client ID and Client Secret in Osano to establish a connection. Osano uses these credentials to obtain an Admin API access token via the client credentials grant and refreshes the token automatically.
Authenticated Roles
admin
Authentication Actions
- API Key
Create a custom app in Shopify and give Osano its Client ID and Client Secret. Osano exchanges them for an Admin API access token via the client credentials grant and refreshes it automatically — you never paste or rotate a token yourself.
- In the Shopify Dev Dashboard, create a custom app for your organization. (New custom apps can no longer be created from the Shopify admin.)
- Add the
read_customersAdmin API access scope to the app. - Release an app version so the scope takes effect.
- In the Shopify Partner Dashboard, set the app's distribution to Custom distribution: App distribution → select your app → Choose distribution → Custom distribution → Select. This grants the Protected Customer Data access Osano needs to read customer names, emails, phone numbers, and addresses.
- Install the app on your store.
- Copy the app's Client ID and Client Secret from the Dev Dashboard, and note your shop
subdomain — the part before
.myshopify.com(for example,osano-testinosano-test.myshopify.com/admin). - Enter the Client ID, Client Secret, and Shop Subdomain in Osano.
⚠️ Custom distribution is required. Without it you will get an authorization error ("This app is not approved to access the Customer object") even with the
read_customersscope. Distribution is set in the Partner Dashboard (the Dev Dashboard has no option for it) and cannot be changed after you select it.
Note: Generating an Admin API access token directly in the Shopify admin is deprecated and is no longer available for new custom apps. Existing integrations using a static Admin API access token continue to work, but new connections should use the Client ID and Client Secret above.
Authentication Methods
- apiKey
Core Functionality
- Data Discovery
- User Search
- Data Deletion
Base URL
https://$subdomain.myshopify.com
User Search
- name
- phoneNumber
- address
- birthday
- userId
Endpoints
All requests use the Shopify GraphQL Admin API.
Used for data discovery
- POST
admin/api/2024-10/graphql.json— queriescustomersfor a sample record, thencustomerfor its fields
Used for user search
- POST
admin/api/2024-10/graphql.json— queriescustomersfiltered byemail, thencustomerfor its fields
Troubleshooting
"Shopify could not complete the request: ... This app is not approved to access the Customer
object" (the error may also mention ACCESS_DENIED or Protected Customer Data)
The app does not have Protected Customer Data access. This is separate from the read_customers
scope — adding the scope, releasing a version, and reinstalling alone will not fix it. Grant
access by setting the app's distribution to Custom distribution in the
Shopify Partner Dashboard: App distribution → select your app →
Choose distribution → Custom distribution → Select. Then reconnect in Osano. (Distribution cannot
be changed once selected.)
"Shopify did not return an access token for the client credentials grant" (or an
invalid_client / invalid_request error)
Osano could not exchange your Client ID and Client Secret for an access token. Confirm that:
- The app was created in the Shopify Dev Dashboard (an app developed by your own organization). Apps created in the Partner Dashboard or directly in the Shopify admin cannot use the client credentials grant.
- The app is installed on the store you are connecting.
- The Client ID, Client Secret, and Shop Subdomain are entered correctly.
Demo Video
Last Modified: 2026-06-25