Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Manage Shopify store data including orders, products, variants, customers, inventory, fulfillments, refunds, returns, and transactions via the Admin REST API.
Manage Shopify store data including orders, products, variants, customers, inventory, fulfillments, refunds, returns, and transactions via the Admin REST API.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Full read/write access to Shopify Admin REST API for managing orders, products, customers, inventory, fulfillments, refunds, returns, and transactions.
SHOPIFY_STORE_DOMAIN - Your store's myshopify.com domain (e.g., my-store.myshopify.com) SHOPIFY_ACCESS_TOKEN - Admin API access token from custom app
ScopeAccessread_orders / write_ordersOrders, Fulfillments, Abandoned Checkoutsread_products / write_productsProducts, Variants, Collectionsread_customers / write_customersCustomers, Segmentsread_inventory / write_inventoryInventory Levels, Itemsread_returns / write_returnsReturnsread_all_ordersOrders older than 60 days (requires approval)
All requests require this header: X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN
Go to your Shopify Admin > Settings > Apps and sales channels Click "Develop apps" > "Create an app" Configure Admin API scopes based on what you need Install the app to your store Copy the Admin API access token
Base URL: https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10
List Orders curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Query parameters: ids, limit, since_id, created_at_min, created_at_max, updated_at_min, updated_at_max, processed_at_min, processed_at_max, status (open, closed, cancelled, any), financial_status, fulfillment_status, fields Get Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Order Count curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/count.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Update Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X PUT \ -d '{"order":{"id":{ORDER_ID},"note":"Updated note","tags":"priority,vip"}}' Close Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/close.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X POST Re-open Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/open.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X POST Cancel Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/cancel.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"reason":"customer","email":true,"restock":true}' Cancel reasons: customer, fraud, inventory, declined, other
List Products curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Query parameters: ids, limit, since_id, title, vendor, handle, product_type, collection_id, created_at_min, created_at_max, updated_at_min, updated_at_max, published_at_min, published_at_max, published_status (published, unpublished, any), fields, status (active, archived, draft) Get Product curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Product Count curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/count.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Create Product curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"product":{"title":"Burton Custom Freestyle","body_html":"<strong>Good snowboard!</strong>","vendor":"Burton","product_type":"Snowboard","status":"draft","variants":[{"price":"99.99","sku":"BOARD-001"}]}}' Update Product curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X PUT \ -d '{"product":{"id":{PRODUCT_ID},"title":"Updated Product Title","status":"active"}}' Delete Product curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X DELETE
List Variants for Product curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}/variants.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Variant curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/variants/{VARIANT_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Create Variant curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}/variants.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"variant":{"option1":"Blue","price":"19.99","sku":"BLUE-001","inventory_management":"shopify"}}' Update Variant curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/variants/{VARIANT_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X PUT \ -d '{"variant":{"id":{VARIANT_ID},"price":"24.99","compare_at_price":"29.99"}}' Delete Variant curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products/{PRODUCT_ID}/variants/{VARIANT_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X DELETE
List Customers curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Query parameters: ids, limit, since_id, created_at_min, created_at_max, updated_at_min, updated_at_max, fields Search Customers curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/search.json?query=email:customer@example.com" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Search fields: email, phone, first_name, last_name, company, orders_count, total_spent, country, state Get Customer curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/{CUSTOMER_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Customer Count curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/count.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Create Customer curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"customer":{"first_name":"John","last_name":"Doe","email":"john.doe@example.com","phone":"+15551234567","addresses":[{"address1":"123 Main St","city":"Ottawa","province":"ON","country":"CA","zip":"K1A 0B1"}]}}' Update Customer curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/{CUSTOMER_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X PUT \ -d '{"customer":{"id":{CUSTOMER_ID},"tags":"vip,wholesale","note":"Important customer"}}' Delete Customer curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/{CUSTOMER_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X DELETE Get Customer Orders curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/customers/{CUSTOMER_ID}/orders.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"
List Inventory Levels curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_levels.json?inventory_item_ids={ITEM_ID}" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Query parameters: inventory_item_ids (required), location_ids, limit, updated_at_min Adjust Inventory Level curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_levels/adjust.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"location_id":{LOCATION_ID},"inventory_item_id":{ITEM_ID},"available_adjustment":5}' Set Inventory Level curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_levels/set.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"location_id":{LOCATION_ID},"inventory_item_id":{ITEM_ID},"available":100}' Connect Inventory to Location curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_levels/connect.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"location_id":{LOCATION_ID},"inventory_item_id":{ITEM_ID}}'
List Inventory Items curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_items.json?ids={ITEM_IDS}" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Inventory Item curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_items/{ITEM_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Update Inventory Item curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/inventory_items/{ITEM_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X PUT \ -d '{"inventory_item":{"id":{ITEM_ID},"cost":"25.00","tracked":true}}'
List Locations curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/locations.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Location curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/locations/{LOCATION_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Location Count curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/locations/count.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Inventory Levels for Location curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/locations/{LOCATION_ID}/inventory_levels.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"
List Fulfillments for Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/fulfillments.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Fulfillment curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/fulfillments/{FULFILLMENT_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Fulfillment Count curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/fulfillments/count.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Create Fulfillment curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/fulfillments.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"fulfillment":{"line_items_by_fulfillment_order":[{"fulfillment_order_id":{FULFILLMENT_ORDER_ID}}],"tracking_info":{"number":"1Z999AA10123456784","url":"https://www.ups.com/track?tracknum=1Z999AA10123456784","company":"UPS"}}}' Update Tracking curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/fulfillments/{FULFILLMENT_ID}/update_tracking.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"fulfillment":{"tracking_info":{"number":"1Z999AA10123456784","url":"https://www.ups.com/track?tracknum=1Z999AA10123456784","company":"UPS"},"notify_customer":true}}' Cancel Fulfillment curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/fulfillments/{FULFILLMENT_ID}/cancel.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X POST
List Fulfillment Orders for Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/fulfillment_orders.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Fulfillment Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/fulfillment_orders/{FULFILLMENT_ORDER_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"
List Refunds for Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/refunds.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Refund curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/refunds/{REFUND_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Calculate Refund curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/refunds/calculate.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"refund":{"shipping":{"full_refund":true},"refund_line_items":[{"line_item_id":{LINE_ITEM_ID},"quantity":1,"restock_type":"return"}]}}' Restock types: no_restock, cancel, return, legacy_restock Create Refund curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/refunds.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"refund":{"currency":"USD","notify":true,"note":"Customer returned item","shipping":{"full_refund":true},"refund_line_items":[{"line_item_id":{LINE_ITEM_ID},"quantity":1,"restock_type":"return"}],"transactions":[{"parent_id":{TRANSACTION_ID},"amount":"10.00","kind":"refund","gateway":"shopify_payments"}]}}'
List Returns curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/returns.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Query parameters: limit, status (open, closed, cancelled, requested, in_progress) Get Return curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/returns/{RETURN_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Create Return curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/returns.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"return":{"order_id":{ORDER_ID},"return_line_items":[{"fulfillment_line_item_id":{FULFILLMENT_LINE_ITEM_ID},"quantity":1,"return_reason":"WRONG_ITEM"}]}}' Return reasons: UNKNOWN, SIZE_TOO_SMALL, SIZE_TOO_LARGE, UNWANTED, NOT_AS_DESCRIBED, WRONG_ITEM, DEFECTIVE, STYLE, COLOR, OTHER
List Transactions for Order curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/transactions.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Transaction curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/transactions/{TRANSACTION_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Transaction Count curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/transactions/count.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Create Transaction (Capture) curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/orders/{ORDER_ID}/transactions.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"transaction":{"kind":"capture","amount":"10.00","parent_id":{AUTHORIZATION_ID}}}' Transaction kinds: authorization, capture, sale, void, refund
List Custom Collections curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Custom Collection curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections/{COLLECTION_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Create Custom Collection curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"custom_collection":{"title":"Summer Collection","body_html":"<p>Summer products</p>"}}' Update Custom Collection curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections/{COLLECTION_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X PUT \ -d '{"custom_collection":{"id":{COLLECTION_ID},"title":"Updated Collection"}}' Delete Custom Collection curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/custom_collections/{COLLECTION_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X DELETE List Smart Collections curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/smart_collections.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Get Smart Collection curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/smart_collections/{COLLECTION_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Create Smart Collection curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/smart_collections.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"smart_collection":{"title":"Sale Items","rules":[{"column":"compare_at_price","relation":"greater_than","condition":"0"}]}}' Rule columns: title, type, vendor, variant_price, tag, compare_at_price, weight, inventory_stock, variant_compare_at_price, variant_weight, variant_inventory, variant_title Rule relations: equals, not_equals, greater_than, less_than, starts_with, ends_with, contains, not_contains
List Collects curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/collects.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Query parameters: product_id, collection_id, limit, since_id, fields Create Collect curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/collects.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"collect":{"product_id":{PRODUCT_ID},"collection_id":{COLLECTION_ID}}}' Delete Collect curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/collects/{COLLECT_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X DELETE
List Abandoned Checkouts curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/checkouts.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Query parameters: limit, since_id, created_at_min, created_at_max, updated_at_min, updated_at_max, status (open, closed) Get Abandoned Checkout Count curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/checkouts/count.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"
FieldValuesfinancial_statuspending, authorized, partially_paid, paid, partially_refunded, refunded, voidedfulfillment_statusnull (unfulfilled), partial, fulfilled, restocked
StatusDescriptionactiveAvailable for salearchivedNo longer available, hidden from admin listsdraftNot ready for sale
StatusDescriptionrequestedReturn requested by customerin_progressReturn being processedopenReturn accepted, awaiting itemsclosedReturn completedcancelledReturn cancelled
Shopify uses cursor-based pagination via the Link header.
# First request curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products.json?limit=50" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -i Response includes Link header: Link: <https://store.myshopify.com/admin/api/2024-10/products.json?page_info=abc123&limit=50>; rel="next" # Next page curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/products.json?page_info=abc123&limit=50" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" Note: When using page_info, you cannot use other query parameters except limit and fields.
Shopify uses a leaky bucket algorithm: Bucket size: 40 requests Leak rate: 2 requests/second Restoration: ~20 seconds for full bucket Response headers: X-Shopify-Shop-Api-Call-Limit: Current usage (e.g., 32/40) Retry-After: Seconds to wait (on 429 response)
Check X-Shopify-Shop-Api-Call-Limit header If near limit, add delays between requests On 429 response, wait for Retry-After seconds Use bulk operations for large data sets
curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/webhooks.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN"
curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/webhooks.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -X POST \ -d '{"webhook":{"topic":"orders/create","address":"https://example.com/webhooks/orders","format":"json"}}' Common topics: orders/create, orders/updated, orders/fulfilled, orders/cancelled, products/create, products/update, products/delete, customers/create, customers/update, inventory_levels/update, refunds/create
curl "https://$SHOPIFY_STORE_DOMAIN/admin/api/2024-10/webhooks/{WEBHOOK_ID}.json" \ -H "X-Shopify-Access-Token: $SHOPIFY_ACCESS_TOKEN" \ -X DELETE
Initial release with full Admin REST API coverage Orders, Products, Variants, Customers Inventory management (levels, items, locations) Fulfillments and fulfillment orders Refunds, Returns, Transactions Collections (custom, smart) and collects Abandoned checkouts Webhooks management Status reference tables Pagination and rate limiting documentation
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.