Get shop (yekar.shopify.get-shop) | Read | The connected Shopify store: name, permanent myshopify.com domain, storefront URL, plan, timezone and - importantly - the store's own currency, which is what every shop-currency amount in these tools is denominated in. Run this first to confirm a connection works. |
Count records (yekar.shopify.count-records) | Read | Count products, orders or customers - optionally narrowed by the same search-query filter the list tools take. Use this rather than counting the items a list tool returned: a list page is a window, not a total. Above roughly 10,000 matches Shopify answers with precision: AT_LEAST, meaning the count is a floor rather than the exact number. |
List products (yekar.shopify.list-products) | Read | A page of products, with each product's status, vendor, tags, total inventory and price range. status matters: a DRAFT or ARCHIVED product is not on sale, so a catalogue answer should say which. Prices are decimal strings paired with a currency code. To count products rather than list them, use Count records. |
Get product (yekar.shopify.get-product) | Read | One product with its description and up to 25 variants - each variant's SKU, price, inventory quantity and inventory item id (which is what Set inventory quantity takes, not the variant id). variantsTotal and moreVariants say when a product has more variants than are shown. |
List variants (yekar.shopify.list-variants) | Read | A page of product variants across the store, searchable by SKU, product or inventory level (sku:ACME-1, inventory_quantity:<5). Each row carries the variant's price, SKU, inventory quantity and inventory item id. An inventoryQuantity of null means the variant is NOT tracked, which is different from zero in stock. |
List orders (yekar.shopify.list-orders) | Read | A page of orders with financial and fulfillment status, totals and customer. Three things to be careful with: Shopify returns OPEN orders by default (add status:any to the query to include archived ones); orders placed on a test gateway have test: true and never moved money, so exclude them from revenue; and currentTotal (after refunds and edits) is what the merchant holds, while originalTotal is what the order was worth when placed. |
Get order (yekar.shopify.get-order) | Read | One order with its line items (up to 25; moreLineItems says when there are more), statuses, note and totals. currentTotal reflects refunds and edits; originalTotal is the order as placed; totalRefunded is what went back. |
List customers (yekar.shopify.list-customers) | Read | A page of customers with their order count, lifetime spend, tags and default city/country. Search by email, tag, order count or location. amountSpent is a decimal string with its currency code - Shopify's own lifetime figure, not something computed from a page of orders. |
Get customer (yekar.shopify.get-customer) | Read | One customer by id: contact details, tags, note, lifetime order count and spend. To find a customer by email or name instead, use List customers with a search query. |
List locations (yekar.shopify.list-locations) | Read | The store's inventory locations - warehouses, retail stores and pickup points - with their ids, which List inventory levels and Set inventory quantity both need. Up to 50 are returned and moreAvailable says if the store has more. |
List inventory levels (yekar.shopify.list-inventory-levels) | Read | Stock at one location, item by item: available (sellable), onHand (physically present, including units committed to open orders) and committed. These are different numbers - quoting onHand as availability oversells. Each row carries the inventory item id that Set inventory quantity takes. |
Create product (yekar.shopify.create-product) | Write | Create a product. It is created as a DRAFT unless you pass status ACTIVE - a draft is not on the storefront. Shopify creates one default variant priced at 0; set the real price with Update variant price, and stock with Set inventory quantity. Running this twice creates TWO products: Shopify does not deduplicate by title. |
Update product (yekar.shopify.update-product) | Write | Update a product's title, description, vendor, type, tags or status. Only the fields you pass change. CAREFUL with tags: the list you send REPLACES the product's tags entirely rather than adding to them. Setting status ACTIVE publishes the product to the storefront. |
Update variant price (yekar.shopify.update-variant-price) | Write | Set the price (and optional compare-at price) of one or more variants of a product. Prices are decimal STRINGS in the store's own currency - "19.99" - and are absolute, not deltas. Shopify requires the product id alongside the variant ids. |
Set inventory quantity (yekar.shopify.set-inventory-quantity) | Write | Set stock for one or more inventory items at a location to an ABSOLUTE quantity (not a delta). Pass compareQuantity - the value you just read - to have Shopify refuse the write if the stock changed underneath you, which is how a concurrent sale avoids being overwritten. Takes INVENTORY ITEM ids, not variant ids: Get product and List inventory levels both return them. |
Create customer (yekar.shopify.create-customer) | Write | Create a customer record. Shopify requires at least one of email, phone or a name, and enforces that email and phone are UNIQUE within the store - creating a customer whose email already exists fails rather than making a duplicate. Search first with List customers if you are not sure. |
Create draft order (yekar.shopify.create-draft-order) | Write | Create a draft order from existing product variants and return its invoice URL - a link the customer can pay. This takes NO payment and sends NO email: it prepares an order for a human to review, send or complete in the Shopify admin. Stock is not reserved by a draft. |