shopify-admin-order-lookup-and-summary

SkillCommunication

Retrieve and summarize full order details for a customer by email, order number, or phone number.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the shopify-admin-order-lookup-and-summary skill

What this skill tells your AI

The instructions your AI receives, as published by 40rty-ai/shopify-admin-skills in skills/customer-support/shopify-admin-order-lookup-and-summary/SKILL.md and read by ahel’s review.

Purpose

Retrieves complete order details for a customer without requiring navigation through the Shopify admin UI. Useful for support agents answering customer queries about order status, shipping tracking, and refunds. This skill operates directly on the Shopify-native data layer, returning full order context in a single operation.

Prerequisites

  • Authenticated Shopify CLI session: shopify auth login --store <domain>
  • API scopes: read_orders, read_customers

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
formatstringnohumanOutput format: human or json
dry_runboolnofalsePreview operations without executing mutations
lookup_bystringyesorder_number, email, or phone
lookup_valuestringyesThe value to search for (e.g., #1001, jane@example.com, +15551234567)
limitintegerno5Maximum number of orders to return

Workflow Steps

  1. OPERATION: orders — query Inputs: first: <limit>, query: "name:<order_number>" or "email:<email>" or "phone:<phone>" depending on lookup_by Expected output: Full order objects with financial status, fulfillment status, line items, shipping address, tracking, refunds

GraphQL Operations

# orders:query — validated against api_version 2025-01
query OrderLookup($first: Int!, $query: String) {
  orders(first: $first, query: $query) {
    edges {
      node {
        id
        name
        createdAt
        processedAt
        displayFinancialStatus
        displayFulfillmentStatus
        totalPriceSet {
          shopMoney { amount currencyCode }
        }
        subtotalPriceSet {
          shopMoney { amount currencyCode }
        }
        totalShippingPriceSet {
          shopMoney { amount currencyCode }
        }
        totalRefundedSet {
          shopMoney { amount currencyCode }
        }
        customer {
          id
          defaultEmailAddress {
            emailAddress
          }
          firstName
          lastName
          phone
        }
        shippingAddress {
          address1
          address2
          city
          province
          country
          zip
          phone
        }
        lineItems(first: 50) {
          edges {
            node {
              title
              quantity
              variant {
                sku
                price
              }
              fulfillmentStatus
            }
          }
        }
        fulfillments {
          trackingInfo {
            number
            url
            company
          }
          status
          createdAt
        }
        refunds {
          createdAt
          totalRefundedSet {
            shopMoney { amount currencyCode }
          }
        }
        note
        tags
      }
    }
  }
}

Session Tracking

Claude MUST emit the following output at each stage. This is mandatory.

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: order-lookup-and-summary             ║
║  Store: <store domain>                       ║
║  Started: <YYYY-MM-DD HH:MM UTC>             ║
╚══════════════════════════════════════════════╝

After each step, emit:

[N/TOTAL] <QUERY|MUTATION>  <OperationName>
          → Params: <brief summary of key inputs>
          → Result: <count or outcome>

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
OUTCOME SUMMARY
  Orders found:   <n>
  Errors:         0
  Output:         none
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "order-lookup-and-summary",
  "store": "<domain>",
  "started_at": "<ISO8601>",
  "completed_at": "<ISO8601>",
  "dry_run": false,
  "steps": [
    { "step": 1, "operation": "OrderLookup", "type": "query", "params_summary": "lookup_by: <type>, lookup_value: <value>, limit: <n>", "result_summary": "<n> orders", "skipped": false }
  ],
  "outcome": {
    "orders_found": 0,
    "errors": 0,
    "output_file": null
  }
}

Output Format

Human-readable formatted summary for each order found (not a CSV). For each order, Claude presents: order number, date, financial and fulfillment status, customer details, line items, shipping address, tracking numbers, and any refunds. For format: json, the raw order objects array.

Error Handling

ErrorCauseRecovery
No orders returnedNo match for lookup valueVerify lookup value format (order number must include #, e.g., #1001)
lookup_by invalidValue is not order_number, email, or phoneUse one of the three accepted values
Rate limit (429)Too many requestsReduce limit or wait and retry

Best Practices

  1. Order number lookups require the # prefix (e.g., #1001), which maps to the name field in the GraphQL query.
  2. Phone lookups must use E.164 format (e.g., +15551234567); partial numbers will not match.
  3. Email lookup returns all orders for that customer — set limit to retrieve more than the default 5 if the customer has many orders.
  4. For format: json, pipe the output to jq to extract specific fields for downstream scripts.
  5. This skill is read-only — use the refund-and-reorder skill if you need to process a refund after looking up the order.

Signals

GitHub stars
187
Forks
18
Last commit
Aug 2026

ahel review

  • S4info
    community integration — published by 40rty-ai, not shopify

Automated review, not a security audit. Ruleset v1.

Advanced
Catalog kind
skill
Gateway key
shopify-admin-order-lookup-and-summary
Source
github.com/40rty-ai/shopify-admin-skills