Integrations/Shopify

Shopify in Python

Call the Shopify GraphQL Admin API from Python services, receive webhooks with HMAC verification and deduplication, run bulk operations on a schedule, and sync products and inventory with your ERP.

GraphQL
Admin API client
HMAC
webhook verification
24/7
scheduled syncs
7
guides and docs
shopify_service.py

Both directions, one platform

Call the Admin API from Python or receive Shopify webhooks through a REST channel, all with the same services.

Everything for Shopify integrations

The Admin API, webhooks and scheduled syncs, with the reliability primitives Shopify leaves to you.

GraphQL Admin API
Call Shopify's GraphQL Admin API with self.out.graphql - queries, mutations and variables, with the access token attached to every request for you.
Webhook channels
Receive orders/create, products/update and any other topic through REST channels, with HMAC verification and cache-based deduplication.
Rate-limit aware
Back off on THROTTLED errors and stay under the cost-based leaky bucket without hand-rolling a limiter in every service.
Scheduled syncs
Run bulk operations, nightly reconciliation and catalog imports from the built-in scheduler - no cron jobs or external workers.
Security definitions
Keep the X-Shopify-Access-Token header in an API-key security definition, never in code.
Configuration as YAML
Define Shopify connections declaratively with enmasse and deploy them across environments.

Learn by building

Step-by-step guides for building API integrations in Python.

Shopify integration guides

Each guide covers one part of a Shopify integration, with complete Python services you can copy and run.

Frequently asked questions

The GraphQL Admin API - Shopify marked the REST Admin API legacy in October 2024 and new public apps have been GraphQL-only since April 2025. The Admin API guide shows how to call it from Python with self.out.graphql.

Create a custom app in your Shopify admin, take its Admin API access token and store it in an API-key security definition that sends the X-Shopify-Access-Token header. The token never appears in your code - the connection attaches it to every request.

No. A Zato integration is a standalone backend that talks to Shopify with a custom app's access token - there is no App Bridge, no session tokens and no app-store review involved.

Shopify delivers webhooks at-least-once, so duplicates are guaranteed. Deduplicate on the X-Shopify-Event-Id header with the built-in cache, as shown in the webhooks guide.

Shopify's GraphQL API returns HTTP 200 OK even for many failures, with the details nested in errors and userErrors fields. The error handling guide shows the pattern that catches both.

The Admin API uses a cost-based leaky bucket with a 1,000-point single-query ceiling. Keep queries small, read the cost feedback and back off on THROTTLED - the rate limits guide has a ready-to-use retry pattern.

Use bulk operations - Shopify runs the query on its side and hands you a JSONL file. A scheduler job polls for completion, remembering that only one bulk operation runs at a time per shop.

Make the ERP the source of truth, publish quantities to Shopify idempotently and reconcile nightly with the scheduler. The ERP sync guide covers the architecture, SKU-matching pitfalls and the 50,000 inventory-quantities mutation limit.

Yes - define connections and security definitions in YAML with enmasse and import them per environment, with secrets read from environment variables.

Ready to build Shopify integrations?

Get started with Zato and connect Shopify to your enterprise systems in minutes.

Open source In Python