Shopify producer
This connector backfills Shopify products, customers, orders, and refunds. It
gets product, cart, customer, order, and refund events at
POST /webhooks/shopify.
Config
| Variable | Required | Default |
|---|---|---|
SHOPIFY_SHOP_DOMAIN | yes | none |
SHOPIFY_CLIENT_ID | yes | none |
SHOPIFY_CLIENT_SECRET | yes | none |
SHOPIFY_WEBHOOK_SECRET | yes | none |
Use a Shopify app owned by the merchant. The app needs read_products,
read_customers, and read_orders. Without read_all_orders, Shopify returns
only the last 60 days of orders and their refunds. The webhook secret is not the
app client secret.
Setup
Create a Dev Dashboard app in the same Shopify organization as the store. Add the scopes above, install the app, and use its client ID and client secret.
Request protected customer data access for name, email, phone, and address. The config check fails without it.
Create these webhooks in Shopify Admin:
products/createproducts/updateproducts/deletecarts/createcarts/updatecustomers/createcustomers/disablecustomers/enablecustomers/updatecustomers/deletecustomers/purchasing_summarycustomers_email_marketing_consent/updatecustomers_marketing_consent/updatecustomer.tags_addedcustomer.tags_removedorders/createorders/updatedorders/deleterefunds/create
Point them to /webhooks/shopify and use the webhook signing value as
SHOPIFY_WEBHOOK_SECRET. Pick webhook API version 2026-07, the one the
connector uses.
Data
- Customers, orders, and refunds hold protected customer data such as names, emails, phones, addresses, and notes. Treat these tables as customer data.
- Current order totals include refunds.
- Order webhooks are mapped without refetching. If Shopify truncates line items on a very large order, the webhook row can miss lines.
- A refund row does not mean the payment completed. Check its transaction status.
- Refunds use
processedAtfor versions. A later settlement can be missed if Shopify keeps the same time. - After backfill, updates depend on webhooks. Missed webhook deliveries are not recovered yet.
Demo data
pnpm demo --size 128MiB writes made-up Shopify data without Shopify
credentials. See the Connector Kit README for the flags and the variables it
needs.
Each customer has orders, refunds, and sometimes an open cart. Orders and carts use a fixed catalog of 10 products, which doesn't grow with the size.
Local development
cd connectors/producer-shopify
pnpm sandbox
A hosted run loads connector config from AIRFOIL_CONFIG_PATH. It also needs
the Wings and PostgreSQL variables from the Connector Kit README.
cd connectors/producer-shopify
pnpm start