Shopify
Access your Shopify store data — products, orders, customers, inventory, analytics, payments, marketing, and more — all through natural language in Claude Code.
Overview
The Shopify integration connects your Shopify store directly to Claude Code through Presso. You can query products, orders, customers, inventory levels, payment data, marketing activities, and much more using natural language -- no need to navigate the Shopify admin dashboard or write API calls manually.
Presso provides over 25 dedicated tools for Shopify, covering everything from basic product lookups to advanced ShopifyQL analytics and custom GraphQL queries. Whether you need a quick stock check or a full sales trend analysis, you can get answers in seconds.
Setup
Prerequisites
- A Shopify store with admin access
- A Presso account connected to Claude Code (see MCP Connection)
Connecting your store
- Sign in to Presso and navigate to the Integrations page.
- Click Connect next to Shopify.
- You will be redirected to Shopify's OAuth authorization screen. Select the store you want to connect, review the requested permissions, and click Install app.
- Once authorized, you will be redirected back to Presso. Your Shopify store is now connected.
- In Claude Code, verify the connection by asking:
Show me my Shopify store info.
Claude Code will call shopify_get_shop_info and display your store name, currency, domain, and plan details.
Available tools
Presso exposes the following Shopify tools, organized by category.
Products
| Tool | Description |
|---|---|
shopify_list_products | Browse all products with optional search, sorting, and pagination |
shopify_get_product | Get full details for a single product including variants, images, and inventory |
Example queries:
Show me all products with the tag "summer-sale".
Get the full details for product ID 123456789, including all variants.
List products from the vendor "Nike", sorted by title.
Orders
| Tool | Description |
|---|---|
shopify_list_orders | Browse orders with filters for status, financial status, and fulfillment status |
shopify_get_order | Get full order details including line items, customer info, and shipping |
Available order filters:
| Filter | Options |
|---|---|
status | open, closed, cancelled, any |
financialStatus | paid, pending, refunded, partially_refunded, any |
fulfillmentStatus | shipped, partial, unshipped, any |
Example queries:
Show me all unfulfilled orders from this week.
List all refunded orders from the last 30 days.
Get the details of order #1042, including shipping address and line items.
Customers
| Tool | Description |
|---|---|
shopify_list_customers | Browse customers with search, sorting by name/spend/date |
shopify_get_customer | Get full customer profile including order history and addresses |
Example queries:
Show me the top 10 customers by total spend.
Find customers with email addresses from "example.com".
Get the full profile and order history for customer ID 111222333.
Collections
| Tool | Description |
|---|---|
shopify_list_collections | Browse all collections (both smart and manual) |
Example queries:
List all collections in my store.
Search for collections containing "winter".
Inventory
| Tool | Description |
|---|---|
shopify_list_inventory_items | Check stock levels across all locations |
Example queries:
Show me inventory levels for all products.
Which products are low in stock or out of stock?
Shop info and alerts
| Tool | Description |
|---|---|
shopify_get_shop_info | Get store name, currency, domain, plan, and general settings |
shopify_get_shop_alerts | View active shop alerts and notifications |
Example queries:
What's my store's primary currency and domain?
Are there any active alerts or notifications for my store?
Discounts
| Tool | Description |
|---|---|
shopify_list_discounts | List all discount codes and automatic discounts |
Example queries:
Show me all active discount codes.
List discounts that are currently running.
Fulfillment
| Tool | Description |
|---|---|
shopify_list_fulfillment_orders | List fulfillment orders by status |
Available statuses: open, in_progress, cancelled, incomplete, closed
Example queries:
Show me all open fulfillment orders.
How many fulfillment orders are currently in progress?
Abandoned checkouts
| Tool | Description |
|---|---|
shopify_list_abandoned_checkouts | List checkouts that customers started but did not complete |
Example queries:
Show me all abandoned checkouts from the past week.
How many abandoned checkouts do we have, and what's the total value?
Draft orders
| Tool | Description |
|---|---|
shopify_list_draft_orders | List draft orders that have not been finalized |
Example queries:
Show me all open draft orders.
Markets
| Tool | Description |
|---|---|
shopify_list_markets | List configured international markets |
Example queries:
What markets is my store selling to?
Returns and refunds
| Tool | Description |
|---|---|
shopify_list_returns | List returns with line item details (defaults to open/requested) |
shopify_get_refund | Get detailed refund information by refund ID |
Example queries:
Show me all open return requests.
Get the details of refund gid://shopify/Refund/456.
Fraud detection
| Tool | Description |
|---|---|
shopify_list_order_risks | List orders flagged with fraud risk assessments |
Example queries:
Are there any high-risk orders I should review?
Show me orders flagged for potential fraud.
Payments
| Tool | Description |
|---|---|
shopify_get_payments_account | Get Shopify Payments account info, balance, and recent payouts |
shopify_list_balance_transactions | List balance transactions |
shopify_list_tender_transactions | List tender transactions (payment method breakdown) |
Example queries:
What's my current Shopify Payments balance?
Show me the last 10 payouts.
Break down recent transactions by payment method.
Customer segments
| Tool | Description |
|---|---|
shopify_list_segments | List customer segments |
Example queries:
What customer segments have been created in my store?
Marketing
| Tool | Description |
|---|---|
shopify_list_marketing_activities | List marketing activities and campaigns |
Example queries:
Show me all active marketing campaigns.
What marketing activities have run this month?
Analytics (ShopifyQL)
These tools use ShopifyQL for accurate, server-side aggregated analytics. They all require a date range and support grouping by time period.
| Tool | Description |
|---|---|
shopify_sales_analytics | Revenue, orders, AOV, discounts, returns, shipping, taxes |
shopify_product_analytics | Sales by product, quantity sold, product performance |
shopify_order_analytics | Order count trends, AOV, total and net sales |
shopify_customer_analytics | Total, new, and returning customer metrics |
shopify_session_analytics | Sessions, unique visitors, conversion rate |
Parameters:
| Parameter | Required | Description |
|---|---|---|
startDate | Yes | Start date in YYYY-MM-DD format |
endDate | Yes | End date in YYYY-MM-DD format |
groupBy | No | day, week, or month (default varies by tool) |
Example queries:
Show me total sales revenue for January 2026, grouped by week.
What's the trend in new vs. returning customers over the last 90 days?
Compare product performance for Q4 2025 -- which products sold the most?
What's my store's conversion rate over the past 30 days?
Show me daily order trends for the last two weeks.
Custom GraphQL queries
| Tool | Description |
|---|---|
shopify_get_custom_report | Execute any custom GraphQL query against the Shopify Admin API |
For advanced use cases not covered by the built-in tools, you can run arbitrary GraphQL queries. This is useful for fetching data with specific field combinations, custom filters, or accessing API features not yet wrapped in dedicated tools.
Parameters:
| Parameter | Required | Description |
|---|---|---|
query | Yes | A valid GraphQL query string |
variables | No | A JSON object of GraphQL variables |
Example -- fetching products with variant SKUs and prices:
query($first: Int!) {
products(first: $first) {
edges {
node {
id
title
variants(first: 5) {
edges {
node {
sku
price
}
}
}
}
}
}
}
With variables: { "first": 10 }
Example -- fetching orders created after a specific date:
query($query: String!) {
orders(first: 50, query: $query) {
edges {
node {
id
name
totalPriceSet {
shopMoney {
amount
}
}
}
}
}
}
With variables: { "query": "created_at:>=2026-01-01" }
For the full GraphQL schema reference, see the Shopify Admin API documentation.
GID format
Shopify uses Global IDs (GIDs) in GraphQL format to identify resources. When calling any get tool that requires an ID, use the full GID string.
| Resource | GID format | Example |
|---|---|---|
| Product | gid://shopify/Product/{id} | gid://shopify/Product/123456789 |
| Order | gid://shopify/Order/{id} | gid://shopify/Order/987654321 |
| Customer | gid://shopify/Customer/{id} | gid://shopify/Customer/111222333 |
| Collection | gid://shopify/Collection/{id} | gid://shopify/Collection/444555666 |
| Refund | gid://shopify/Refund/{id} | gid://shopify/Refund/777888999 |
In practice, when you ask Claude Code something like "Get details for product 123456789," it will automatically construct the correct GID. You can also provide the full GID directly if you prefer.
Query syntax and filtering
Many list tools accept a query parameter that supports Shopify's search syntax for filtering results server-side.
Product filters:
product_type:Shoes
vendor:Nike
tag:on-sale
title:*hoodie*
Order filters:
financial_status:refunded
fulfillment_status:unshipped
created_at:>2026-01-01
Customer filters:
email:*@example.com
accepts_marketing:true
You can combine filters in a single query string. For full search syntax details, see the Shopify search syntax documentation.
Sorting
List tools support sorting through two parameters:
| Parameter | Description |
|---|---|
sortKey | The field to sort by. Options vary per resource (e.g., TITLE, CREATED_AT, UPDATED_AT, TOTAL_SPENT) |
reverse | Set to true for descending order, false for ascending |
Example:
Show me customers sorted by total spend, highest first.
Pagination
Shopify list tools use cursor-based pagination. Here is how it works:
- First request -- Call a list tool with a
limit(default is 10). - Check for more pages -- The response includes
pageInfowithhasNextPageand acursorvalue. - Next page -- Call the same tool again, passing the
cursorfrom the previous response. - Repeat until
hasNextPageisfalse.
In most cases, Claude Code handles pagination automatically when you ask for "all" of something. For very large datasets, you may want to specify limits or ask for specific pages.
Use case examples
Daily store health check
Give me a daily store health check: today's order count, revenue,
any unfulfilled orders, low-stock items, and active alerts.
Weekly sales report
Generate a weekly sales report for the past 4 weeks. Include total revenue,
order count, average order value, and top 5 products by revenue.
Group the data by week.
Customer analysis
Show me my top 20 customers by total spend. For each customer,
include their order count and when they last ordered.
Abandoned cart recovery
List all abandoned checkouts from the past 7 days.
Summarize the total value and most commonly abandoned products.
Fraud review
Show me all high-risk orders. For each one, give me the order details
and the specific risk indicators.
Inventory planning
Which products are running low on stock? Show me items with fewer
than 10 units available across all locations.
Cross-channel comparison
Compare my Shopify sales data with Google Ads and Meta Ads performance
for the past month. Which ad channel is driving the most revenue?
Limitations and notes
- Read-only access -- Presso provides read-only access to your Shopify data. You cannot create, update, or delete resources (products, orders, etc.) through Presso.
- Rate limits -- Shopify enforces API rate limits. Presso handles these gracefully, but very large bulk queries may take longer to complete.
- Data freshness -- Data is fetched in real time from the Shopify Admin API. There is no caching layer, so you always get the latest information.
- Single store -- Each Presso connection is linked to one Shopify store. If you manage multiple stores, you will need to connect each one separately.
- Analytics date ranges -- ShopifyQL analytics tools require explicit start and end dates. Claude Code will typically infer reasonable defaults when you ask about "last month" or "this quarter," but you can always specify exact dates for precision.
- Custom GraphQL -- When using
shopify_get_custom_report, you are responsible for writing valid GraphQL queries. Invalid queries will return error messages from the Shopify API.