Sapilon becomes publicly available on 1 December 2026: 42 days to go. The core goes open source the same day →

Shopify integration

In short

Read and update orders, products and customers in your store. Connect it on the Integrations page; your app then calls Shopify through Sapilon without ever holding a Shopify credential.

Lets your app query and change a Shopify store’s orders, products, customers and inventory through the Admin GraphQL API, and read them through the REST API, with a custom app’s Admin API access token.

The custom app’s Admin API scopes decide what the app can reach.

Connecting

On the Integrations page choose Connect on Shopify and fill in:

  • Store name — The part before .myshopify.com (Shopify admin → Settings → Domains).
  • Admin API access token — Shopify admin → Settings → Apps → Develop apps → your custom app → API credentials → Admin API access token. Grant read_orders, read_products, read_customers (and write_ where the app changes them).

Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.

What your app can do

Only these requests are available; anything else is refused.

  • POST /graphql.json
  • GET /shop.json
  • GET /orders.json
  • GET /orders/*
  • GET /products.json
  • GET /products/*
  • GET /customers.json
  • GET /customers/*

How the agent uses it

Use integrations.request('shopify', …); paths are relative to https://<store>.myshopify.com/admin/api/2026-07.

  • POST /graphql.json — the Admin GraphQL API, for reads and every change. Example: { method: 'POST', path: '/graphql.json', body: { query: '{ orders(first: 10, query: "financial_status:paid") { nodes { id name totalPriceSet { shopMoney { amount currencyCode } } } } }' } }. Update: body: { query: 'mutation($input: ProductInput!) { productUpdate(input: $input) { product { id } userErrors { message } } }', variables: { input: { id: 'gid://shopify/Product/1', title: 'New' } } }.
  • GET /shop.json — the store.
  • GET /orders.json, GET /orders/{id}.json — Example: { method: 'GET', path: '/orders.json', query: { status: 'any', limit: '50' } }.
  • GET /products.json, GET /products/{id}.json, GET /customers.json, GET /customers/{id}.json — REST reads.

Check userErrors in GraphQL answers. Deleting through REST is not allowed.

More from Shopify: https://shopify.dev/docs/api/admin-graphql

Last updated .

Was this page helpful?