Skip to main content

Shopify Source

Connect Shopify as a source to sync commerce data from a single Shopify store into your warehouse.

For an overview of capabilities and use cases, see the Shopify connector page. To run pipelines natively inside Snowflake, see Snowflake Native ETL.

Prerequisites​

Before you begin, ensure you have:

  • A Shopify store and admin access sufficient to create and manage custom apps
  • Your store's *.myshopify.com URL (the permanent store URL, not a custom storefront domain)
  • A Shopify custom app Admin API access token
  • The token's scopes include: read_products, read_orders, read_all_orders, read_customers

Supported Objects​

ObjectSync ModeDescription
ProductsIncrementalProduct catalog records.
OrdersIncrementalOrder records, including order-level commerce data.
CustomersIncrementalCustomer records.

Not Yet Supported​

The connector does not yet sync:

  • Multiple Shopify stores per source (one store per source)
  • The Shopify Partner API
  • Inventory
  • Collections
  • Discounts
  • Fulfillments as a separate object
  • Metafields
  • Locations
  • Transactions
  • Refunds as a separate object
  • Gift cards
  • Draft orders

Contact us with the objects you need -- expansion is prioritized by customer demand.

Incremental Sync​

Products, Orders, and Customers all sync incrementally. On each run, the connector fetches only records that have changed since the last sync.

  • Start Date controls the initial backfill window. Leave it blank to sync all available history, or set it to the earliest date you want to load.
  • Order Status Filter applies only to Orders. Products and Customers are unaffected by this setting.
  • Shopify returns only the last 60 days of order history by default. Syncing older orders requires the read_all_orders scope on your access token (see Authentication).

Authentication​

Supaflow authenticates with a Shopify custom app Admin API access token.

Create a Custom App and Generate a Token​

  1. In your Shopify admin, go to Settings > Apps and sales channels > Develop apps
  2. Click Create an app and give it a descriptive name (for example, "Supaflow")
  3. Open Configuration > Admin API integration and grant the required scopes:
    • read_products
    • read_orders
    • read_all_orders
    • read_customers
  4. Save the configuration, then go to API credentials and click Install app
  5. Copy the Admin API access token (starts with shpat_) -- Shopify will show it only once

The connector is read-only. Do not grant write scopes.

read_all_orders requires approval from Shopify

read_all_orders is a protected Shopify scope. It is required to sync orders older than roughly 60 days, and Shopify requires additional approval before you can add it to your app. See Shopify's API access scopes documentation for the current approval process.

Shop URL Format​

Use the store's permanent *.myshopify.com URL as the Shop URL. For example:

  • Correct: https://my-store.myshopify.com
  • Not accepted: a custom storefront domain such as https://shop.example.com
  • Not accepted: a Shopify admin URL such as https://admin.shopify.com/store/my-store

The Admin API only responds on the *.myshopify.com hostname. Custom primary domains and admin URLs will fail the connection test.

Configuration​

In Supaflow, create a new Shopify source with these settings:

Authentication​

Shop URL*

Your store's permanent *.myshopify.com URL. Custom domains and admin.shopify.com/store/... URLs are not accepted.
Example: https://my-store.myshopify.com

Admin API Access Token*

The Admin API access token from the Shopify custom app you installed. Starts with shpat_.
Stored encrypted


Sync Settings (Optional)​

Start Date

Earliest date to sync records from on the initial sync. Leave blank to sync all available history.
Example: 2024-01-01
Default: empty (all history)

Order Status Filter

Which orders to sync, by order status. Applies to Orders only.
Options:

  • any - All orders regardless of status
  • open - Open orders only
  • closed - Closed orders only
  • cancelled - Cancelled orders only

Default: any


Advanced Settings (Optional)​

Schema Refresh Interval

Interval in minutes for schema metadata refresh.
Options:

  • 0 - Refresh schema before every pipeline execution
  • -1 - Disable automatic schema refresh (use for static schemas)
  • Positive value - Refresh interval in minutes (e.g., 60 = hourly, 1440 = daily)

