# Shopify: how to read it into Maplith

*Web shop · also known as Shopify Plus, Shopify admin · last checked 2026-10-20 · recipe `maplith://systems/shopify`*

The web shop's orders, payments, products with SKUs, inventory and customers, which tie the shop to payments, accounting, shipping and subscription apps.

## Best path

**Recommended: your agent fetches it.** Shopify makes its own connector for Claude and plugin for ChatGPT, so the customer's agent can usually look at the shop's structure and recent orders with access it already has. For more than a few thousand orders, use the CSV exports instead, because Shopify has no MCP server that gives a merchant read access to the whole store.

Try the paths in this order (ADR-0031):

1. **Your agent fetches it**, with the access your human already gave you. Connectors a vendor or client page confirms: Shopify connector for Claude; Shopify plugin for ChatGPT. The agent checks which fields orders, products, customers and inventory carry and fetches a few recent months with the connector, approved for read access only. Shopify says a connected tool can read data but not change it unless you approve write access.
2. **Maplith reads an MCP server your human already has.** No official MCP server confirmed. Shopify's own MCP servers are the Dev MCP (docs and API schemas for developers), the Storefront and UCP servers (catalog, cart and checkout for shoppers) and the Customer Accounts MCP (one signed-in customer's own orders), and none of them gives a merchant read access to all their orders, products and customers. Maplith reads only a server that serves MCP resources and takes a token a person types under Data sources › Systems in the Maplith app, such as the customer-run template for a database (ADR-0028).
3. **Export files**, the fallback that always works: see *Export steps* below.

## Datasets that make a good map

| Dataset | One row is | Key columns | Joins to |
|---|---|---|---|
| Orders | One order line: the order, its status and totals, and one product line with quantity and price. | order id, order name (order number), line item SKU, customer email (Maplith tries to mask it), created date, financial status, fulfillment status | Accounting invoices and shipping labels by order number; Recharge charges by Shopify order id; payment provider charges through the order's transactions. |
| Transactions | One captured payment or refund on an order. | order name (order number), kind, gateway, status, amount, currency, created date | Shopify Payments payouts and other payment providers (Stripe, PayPal) by order and amount; bank lines and accounting by payout. |
| Products and variants | One product variant with its handle, SKU, price and inventory settings. | product handle, product id, variant id, variant SKU, vendor, product type | Warehouse and logistics stock by SKU; Recharge subscriptions by Shopify variant id; ad product feeds by SKU or variant id. |
| Customers | One customer account with order count, total spent, tags and marketing consent. | customer id, customer email (Maplith tries to mask it), tags, total orders, total spent | Recharge customers by Shopify customer id; email marketing and CRM contacts by customer email. |
| Inventory | Stock for one variant at one location. | variant SKU, location, available quantity | Warehouse and 3PL stock reports by SKU and location. |

Columns are named, never their values. Maplith tries to mask personal data such as email addresses, but that is best effort: your human decides what goes in.

## Declared joins and identifier formats

Vendor documentation states these keys; Maplith checks them against the shared exports. A declaration is not a confirmation.

- Orders.customer_id → Customers.id (N:1). Source: https://shopify.dev/docs/api/admin-graphql/latest/objects/Order
- order_gid: ^gid://shopify/Order/[0-9]+$ identifies Orders.id. Source: https://shopify.dev/docs/api/usage/gids
- customer_gid: ^gid://shopify/Customer/[0-9]+$ identifies Customers.id. Source: https://shopify.dev/docs/api/usage/gids

## Structure artefacts

- **Shopify GraphQL type definitions** (api_spec; structure-only form): Have your agent retain the Order and Customer field/type definitions from the documented schema, with reference types and no examples, query results or credentials. Source: https://shopify.dev/docs/api/admin-graphql/latest/objects/Order

Share structure only: no examples, rows, credentials or pinned data. Your human chooses what to send.

## Read-only access

**Who usually has the rights:** The store owner, or a staff member the owner has given app development permissions.

**For the key your own agent's client uses, choose only these read permissions:** `read_orders`, `read_all_orders`, `read_products`, `read_customers`, `read_inventory`, `read_locations`, `read_shopify_payments_payouts`

**Where to click:**

1. Open the Dev Dashboard and go to Apps
2. Click Create app, then Start from Dev Dashboard
3. Type a name and click Create
4. On the Versions page, under Scopes, select only read scopes such as read_orders and read_products
5. Click Release
6. Click Install app and pick your store
7. Open App settings and copy the Client ID and Client secret from the Credentials card

A key or token made here stays in the tool that reads the system for your human, never in a chat. Maplith asks for one only under Data sources › Systems in the app, and only for an MCP server it can read.

## Export steps

**Format:** CSV · **Date range:** Orders for the last three months; all products and all customers

1. In Shopify admin, go to Orders and click Export
2. Choose Orders by date, set the start and end dates, pick the CSV format and click Export orders
3. For payments only, click Export transaction histories in the same window
4. Go to Products, click Export, choose All products and click Export products
5. Go to Customers, click Export, choose All customers and click Export customers
6. Large exports arrive by email to you and the store owner

## Volume hint

**About 200–3,000 orders (more rows in the CSV, since it has one row per order line) a month** (an estimate). Estimate for a small company, not a measured figure: a small web shop ships tens to around a hundred orders a day.

Every row an agent reads passes through its context, about one token per four characters. Above a few thousand rows a dataset, or for a daily refresh, prefer an MCP server or an export over fetching through the chat.

## Always

- Read-only, and never a credential sent to Maplith through the chat.
- The same recent period, a few months, from every system.
- Your human decides what goes in.

## Sources

Written from the vendor's public documentation, last checked 2026-10-20:

- https://help.shopify.com/en/manual/ai-powered-tools/connecting-ai-tools
- https://help.shopify.com/en/manual/ai-powered-tools/connecting-ai-tools/shopify-connector-for-claude
- https://shopify.dev/docs/apps/build/devmcp
- https://shopify.dev/docs/api/usage/access-scopes
- https://shopify.dev/docs/apps/build/dev-dashboard/create-apps-using-dev-dashboard
- https://help.shopify.com/en/manual/fulfillment/managing-orders/exporting-orders
- https://help.shopify.com/da/manual/fulfillment/managing-orders/exporting-orders
- https://shopify.dev/docs/api/admin-graphql/latest/objects/Order
- https://shopify.dev/docs/api/admin-graphql/latest/queries/customer
- https://shopify.dev/docs/api/usage/gids
