Skip to content

Commit 19b41a5

Browse files
feat(integrations): add support for shopify client credentials (#5830)
## Describe the problem and your solution - add support for shopify client credentials <!-- Issue ticket number and link (if applicable) --> <!-- Testing instructions (skip if just adding/editing providers) -->
1 parent 8984fe1 commit 19b41a5

13 files changed

Lines changed: 231 additions & 0 deletions

File tree

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
---
2+
title: 'Shopify (Client Credentials)'
3+
sidebarTitle: 'Shopify (Client Credentials)'
4+
description: 'Integrate your application with the Shopify API using the Client Credentials grant'
5+
---
6+
7+
## πŸš€ Quickstart
8+
9+
Connect to Shopify with Nango using the Client Credentials grant and see data flow in 2 minutes.
10+
11+
<Steps>
12+
<Step title="Create an integration">
13+
In Nango ([free signup](https://app.nango.dev)), go to [Integrations](https://app.nango.dev/dev/integrations) -> _Configure New Integration_ -> _Shopify (Client Credentials)_.
14+
</Step>
15+
<Step title="Connect Shopify">
16+
Go to [Connections](https://app.nango.dev/dev/connections) -> _Add Test Connection_ and enter your store domain, client ID, and client secret. Later, you'll let your app do the same programmatically.
17+
</Step>
18+
<Step title="Call the Shopify API">
19+
Let's make your first request to the Shopify API (fetch a list of customers). Replace the placeholders below with your [secret key](https://app.nango.dev/dev/environment-settings), [integration ID](https://app.nango.dev/dev/integrations), and [connection ID](https://app.nango.dev/dev/connections):
20+
<Tabs>
21+
<Tab title="cURL">
22+
23+
```bash
24+
curl "https://api.nango.dev/proxy/admin/api/2025-01/customers.json?limit=10" \
25+
-H "Authorization: Bearer <NANGO-SECRET-KEY>" \
26+
-H "Provider-Config-Key: <INTEGRATION-ID>" \
27+
-H "Connection-Id: <CONNECTION-ID>"
28+
```
29+
30+
</Tab>
31+
32+
<Tab title="Node">
33+
34+
Install Nango's backend SDK with `npm i @nangohq/node`. Then run:
35+
36+
```typescript
37+
import { Nango } from '@nangohq/node';
38+
39+
const nango = new Nango({ secretKey: '<NANGO-SECRET-KEY>' });
40+
41+
const res = await nango.get({
42+
endpoint: '/admin/api/2025-01/customers.json',
43+
params: {
44+
limit: 10
45+
},
46+
providerConfigKey: '<INTEGRATION-ID>',
47+
connectionId: '<CONNECTION-ID>'
48+
});
49+
50+
console.log(JSON.stringify(res.data, null, 2));
51+
```
52+
</Tab>
53+
54+
</Tabs>
55+
56+
Or fetch credentials dynamically via the [Node SDK](/reference/sdks/node#get-a-connection-with-credentials) or [API](/reference/api/connection/get).
57+
58+
βœ… You're connected! Check the [Logs](https://app.nango.dev/dev/logs) tab in Nango to inspect requests.
59+
</Step>
60+
61+
<Step title="Implement Nango in your app">
62+
Follow our [Auth implementation guide](/implementation-guides/platform/auth/implement-api-auth) to integrate Nango in your app.
63+
64+
To obtain your own production credentials, follow the setup guide linked below.
65+
</Step>
66+
</Steps>
67+
68+
## πŸ“š Shopify (Client Credentials) Integration Guides
69+
70+
Nango maintained guides for common use cases.
71+
72+
- [How do I connect my Shopify store?](/api-integrations/shopify-cc/connect)
73+
Find your Client ID, Client Secret, and store domain to connect your Dev Dashboard app to Nango
74+
75+
Official docs: [Shopify Client Credentials documentation](https://shopify.dev/docs/apps/build/authentication-authorization/client-credentials)
76+
77+
## 🧩 Pre-built syncs & actions for Shopify (Client Credentials)
78+
79+
Enable them in your dashboard. [Extend and customize](/implementation-guides/platform/functions/customize-template) to fit your needs.
80+
81+
import PreBuiltUseCases from "/snippets/generated/shopify-cc/PreBuiltUseCases.mdx"
82+
83+
<PreBuiltUseCases />
84+
85+
---
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
---
2+
title: Shopify (Client Credentials) - How do I connect my store?
3+
sidebarTitle: Shopify (Client Credentials)
4+
---
5+
6+
# Overview
7+
8+
To authenticate with Shopify using Client Credentials, you will need:
9+
1. **Shopify Store Domain** - The subdomain of the store your app is installed in (e.g. `my-store` from `my-store.myshopify.com`)
10+
2. **Client ID** - Your app's client ID from the Dev Dashboard
11+
3. **Client Secret** - Your app's client secret from the Dev Dashboard
12+
13+
<Info>
14+
The client credentials grant is only available for Dev Dashboard apps installed in stores that you own. Public or custom apps must use the authorization code grant.
15+
</Info>
16+
17+
---
18+
19+
### Step 1: Generating your client credentials
20+
21+
1. Go to the [Shopify Dev Dashboard](https://dev.shopify.com/dashboard/) and sign in.
22+
2. Click **Create app**.
23+
24+
<img src="/api-integrations/shopify-cc/create_app.png"/>
25+
26+
3. Give your app a name and click **Create**.
27+
4. From the **Access** tab, select your preferred scopes.
28+
29+
<img src="/api-integrations/shopify-cc/scopes.png"/>
30+
31+
5. Click the name of your application to go to the home page.
32+
6. Click **Install app** and confirm the installation.
33+
34+
<img src="/api-integrations/shopify-cc/install_app.png"/>
35+
36+
7. Go to **Settings**.
37+
8. Copy your **Client ID** and **Client Secret**.
38+
39+
<img src="/api-integrations/shopify-cc/credentials.png"/>
40+
41+
42+
### Step 2: Find your Shopify Store Domain
43+
44+
1. Your **Shopify Domain** is visible in the address bar when viewing your store. For example, in `https://admin.shopify.com/store/6nzh0y-y6`, the domain is `6nzh0y-y6`.
45+
2. Alternatively, click your profile in the top right corner and select **All Stores**.
46+
<img src="/integrations/all/shopify-api-key/profile.png" />
47+
3. From the list, your **Shopify Domain** is the value shown before `myshopify.com`.
48+
49+
50+
### Step 3: Enter credentials in the Connect UI
51+
52+
Once you have your credentials:
53+
1. Open the form where you need to authenticate with Shopify (Client Credentials).
54+
2. Enter your **Shopify Store Domain**, **Client ID**, and **Client Secret** in their respective fields.
55+
3. Submit the form β€” you should now be successfully authenticated.
56+
57+
<img src="/api-integrations/shopworks/form.png" style={{maxWidth: "450px" }}/>
58+
59+
You are now connected to Shopify (Client Credentials).
119 KB
Loading
140 KB
Loading
113 KB
Loading
232 KB
Loading
205 KB
Loading

β€Ždocs/docs.jsonβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -820,6 +820,7 @@
820820
"integrations/all/shipstation-v2",
821821
"api-integrations/shipbob-pat",
822822
"api-integrations/shopify",
823+
"api-integrations/shopify-cc",
823824
"integrations/all/shopify-api-key",
824825
"integrations/all/shopify-partner",
825826
"integrations/all/shopify-scim",
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
## Pre-built tooling
2+
<AccordionGroup>
3+
<Accordion title="βœ… Authorization">
4+
| Tools | Status |
5+
| - | - |
6+
| Pre-built authorization (OAuth) | βœ… |
7+
| Credentials auto-refresh | βœ… |
8+
| Pre-built authorization UI | βœ… |
9+
| Custom authorization UI | βœ… |
10+
| End-user authorization guide | βœ… |
11+
| Expired credentials detection | βœ… |
12+
</Accordion>
13+
<Accordion title="βœ… Read & write data">
14+
| Tools | Status |
15+
| - | - |
16+
| Pre-built integrations | 🚫 (time to contribute: &lt;48h) |
17+
| API unification | βœ… |
18+
| 2-way sync | βœ… |
19+
| Webhooks from Nango on data modifications | βœ… |
20+
| Real-time webhooks from 3rd-party API | 🚫 (time to contribute: &lt;48h) |
21+
| Proxy requests | βœ… |
22+
</Accordion>
23+
<Accordion title="βœ… Observability & data quality">
24+
| Tools | Status |
25+
| - | - |
26+
| HTTP request logging | βœ… |
27+
| End-to-end type safety | βœ… |
28+
| Data runtime validation | βœ… |
29+
| OpenTelemetry export | βœ… |
30+
| Slack alerts on errors | βœ… |
31+
| Integration status API | βœ… |
32+
</Accordion>
33+
<Accordion title="βœ… Customization">
34+
| Tools | Status |
35+
| - | - |
36+
| Create or customize use-cases | βœ… |
37+
| Pre-configured pagination | 🚫 (time to contribute: &lt;48h) |
38+
| Pre-configured rate-limit handling | 🚫 (time to contribute: &lt;48h) |
39+
| Per-customer configurations | βœ… |
40+
</Accordion>
41+
</AccordionGroup>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
_No pre-built syncs or actions available yet._
2+
3+
<Tip>Not seeing the integration you need? [Build your own](/guides/primitives/functions) independently.</Tip>

0 commit comments

Comments
Β (0)