> ## Documentation Index
> Fetch the complete documentation index at: https://docs.consile.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Shopify

> Products, orders, inventory, customers and discounts from your Shopify store, plus creating and changing products, inventory and publishing, directly from your AI. Publishing, price changes and inventory changes require confirmation.

*[Læs siden på dansk](https://docs.consile.ai/connectors/shopify.md)*

The Shopify connector gives your AI access to your own Shopify store: read
products, variants, collections, inventory, orders, fulfillment, customers,
B2B companies, discounts, abandoned checkouts, shipping and
analytics. It can also create and change products, adjust inventory and
publish to sales channels behind clear guardrails. You enter your store's
Shopify domain (`<store>.myshopify.com`) and approve the Consile app on Shopify's
own page, and your AI never sees the access token itself.

> [!NOTE]
>
> **Read + guardrailed write.** The read tools only read. New products
> are created as drafts (`DRAFT`) by default. Publishing or unpublishing,
> setting a product live (`ACTIVE`) or archiving it, changing the price of an
> existing variant, changing inventory or deleting variants requires your explicit
> confirmation. Some changes are carried out without confirmation, for example new variants and
> corrections to text and tags (see Limitations below). Read more under
> [Actions & guardrails](https://docs.consile.ai/en/essentials/actions-and-guardrails.md).

> **Access**
>
> Read + guardrailed write

> **Authentication**
>
> Shopify login (OAuth) · you enter your store domain

> **Hosting**
>
> Hosted in the EU · Frankfurt

* **Price:** 349 DKK/month excl. VAT. No lock-in,
  cancel at any time. The price covers 1 user and 1 store. Each extra user
  costs 174.50 DKK/month excl. VAT. See [Pricing](https://docs.consile.ai/en/portal/pricing.md). Shopify is also
  included in [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md) and
  [the free edition](https://docs.consile.ai/en/portal/free-edition.md).
* **Users:** whoever buys Shopify automatically gets the included access.
  If more colleagues need Shopify in their AI, an administrator gives them access
  under **Team** in the portal (choose **All tools** or **Custom** next to
  Shopify on the person's page). An extra user is billed pro rata from
  the day access is given. A colleague without access can still see the tools in their
  AI, but every call is refused with a message to ask an administrator for access.
  Shopify has no levels like **Read only**: **All tools** gives the
  tools that are switched on for the organization (all 50, unless an
  administrator has switched some off), and with **Custom** the
  administrator chooses the tools. If you have
  [the Consile Studio membership](https://docs.consile.ai/en/portal/membership.md), an administrator
  instead gives one membership licence per person, and it also covers Shopify. See
  [Team](https://docs.consile.ai/en/portal/team.md).
* **Multiple stores:** a connection covers one Shopify store. An extra store
  cannot be connected from the portal. If you need more stores, write to
  [support@consile.dk](mailto:support@consile.dk) before you add an extra agreement.
* **Endpoint:** `https://mcp.consile.ai/shopify/mcp` (your own named connector in your AI).

## Prerequisites

**1. Connector bought**

An administrator buys Shopify in the [portal](https://app.consile.ai): open
**Marketplace**, choose **Shopify** and click **Add connector**. See
[Buy a connector](https://docs.consile.ai/en/portal/buy-a-connector.md).

**2. Your AI connected**

See [Connect Claude](https://docs.consile.ai/en/connect/connect-claude.md) or
[Connect ChatGPT](https://docs.consile.ai/en/connect/connect-chatgpt.md).

**3. Access for your user**

If your Consile account has several users, an administrator must give you access
to Shopify under **Team** in the portal. Whoever buys the connector gets access
automatically.

**4. Shopify connected**

Click **Connect now** on the Shopify page in the portal, enter your store domain
(`<store>.myshopify.com`, not the store's own domain) and approve the
Consile app on your store's own Shopify page. See
[Connect Shopify](https://docs.consile.ai/en/connect/connect-shopify.md).

## What can it do? (tools)

You do not need to know the tool names. You ask in natural language, and your AI picks
and calls the right tool itself. The tools are called `shopify__<tool>` (for example
`shopify__list_orders`) when your AI calls them; below, the bare names are shown for
readability.

The connector provides **50 tools** in total: 40 read-only (pure
reading) and 10 guardrailed write tools.

### Reading (40 read-only)

**Store & policies**

| Tool | What it does |
| - | - |
| `get_shop` | The store's profile: name, domains, currency, time zone, plan |
| `get_shop_policies` | The store's legal policies (terms of sale, privacy, shipping and return terms) |

**Products & variants**

| Tool | What it does |
| - | - |
| `list_products` | Search/list products (status, vendor, type) |
| `get_product` | One product in detail (variants, images, description) |
| `get_product_by_handle` | Look up a product via its URL handle |
| `list_product_variants` | Search/list variants (price, compare-at price, SKU, inventory quantity) |
| `get_product_variant` | One variant in detail (incl. barcode) |
| `list_product_media` | A product's images/media |

**Collections**

| Tool | What it does |
| - | - |
| `list_collections` | Smart and manual collections |
| `get_collection` | One collection incl. rule set (for smart collections) |
| `get_collection_products` | The products in a collection |

**Sales channels / publishing**

| Tool | What it does |
| - | - |
| `list_publications` | The store's sales channels (Online Store, POS, …) |
| `get_product_publications` | Which channels a product is published on |

**Inventory**

| Tool | What it does |
| - | - |
| `list_locations` | Inventory locations (warehouses/stores) |
| `get_location` | One location in detail |
| `get_inventory_item` | Inventory item (SKU, tracking, cost price) |
| `get_inventory_levels` | Inventory quantity per location for an item |
| `get_variant_inventory` | A variant's inventory across locations |
| `list_inventory_transfers` | Inventory transfers between locations |
| `get_inventory_transfer` | One inventory transfer in detail |
| `get_inventory_shipment` | One inventory shipment |

**Orders & fulfillment**

| Tool | What it does |
| - | - |
| `list_orders` | Orders, newest first (payment/fulfillment status, total) |
| `get_order` | One order in detail (totals, customer, shipping address, lines) |
| `list_order_transactions` | Payment transactions on an order |
| `list_order_fulfillments` | An order's shipments with tracking |
| `list_fulfillment_orders` | Fulfillment orders (also 3PL) |
| `get_fulfillment_order` | One fulfillment order |

**Draft orders**

| Tool | What it does |
| - | - |
| `list_draft_orders` | Draft orders |
| `get_draft_order` | One draft order (status, invoice URL, lines) |

**Customers & companies**

| Tool | What it does |
| - | - |
| `list_customers` | Search/list customers (number of orders, total spent) |
| `get_customer` | One customer in detail (contact, addresses, spend, tags) |
| `list_companies` | B2B companies |
| `get_company` | One B2B company (contacts, locations) |

**Discounts**

| Tool | What it does |
| - | - |
| `list_discounts` | Automatic and code-based discounts |
| `get_discount` | One discount in detail |
| `list_code_discounts` | Code discounts with the codes themselves |

**Checkouts, shipping & analytics**

| Tool | What it does |
| - | - |
| `list_abandoned_checkouts` | Abandoned checkouts (with recovery URL and total) |
| `list_delivery_profiles` | Shipping/delivery profiles |
| `run_analytics_query` | Run a ShopifyQL analysis |
| `graphql_query` | Read-only access to everything else in the Admin GraphQL |

> [!NOTE]
>
> `list_customers`, `get_customer` and order data can contain personal data (names,
> email, phone, addresses). If Shopify does not give access to the customer fields, the
> whole call fails. This applies to the customer tools and also to the order, draft order,
> B2B company and abandoned checkout tools, because they show the customer's name
> and email. Data is fetched directly from Shopify when your AI asks. See what
> Consile stores under [GDPR & your rights](https://docs.consile.ai/en/essentials/gdpr.md).

### Writing (10 guardrailed tools)

These ten tools are the only ones that change anything in your store, and only within
products, publishing and inventory. Orders, draft orders, customers and discounts are
read-only. New products are created as drafts. Publishing or unpublishing,
setting the status `ACTIVE` or `ARCHIVED`, changing the price of an existing variant,
changing inventory or deleting variants requires `confirm: true`. Without confirmation you
only get a preview (dry-run), and nothing is sent to Shopify. The other
changes are carried out immediately (see Limitations below).

| Tool | What it does | Requires confirmation? |
| - | - | - |
| `create_product` | Creates a product (draft by default) | Only if you ask for ACTIVE (live) or ARCHIVED |
| `update_product` | Corrects a product's fields | Only if status → ACTIVE or ARCHIVED; other corrections are carried out immediately |
| `set_product_status` | Sets the product status (ACTIVE/DRAFT/ARCHIVED) | Yes for ACTIVE (live) and ARCHIVED; DRAFT needs none |
| `create_product_variant` | Adds variants to a product | No, not even for the price of new variants |
| `update_product_variant` | Corrects existing variants | Yes, when price or compare-at price is included; otherwise no |
| `delete_product_variant` | Deletes variants | Always (destructive) |
| `publish_product` | Publishes to sales channels (makes live) | Always |
| `unpublish_product` | Removes from sales channels | Always |
| `set_inventory_quantity` | Sets an absolute inventory quantity at a location | Always (inventory change) |
| `adjust_inventory_quantity` | Adjusts inventory with a relative change | Always (inventory change) |

> **[Building on top yourself? See the API reference](https://docs.consile.ai/developers/tools/shopify.md)**
>
> Full reference with all 50 tools, arguments, GraphQL details,
> guardrail fields and return values.

## How the guardrail works

The guardrail is built into the connector and consists of three rules:

1. **New products are created as drafts.** A DRAFT product is not visible in any
   sales channel until you explicitly publish or activate it.
2. **Live, price, inventory, deleting and archiving require `confirm: true`.** Making
   something live (publish or status → ACTIVE), unpublishing, changing the price of an
   existing variant, changing inventory, deleting a variant or archiving requires an
   explicit confirmation. Without it, you get a structured preview of
   exactly what would happen, and no call is sent to Shopify. Exception: new
   variants are created without confirmation, including their price.
3. **Failed writes never look like success.** If Shopify refuses a change,
   your AI gets an error instead of an empty "ok".

> [!TIP]
>
> Read the whole confirmation model, which applies across all write connectors,
> under [Actions & guardrails](https://docs.consile.ai/en/essentials/actions-and-guardrails.md).

## Try asking

> **Orders & sales**
>
> > *"Show the 10 latest orders and their total value."*
>
> > *"How many abandoned checkouts have we had in the last week, and what is the total value?"*

> **Products & inventory**
>
> > *"Which products have the lowest inventory right now?"*
>
> > *"What do our best-selling variants cost, and what is their SKU?"*

> **Create & change (guardrailed)**
>
> > *"Create a new product 'Summer T-shirt' as a draft with a description and the price 199 DKK."* (the product is created as a draft; the price is set on the product's variant in an extra step, which you must confirm)
>
> > *"Publish product 123 to the Online Store."* (you get a preview and must confirm)
>
> > *"Set the inventory quantity for SKU ABC-1 at our main warehouse to 50."* (you are asked to confirm)

## Limitations

* **Writing is guardrailed, not unrestricted.** The ten write tools only cover
  products, publishing and inventory. There is no tool for deleting
  products, only for archiving them.
* **Some changes take effect without confirmation.** Corrections to title,
  description, vendor, type and tags (`update_product` without a status change), new
  variants incl. their price (`create_product_variant`) and changes to SKU,
  barcode, taxability and inventory policy (`update_product_variant` without a
  price change) are carried out immediately. The same applies when a product is set
  back to draft (DRAFT), which removes it from the store. If the product is
  live, your customers see the change immediately.
* **Orders, customers and discounts are read-only.** There are no tools for
  changing orders, customers or discounts, only reading them.
* **Customer data.** If Shopify does not give access to the customer fields, tools
  that show customer data fail completely (see the note above).
* **Error messages.** If access to Shopify has expired, or Shopify refuses it,
  your AI gets a message that Shopify must be connected again. Other errors, for example when
  Shopify refuses a change, are only shown as `Tool invocation failed.` without
  further explanation. If all calls fail, connect Shopify again in the portal. See
  [Connect Shopify](https://docs.consile.ai/en/connect/connect-shopify.md).
* **Access is renewed automatically.** Consile renews access to Shopify
  automatically, so you do not have to reconnect at fixed intervals. If you uninstall
  the Consile app in Shopify, the connector stops working. An administrator
  reconnects it in the portal: click the menu next to the store on the
  **Connections** card, confirm with **Disconnect**, and then click
  **Connect**. If it says **Access revoked**, **Reconnect** is enough.

Is something not working as expected? See [Troubleshooting](https://docs.consile.ai/en/troubleshooting.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.