Shopify

Read-only Admin API · Live

Ask your Shopify store anything.

Connect Shopify to Lumen via OAuth and ask questions about orders, customers, inventory, and fulfillments in plain English. Lumen runs read-only GraphQL queries against the Admin API — mutations are blocked by design.

Auth
Shopify OAuth
Access
Read-only GraphQL
Plan
Basic → Plus
Freshness
Live — every query hits the Admin API
Available on
Every plan

Examples

Questions teams actually ask.

The tools it pulls from are shown inline — every answer in Lumen cites the underlying records it read.

Ops

Which SKUs drove the most refunds in the last 30 days, and what does the line-item mix look like?

pullsorderslineItemsrefunds
Support

Where is order #10284 right now, and what does its fulfillment history show?

pullsordersfulfillmentsshippingAddress
Founder

Top 10 customers by lifetime spend this year, and how often they're re-ordering.

pullscustomersorders
Ops

Which variants are below 20 units at the Berlin warehouse, filtered to active products?

pullsproductVariantsinventoryLevels
Marketing

How did AOV shift for orders with the SUMMER25 discount vs without, last 14 days?

pullsordersdiscountApplications
Ops

Any orders placed over 48 hours ago that still aren't fulfilled, grouped by location?

pullsordersfulfillments

Preview

See what the answer looks like.

Toggle the tools Lumen is allowed to use. The plan, answer, and cited sources update to match.

Tools
Read-only
You

Which SKUs drove the most refunds last week?

Plan
  1. shopify.introspect — confirm the Order, Refund, and LineItem fields available
  2. shopify.query — orders(query: "created_at:>30d financial_status:refunded") with refunds and lineItems
  3. paginate via edges/cursor until pageInfo.hasNextPage is false
  4. rank SKUs by refunded quantity and net amount
Answer

Three SKUs account for 62% of last week's refunds. TRS-CHNO-M and TRS-CHNO-L (chino trousers, medium and large) are $4,120 combined across 48 orders. HDY-OAT-S is $1,890 across 14 orders. I pulled these directly from orders + refunds — no cached index.

Sources
  • [1]shopify.query — 214 orders with financial_status=refunded, Feb 12–18
  • [2]shopify.query — refunds with line-item breakdown, same window
  • [3]shopify.introspect — reference card used to confirm field names

Scope

What Lumen sees. What it can change.

Read is on by default. Every write is a separate toggle, capped per user, and logged.

Read

What Lumen reads

Lumen calls the Shopify GraphQL Admin API directly. Every question fires a fresh query scoped to whatever you're asking — no data is warehoused in Lumen.

  • Orders, line items, transactions, refunds

    Including financial status, fulfillment status, and refund reasons

  • Customers and addresses

    email, phone, orders count, total spent, tags

  • Products, variants, collections

    Including vendor, status, price, SKU, and handle

  • Inventory levels by location

    Quantity available per variant per location

  • Fulfillments and shipping

    Tracking numbers, shipping lines, fulfillment events

  • Discounts and price rules

    For margin and promotion analysis

Write · opt-in

What Lumen can write

Lumen does not write to Shopify today. Every GraphQL mutation is blocked before it leaves our worker — the `assertReadOnlyGraphQL` guard rejects any query containing a mutation before it hits the Admin API.

    Every query is logged with the asking user, the GraphQL text, the variables, and row counts returned. Exportable as CSV or streamed to your SIEM.

    Install

    Connect in under a minute.

    No keys, no call, no app marketplace fine print.

    1. Connect
      01

      Sign in with Shopify

      In Settings → Integrations → Shopify, paste your store domain (e.g. `mystore.myshopify.com`) and click Connect. Lumen redirects you to Shopify's standard OAuth screen to approve read scopes. Lumen never sees your Shopify password.

    2. Verify
      02

      Ask a warm-up question

      The agent's first move is usually `shopify.introspect` to confirm the fields it can query, then a small `shopify.query` against orders. Try: "How many orders were placed yesterday?"

    3. Iterate
      03

      Ask the real questions

      Lumen uses cursor-based pagination so it can walk the full result set for large queries. Answers always show the GraphQL that ran — easy to spot-check before you trust a number.

    Questions

    Frequently asked.

    Does Lumen write to Shopify?
    No. The integration is read-only today. Every GraphQL mutation is rejected by a guard before the request leaves Lumen's worker. If you need structured write access (draft orders, refunds, tags), email us and we'll scope it honestly.
    Does Lumen work with Shopify Plus?
    Yes — Basic, Shopify, Advanced, and Plus. Any store with the Admin API enabled works. Lumen's only hard dependency is the GraphQL Admin API.
    Which Admin API scopes does Lumen request?
    Read scopes covering orders, customers, products, inventory, fulfillments, price rules, and discounts. Exact scopes are defined in the Lumen Shopify app manifest — no write scopes are requested.
    How fresh is the data?
    Live. Lumen does not warehouse your Shopify data. Every question runs a fresh GraphQL query, so the numbers you see match what's in your admin right now.
    Does Lumen store my order data?
    Query responses are held in the conversation they ran in so the agent can cite rows back to you, and are deleted with the conversation. PII is never used for model training. You can revoke access from your Shopify admin at any time.
    Can the agent write its own GraphQL?
    Yes — that's the point. `shopify.query` takes an arbitrary GraphQL string plus variables. The agent uses `shopify.introspect` first to confirm the schema, writes the query, and Lumen blocks it if it contains a mutation.
    What happens if a query is too big?
    Shopify returns results in pages via cursor-based pagination. The agent walks `pageInfo.hasNextPage` and streams through until it has the full set or hits a reasonable ceiling. For very large sweeps, it'll narrow the `query:` filter before paginating.
    Can I limit what Lumen can read?
    Today, scope matches whatever read access the OAuth grant gives. Per-table, per-location, and per-date restrictions are on the roadmap — talk to us if you need them sooner.

    Connect your store. Ask your first question.

    Standard OAuth. Read-only. No app install on the buyer storefront, no keys, no call.