# Shopify integrations

Work with the Shopify GraphQL Admin API, webhooks and bulk operations in Python.

## Get started

Connect to the Shopify GraphQL Admin API from Python services - queries, mutations and pagination, with rate limits handled.

[GraphQL Admin API](https://zato.io/docs/dev/shopify/graphql-admin-api-python.html)

service.py

```
# Call the Shopify GraphQL Admin API
conn = self.out.graphql['Shopify']
result = conn.execute(mutation, params)

product = result['productSet']['product']
product['title']
'Zato Hoodie'

result['productSet']['userErrors']
[]
```

## Working with the API

[GraphQL Admin API Queries, mutations and pagination against the Admin API from Python.](https://zato.io/docs/dev/shopify/graphql-admin-api-python.html) [Products and variants Read and update products, variants and inventory levels.](https://zato.io/docs/dev/shopify/products-and-variants.html) [Bulk operations Export and import large data sets with Shopify bulk operations.](https://zato.io/docs/dev/shopify/bulk-operations.html)

## Events and reliability

[Webhooks Receive Shopify webhooks and route each event to a service.](https://zato.io/docs/dev/shopify/webhooks-python.html) [Rate limits and backoff Stay within Shopify's cost-based rate limits with backoff strategies.](https://zato.io/docs/dev/shopify/rate-limits-and-backoff.html) [Error handling Handle GraphQL errors and partial failures in Admin API calls.](https://zato.io/docs/dev/shopify/graphql-error-handling.html)

## Scenarios

[ERP inventory sync Keep Shopify inventory in sync with an ERP, end to end.](https://zato.io/docs/dev/shopify/erp-inventory-sync.html)
