Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
40rty-ai avatar

Shopify Admin Wismo Bulk Status Report

  • 7 installs
  • 173 repo stars
  • Updated June 26, 2026
  • 40rty-ai/shopify-admin-skills

shopify-admin-wismo-bulk-status-report is a Claude Code skill that identifies Shopify orders at risk of generating 'Where Is My Order?' support tickets.

About

A Claude Code skill that reports Shopify orders most likely to trigger 'Where Is My Order?' support tickets: shipped orders with stale tracking and unfulfilled orders past a configurable SLA. It is read-only and exports a CSV so support can reach out before customers do. Support teams use it to reduce inbound ticket volume.

  • Flags shipped orders with stale tracking and unfulfilled orders past SLA
  • Targets WISMO tickets, cited as ~18% of incoming support requests
  • Read-only; exports a CSV to proactively contact at-risk customers

Shopify Admin Wismo Bulk Status Report by the numbers

  • 7 all-time installs (skills.sh)
  • Ranked #1,587 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

shopify-admin-wismo-bulk-status-report capabilities & compatibility

Free; requires an authenticated Shopify CLI session with read_orders.

Capabilities
order risk report · support triage · fulfillment monitoring
Use cases
data analysis
Runs
Runs locally
Pricing
Free
From the docs

What shopify-admin-wismo-bulk-status-report says it does

Identify orders at risk of generating WISMO support tickets: shipped orders with stale tracking, and unfulfilled orders past their SLA window.
SKILL.md
WISMO accounts for ~18% of all incoming support requests, making proactive identification a direct ops capacity investment.
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-wismo-bulk-status-report

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs7
repo stars173
Last updatedJune 26, 2026
Repository40rty-ai/shopify-admin-skills

What it does

Surface Shopify orders at risk of WISMO tickets for proactive customer outreach.

Who is it for?

Support and ops teams reducing WISMO ticket volume through proactive outreach.

Skip if: Sending the outreach itself; it only produces the at-risk order list.

When should I use this skill?

You want to catch stale-tracking and overdue orders before customers ask where they are.

What you get

A CSV of unfulfilled-overdue and shipped-stale-tracking orders for proactive contact.

  • At-risk order CSV
  • Human or JSON WISMO report

By the numbers

  • 2 orders queries (unfulfilled-overdue + shipped-stale)
  • default unfulfilled_sla_days 3
  • default stale_tracking_days 5

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Generates a bulk report of orders most likely to generate "Where Is My Order?" (WISMO) support tickets — shipped orders whose tracking hasn't updated in N days, and unfulfilled orders sitting past a configurable SLA. According to industry research, WISMO accounts for ~18% of all incoming support requests, making proactive identification a direct ops capacity investment. Read-only. Replaces manual order-by-order admin scanning or helpdesk searches. The CSV output can be used to proactively contact customers before they contact you.

Prerequisites

  • shopify auth login --store <domain>
  • API scopes: read_orders

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
formatstringnohumanOutput format: human or json
dry_runboolnofalsePreview operations without executing mutations
unfulfilled_sla_daysintegerno3Flag unfulfilled orders older than this many days
stale_tracking_daysintegerno5Flag shipped orders where the last fulfillment was created more than this many days ago (proxy for stale tracking)
limitintegerno250Max orders per page

Workflow Steps

1. OPERATION: orders — query (unfulfilled at-risk) Inputs: first: <limit>, query: "fulfillment_status:unfulfilled created_at:<='<NOW minus unfulfilled_sla_days>'", sort by CREATED_AT ascending Expected output: Orders unfulfilled past SLA window with name, createdAt, customer, displayFulfillmentStatus; label as UNFULFILLED_OVERDUE

2. OPERATION: orders — query (shipped but potentially stale) Inputs: first: <limit>, query: "fulfillment_status:shipped updated_at:<='<NOW minus stale_tracking_days>'", sort by UPDATED_AT ascending Expected output: Shipped orders not updated recently with name, createdAt, fulfillments.createdAt, fulfillments.trackingInfo; label as SHIPPED_STALE_TRACKING

GraphQL Operations

# orders:query — validated against api_version 2025-01
query WismoOrders($first: Int!, $after: String, $query: String) {
  orders(first: $first, after: $after, query: $query, sortKey: CREATED_AT) {
    edges {
      node {
        id
        name
        createdAt
        updatedAt
        displayFulfillmentStatus
        displayFinancialStatus
        customer {
          id
          firstName
          lastName
          defaultEmailAddress {
            emailAddress
          }
        }
        shippingAddress {
          city
          province
          country
        }
        fulfillments {
          createdAt
          status
          trackingInfo {
            number
            url
            company
          }
        }
        totalPriceSet {
          shopMoney { amount currencyCode }
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Session Tracking

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

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: wismo-bulk-status-report             ║
║  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
  Unfulfilled overdue orders:      <n>
  Shipped stale-tracking orders:   <n>
  Total at-risk orders:            <n>
  Errors:                          0
  Output:                          wismo-report-<YYYY-MM-DD>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "wismo-bulk-status-report",
  "store": "<domain>",
  "started_at": "<ISO8601>",
  "completed_at": "<ISO8601>",
  "dry_run": false,
  "steps": [
    { "step": 1, "operation": "WismoOrders", "type": "query", "params_summary": "fulfillment_status:unfulfilled, sla_days: <n>, limit: <n>", "result_summary": "<n> orders", "skipped": false },
    { "step": 2, "operation": "WismoOrders", "type": "query", "params_summary": "fulfillment_status:shipped, stale_days: <n>, limit: <n>", "result_summary": "<n> orders", "skipped": false }
  ],
  "outcome": {
    "unfulfilled_overdue_count": 0,
    "shipped_stale_count": 0,
    "total_at_risk": 0,
    "errors": 0,
    "output_file": "wismo-report-<YYYY-MM-DD>.csv"
  }
}

Output Format

CSV file wismo-report-<YYYY-MM-DD>.csv with columns: risk_type, order_name, customer_email, order_date, days_waiting, fulfillment_status, tracking_number, tracking_company, shipping_city, shipping_country.

Two sections in the CSV (separated by risk_type column value): UNFULFILLED_OVERDUE and SHIPPED_STALE_TRACKING. For human format, also shows a summary table before the CSV path.

Error Handling

ErrorCauseRecovery
No orders returnedAll orders are within SLA / recently updatedGood news — no WISMO risk detected
Very large result setHigh order volume or wide SLA windowNarrow date range or reduce unfulfilled_sla_days
customer is nullGuest checkout orderOrder name and tracking still included — email column will be empty
Rate limit (429)Many pages of ordersReduce limit to 100

Best Practices

1. Run this report daily during your morning ops review alongside fulfillment-status-digest — together they cover both the ops queue and the customer-facing risk. 2. Sort the CSV by days_waiting descending to prioritize outreach to the most overdue orders first. 3. For UNFULFILLED_OVERDUE orders, forward to the fulfillment-status-digest skill to understand why they haven't been fulfilled and use order-hold-and-release if needed. 4. For SHIPPED_STALE_TRACKING orders, check if the carrier tracking URL shows movement — if it's genuinely stalled, proactive outreach reduces ticket volume significantly. 5. Use format: json to pipe the output into a Slack alert or CRM automation that creates follow-up tasks for your support team.

Related skills

FAQ

What counts as at-risk?

Shipped orders with stale tracking and unfulfilled orders past the SLA window.

Does it contact customers?

No. It exports a CSV so you can proactively contact them.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.