Shopify connector — required scopes
What each Shopify Admin API scope unlocks during a migration to Insites, and which scopes to skip.
Shopify uses Custom Apps with per-resource Admin API scopes. The Insites migration only reads — Studio never writes back. This page lists every scope Studio asks for and what would be silently lost from your migration if it isn't granted.
Generate the token
Open Shopify's custom-app developer area
In Shopify admin, go to Settings → Apps and sales channels → Develop apps. Enable custom-app development if it isn't already on for the store.
Create the app
Click Create an app, name it
Insites Studio, then open the Configuration tab.Tick the scopes
Under Admin API access scopes, tick the scopes from the next two tables. Leave the Storefront API scopes alone — Studio doesn't use them.
Install and copy the token
Save, then click Install app. Copy the Admin API access token (starts with
shpat_) and paste it into the connector form along with your store domain (e.g.your-store.myshopify.com).
Required (always tick these)
The connector cannot complete without these. The connection test will fail explicitly if any are missing.
| Scope | Module | Why we need it |
|---|---|---|
read_products | Ecommerce | Products, variants, options, and metafields. The core of an ecommerce migration. Without this scope the migrated store has no catalog. |
read_orders | Ecommerce | Past orders with line items and totals. Insites Ecommerce uses this for order history, refunds, and reporting continuity. |
read_customers | CRM | Customer records become CRM contacts on the new instance. Without it, customer history is lost on day one of the new site. |
read_content | CMS | Pages, blog articles, and navigation menus. Storefront content beyond products lives here. |
read_files | Assets | Files uploaded to the Shopify Files area (PDFs, look books, downloadable assets) — separate from product images. Pulled through the asset pipeline. |
Recommended (tick unless you know the store doesn't use it)
The connector silently skips these blocks if the scope isn't granted, so a content-light store still works. But anything missing here is data your migrated store will be missing too — usually with no obvious sign until the first refund, restock, or campaign report.
| Scope | Module | Why we need it |
|---|---|---|
read_inventory | Ecommerce | Stock levels per location. Without it, the migrated store starts with unknown inventory and has to be re-seeded by hand. |
read_locations | Ecommerce | Store locations and fulfilment points. Multi-location stores need this; single-location stores can skip. |
read_discounts | Ecommerce | Active and historical discount codes. Without it, promo codes printed on packaging or flyers stop working post-migration. |
read_price_rules | Ecommerce | Automatic discount conditions (BOGO, tiered pricing, etc.). Required if discounts are anything more than flat codes. |
read_themes | CMS layout | Theme files (Liquid templates, sections, snippets, settings). Lets us keep the design intent rather than re-skinning blind. |
read_script_tags | CMS layout | Third-party scripts injected by the storefront (analytics, chat, A/B test tools). Without it the migrated site silently loses these tags. |
read_shipping | Ecommerce | Shipping zones and rates. Required to recreate the same checkout experience without rebuilding the rate table from memory. |
read_fulfillments | Ecommerce | Fulfilment status per order. Needed for in-flight orders during the migration window. |
read_draft_orders | Ecommerce | Draft orders (sales-rep-built carts, B2B quotes). Skip if you don't use draft orders. |
read_marketing_events | CRM | Email campaigns and ad campaign metadata. Useful for marketing continuity reports; skip if marketing lives elsewhere. |
Skip these
These scopes don't unlock anything useful for a migration. Leaving them off keeps the token's blast radius small if it's ever leaked.
| Scope | Why we skip |
|---|---|
write_* | Studio only ever reads from Shopify during a migration. Never grant any write scope. |
read_all_orders | Defaults to last 60 days are fine for most migrations. Only request this scope (which Shopify gates behind a Plus app review) if you specifically need orders older than 60 days. |
read_reports | Shopify-generated reports — not data the new site needs. Recreate reporting natively in Insites. |
read_users | Shopify staff accounts. Insites has its own staff/role model; don't mix the two. |
Token storage (alpha)
Tokens are kept in your browser's localStorage so a refresh or shared link doesn't lose the migration session. They are sent to the Insites server only at the moment of a connection test or import run, and are never logged. Before GA we'll switch to real OAuth so tokens never touch your browser at all.
Rotate the token after the migration completes — see other connector guides.