Skip to main content

Shopify (GraphQL)

This connector captures data from Shopify's GraphQL Admin API into Estuary collections.

It is available for use in the Estuary web application. For local development or open-source workflows, ghcr.io/estuary/source-shopify-native:dev provides the latest version of the connector as a Docker image. You can also follow the link in your browser to see past image versions.

Supported data resources

The following data resources are supported through the Shopify API:

By default, each resource is mapped to an Estuary collection through a separate binding.

Prerequisites

  • Store ID of your Shopify account. This is the prefix of your admin URL. For example, https://{store_id}.myshopify.com/admin

You can authenticate your account either via OAuth or with a Shopify access token.

Access Token Permissions

If authenticating with an access token, ensure the following permissions are granted:

  • read_assigned_fulfillment_orders
  • read_checkouts
  • read_customers
  • read_fulfillments
  • read_inventory
  • read_locales
  • read_locations
  • read_marketing_events
  • read_marketplace_fulfillment_orders
  • read_merchant_managed_fulfillment_orders
  • read_orders
  • read_payment_terms
  • read_products
  • read_publications
  • read_own_subscription_contracts

Bulk Query Operation Limitations

This connector submits and processes the results of bulk query operations to capture data. As of API version 2026-01, Shopify supports up to 5 concurrent bulk query operations. The connector takes advantage of this to run multiple bulk queries in parallel for improved performance.

Configuration

You configure connectors either in the Estuary web app, or by directly editing the catalog specification file. See connectors to learn more about using connectors. The values and specification sample below provide configuration details specific to the Shopify source connector.

Properties

Endpoint

The properties in the table below reflect manual authentication using the CLI. In the Estuary web app, you'll sign in directly and won't need the access token.

PropertyTitleDescriptionTypeRequired/Default
/storeStore IDYour Shopify Store ID. Use the prefix of your admin URL e.g. https://{store_id}.myshopify.com/admin.stringRequired
/start_dateStart dateUTC date and time in the format 2025-01-16T00:00:00Z. Any data before this date will not be replicated.string30 days before the present date
/credentials/access_tokenAccess TokenShopify access token.stringRequired
/credentials/credentials_titleCredentialsName of the credentials setstringRequired
/advanced/window_sizeWindow sizeWindow size for incremental streams in ISO 8601 format. ex: P30D means 30 days, PT6H means 6 hours. Typically left as the default unless more frequent checkpoints are desired.stringP30D

Bindings

PropertyTitleDescriptionTypeRequired/Default
/nameData resourceName of the data resource.stringRequired
/intervalIntervalInterval between data syncsstring

Sample

captures:
${PREFIX}/${CAPTURE_NAME}:
endpoint:
connector:
image: ghcr.io/estuary/source-shopify-native:dev
config:
advanced:
window_size: P30D
credentials:
credentials_title: Private App Credentials
access_token: <secret>
start_date: "2025-01-16T12:00:00Z"
store: <store ID>
bindings:
- resource:
name: products
target: ${PREFIX}/products

Limitations with Custom App Access Tokens

If you authenticate using an access token from a custom app on a Shopify plan below the Grow tier, the following streams will not be discovered:

  • customers
  • fulfillment_orders
  • orders

This is due to Shopify API restrictions for lower-tier plans.