← ClaudeAtlas

ekx-shopifylisted

Shopify Admin API integration — private app tokens, GraphQL Admin queries, inventory and order sync, webhooks with HMAC verification, and API version pinning. Use when syncing products or stock, reading orders or sales figures, handling a Shopify webhook, or reconciling Shopify data against Supabase.
Ekinoxis-evm/claude-skills · ★ 0 · API & Backend · score 60
Install: claude install-skill Ekinoxis-evm/claude-skills
# Shopify The commerce backbone behind our storefronts and store operations. There are bundled `shopify-admin` / `shopify-dev` skills in this installation — those are authoritative for API detail. This file records our integration patterns. --- ## Environment ```bash SHOPIFY_STORE_DOMAIN= # your-store.myshopify.com SHOPIFY_ADMIN_ACCESS_TOKEN= # SECRET shpat_… SHOPIFY_API_VERSION= # e.g. 2025-07 — PIN IT SHOPIFY_CLIENT_ID= SHOPIFY_CLIENT_SECRET= # SECRET SHOPIFY_WEBHOOK_SECRET= # SECRET ``` ⚠️ Both `SHOPIFY_ADMIN_ACCESS_TOKEN` and `SHOPIFY_ADMIN_TOKEN` are in circulation. Standardise on `SHOPIFY_ADMIN_ACCESS_TOKEN`. **Pin the API version.** Shopify deprecates quarterly. An unpinned client silently follows the newest version and breaks on a schedule you do not control. --- ## Admin GraphQL REST Admin is legacy; use GraphQL for everything new. ```ts async function shopify<T>(query: string, variables?: object): Promise<T> { const res = await fetch( `https://${process.env.SHOPIFY_STORE_DOMAIN}/admin/api/${process.env.SHOPIFY_API_VERSION}/graphql.json`, { method: "POST", headers: { "X-Shopify-Access-Token": process.env.SHOPIFY_ADMIN_ACCESS_TOKEN!, "Content-Type": "application/json", }, body: JSON.stringify({ query, variables }), }, ); const json = await res.json(); if (json.errors) throw new Error(JSON.stringify(json.errors)); // userErrors live INSIDE data on mutations —