Default: 0

Items Per Page

Records fetched per Shopify API page. Smaller values produce more API calls with smaller payloads; larger values reduce round-trips at the cost of peak memory per batch.
Range: 1 to 250
Default: 250


Test & Save​

After configuring the Shop URL and Admin API access token, click Test & Save to verify your credentials and save the source.

Rate Limiting​

Shopify applies API rate limits to the Admin API. Supaflow handles transient rate limiting automatically with retry and backoff, but very large syncs may take longer or may need off-peak scheduling and a narrower Start Date to stay comfortably inside your plan's limits. See Shopify's API rate limits for current thresholds and plan-specific details.

Troubleshooting​

Invalid Shop URL​

Problem:

  • "Invalid Shop URL" or connection test fails immediately on save

Solutions:

  1. Use the permanent *.myshopify.com URL (for example, https://my-store.myshopify.com). You can find it in Shopify admin under Settings > Domains, listed as the store's default .myshopify.com URL.
  2. Do not paste a custom storefront domain (e.g., https://shop.example.com). The Admin API only responds on *.myshopify.com.
  3. Do not paste an admin.shopify.com/store/... URL. That is the admin UI, not the store's API hostname.

Authentication failed​

Problem:

  • "Authentication failed" or an authentication error on Test & Save

Solutions:

  1. Confirm the token starts with shpat_ and was copied from your custom app under Settings > Apps and sales channels > Develop apps > API credentials. Storefront API tokens, API keys, and API secret keys are not valid here.
  2. If the custom app was uninstalled or its token rotated, reinstall the app and generate a new token.
  3. Confirm the token was issued from the same store whose *.myshopify.com URL is in the Shop URL field.

Missing scopes​

Problem:

  • Test & Save fails with a missing-scope error naming one or more of read_products, read_orders, read_all_orders, or read_customers

Solutions:

  1. Open the custom app in Shopify and verify all four required scopes are granted: read_products, read_orders, read_all_orders, read_customers. Supaflow validates scopes at Test & Save, so missing scopes block the source from saving rather than producing empty results later.
  2. If read_all_orders is the missing scope, you must request access from Shopify before it becomes available on the custom app. See the note under Authentication.
  3. If you edit scopes after the app is already installed, Shopify requires you to re-approve the app and will issue a new access token. Paste the new token into Supaflow and run Test & Save again.

Orders missing beyond recent history​

Problem:

  • Orders older than roughly 60 days are missing from the destination, even though they exist in Shopify

Solutions:

  1. Shopify limits access to the last 60 days of orders unless your app has the read_all_orders scope. Add the scope to the custom app, re-approve it, and paste the new token into Supaflow.
  2. After updating the scope and token, re-run the pipeline so the initial backfill can reach older orders.
  3. Confirm Start Date is not unintentionally restricting the window. Clearing it syncs all available history (subject to Shopify's scope rules).

Rate limit exhausted​

Problem:

  • The sync is slow or the job log shows rate-limit responses from Shopify

Solutions:

  1. Supaflow retries rate-limited requests automatically. Transient throttling should self-recover on the next attempt.
  2. If syncs are consistently hitting limits, schedule them during off-peak hours or narrow the initial window using Start Date.
  3. If other tools are also hitting the same store's Admin API, their traffic counts against the same rate limit. Coordinate schedules across tools if needed.
  4. See Shopify's API rate limits for current thresholds and plan-specific details.

Need a Shopify object that is not listed​

Problem:

  • You need inventory, fulfillments, transactions, refunds, metafields, or another resource that does not appear in the schema

Solutions:

  1. The current connector syncs only Products, Orders, and Customers. See Not Yet Supported for the full list of resources that are not available today.
  2. Contact support with the object names you need -- expansion is prioritized by customer demand.


Support​

Need help? Contact us at support@supa-flow.io