Integrations / Shopify
Shopify
Shopify store (Admin REST API 2026-10): read products, orders, customers and inventory levels; create and update products.
10 actions
API key
8 read2 write
Calls myshopify.com
Connect
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "shopify" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();Permissions requested
This toolkit uses a single credential and requests no scopes.
Actions
Create productwriteshopify.create_productCreate a product. It is created as a draft unless status is 'active'. Variants beyond the default one need the full product API.
| Input | Type | Description | |
|---|---|---|---|
title | string | Required | Product title |
body_html | string | Optional | Description as HTML |
vendor | string | Optional | Vendor name |
product_type | string | Optional | Product type |
status | string | Optional | Product status |
tags | string | Optional | Comma-separated tags |
await setu.execute({
userId: "user_1",
action: "shopify.create_product",
input: {
"title": "<title>"
},
});Get customerreadshopify.get_customerGet one customer by ID with order count and total spent.
| Input | Type | Description | |
|---|---|---|---|
customer_id | integer | Required | Customer ID |
await setu.execute({
userId: "user_1",
action: "shopify.get_customer",
input: {
"customer_id": 1
},
});Get orderreadshopify.get_orderGet one order by ID with its totals and line items.
| Input | Type | Description | |
|---|---|---|---|
order_id | integer | Required | Order ID |
await setu.execute({
userId: "user_1",
action: "shopify.get_order",
input: {
"order_id": 1
},
});Get productreadshopify.get_productGet one product with its variants (price, SKU, inventory item ID) by product ID.
| Input | Type | Description | |
|---|---|---|---|
product_id | integer | Required | Product ID |
await setu.execute({
userId: "user_1",
action: "shopify.get_product",
input: {
"product_id": 1
},
});List customersreadshopify.list_customersList customers (up to 250 per call), optionally only some IDs or those after an ID.
| Input | Type | Description | |
|---|---|---|---|
limit | integer | Optional | Customers to return (max 250, default 50) |
ids | array of integer | Optional | Only these customer IDs |
since_id | integer | Optional | Only customers with an ID greater than this |
await setu.execute({
userId: "user_1",
action: "shopify.list_customers",
input: {},
});List inventory levelsreadshopify.list_inventory_levelsGet stock levels for inventory items (variants) and/or locations. At least one of inventory_item_ids or location_ids is required. Find the inventory item ID on a product's variants.
| Input | Type | Description | |
|---|---|---|---|
inventory_item_ids | array of integer | Optional | Inventory item IDs (max 50) |
location_ids | array of integer | Optional | Location IDs (max 50) |
limit | integer | Optional | Levels to return (max 250, default 50) |
await setu.execute({
userId: "user_1",
action: "shopify.list_inventory_levels",
input: {},
});List ordersreadshopify.list_ordersList orders (the last 60 days unless the app has read_all_orders). Use status 'any' to include closed and cancelled orders.
| Input | Type | Description | |
|---|---|---|---|
status | string | Optional | Order status filter |
financial_status | string | Optional | Payment filter |
created_at_min | string | Optional | Only orders created after this ISO 8601 time |
limit | integer | Optional | Orders to return (max 250, default 50) |
await setu.execute({
userId: "user_1",
action: "shopify.list_orders",
input: {},
});List productsreadshopify.list_productsList products in the store (up to 250 per call), optionally limited to some IDs, one product type, or products after an ID.
| Input | Type | Description | |
|---|---|---|---|
limit | integer | Optional | Products to return (max 250, default 50) |
ids | array of integer | Optional | Only these product IDs |
product_type | string | Optional | Only products of this type |
since_id | integer | Optional | Only products with an ID greater than this (for paging) |
await setu.execute({
userId: "user_1",
action: "shopify.list_products",
input: {},
});Search customersreadshopify.search_customersSearch customers with Shopify's query syntax, for example 'email:[email protected]' or free text such as a name or phone.
| Input | Type | Description | |
|---|---|---|---|
query | string | Required | Search query, e.g. email:[email protected] |
limit | integer | Optional | Customers to return (max 250) |
await setu.execute({
userId: "user_1",
action: "shopify.search_customers",
input: {
"query": "<query>"
},
});Update productwriteshopify.update_productChange a product's title, description, vendor, type, tags or status (for example archive it).
| Input | Type | Description | |
|---|---|---|---|
product_id | integer | Required | Product ID |
title | string | Optional | New title |
body_html | string | Optional | New description as HTML |
vendor | string | Optional | New vendor |
product_type | string | Optional | New product type |
status | string | Optional | Product status |
tags | string | Optional | Comma-separated tags (replaces existing tags) |
await setu.execute({
userId: "user_1",
action: "shopify.update_product",
input: {
"product_id": 1
},
});