Setu Recipes: reusable digital workers across every app.Browse templates

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

TypeScript
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.
InputTypeDescription
titlestringRequiredProduct title
body_htmlstringOptionalDescription as HTML
vendorstringOptionalVendor name
product_typestringOptionalProduct type
statusstringOptionalProduct status
tagsstringOptionalComma-separated tags
TypeScript
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.
InputTypeDescription
customer_idintegerRequiredCustomer ID
TypeScript
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.
InputTypeDescription
order_idintegerRequiredOrder ID
TypeScript
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.
InputTypeDescription
product_idintegerRequiredProduct ID
TypeScript
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.
InputTypeDescription
limitintegerOptionalCustomers to return (max 250, default 50)
idsarray of integerOptionalOnly these customer IDs
since_idintegerOptionalOnly customers with an ID greater than this
TypeScript
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.
InputTypeDescription
inventory_item_idsarray of integerOptionalInventory item IDs (max 50)
location_idsarray of integerOptionalLocation IDs (max 50)
limitintegerOptionalLevels to return (max 250, default 50)
TypeScript
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.
InputTypeDescription
statusstringOptionalOrder status filter
financial_statusstringOptionalPayment filter
created_at_minstringOptionalOnly orders created after this ISO 8601 time
limitintegerOptionalOrders to return (max 250, default 50)
TypeScript
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.
InputTypeDescription
limitintegerOptionalProducts to return (max 250, default 50)
idsarray of integerOptionalOnly these product IDs
product_typestringOptionalOnly products of this type
since_idintegerOptionalOnly products with an ID greater than this (for paging)
TypeScript
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.
InputTypeDescription
querystringRequiredSearch query, e.g. email:[email protected]
limitintegerOptionalCustomers to return (max 250)
TypeScript
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).
InputTypeDescription
product_idintegerRequiredProduct ID
titlestringOptionalNew title
body_htmlstringOptionalNew description as HTML
vendorstringOptionalNew vendor
product_typestringOptionalNew product type
statusstringOptionalProduct status
tagsstringOptionalComma-separated tags (replaces existing tags)
TypeScript
await setu.execute({
  userId: "user_1",
  action: "shopify.update_product",
  input: {
    "product_id": 1
  },
});