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

Shopify Admin Order Cancellation Analysis

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

shopify-admin-order-cancellation-analysis is a read-only Claude Code skill that tracks Shopify order cancellation rate over time and breaks cancelled orders down by cancelReason.

About

This Claude Code skill computes a Shopify store's order cancellation rate over a configurable window and breaks cancelled orders down by cancelReason. Operators use it to spot shifts in cancellation patterns, such as an INVENTORY spike signaling a stock data problem or a FRAUD spike signaling a coordinated attack. It is read-only and flags anomalous time buckets against a trailing average.

  • Computes cancellation rate over a window, broken down by cancelReason (CUSTOMER, FRAUD, INVENTORY, DECLINED, OTHER, STAF
  • Flags time buckets where any reason exceeds 2x its trailing 7-bucket average as anomalies
  • Read-only; surfaces fraud, inventory, and declined-payment patterns

Shopify Admin Order Cancellation Analysis by the numbers

  • 2 all-time installs (skills.sh)
  • Ranked #1,759 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

shopify-admin-order-cancellation-analysis capabilities & compatibility

Free; needs the read_orders scope on a Shopify CLI session.

Capabilities
cancellation analysis · anomaly detection · order intelligence
Use cases
data analysis
Pricing
Free
From the docs

What shopify-admin-order-cancellation-analysis says it does

tracks cancellation rate over time and breaks down cancelled orders by cancelReason to surface fraud, inventory, customer, and declined-payment patterns.
SKILL.md
Identify time buckets where any single reason exceeds 2x its trailing 7-bucket average — flag as anomalies.
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-order-cancellation-analysis

Add your badge

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

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

What it does

Report Shopify order cancellation rate over time and break it down by cancel reason.

Who is it for?

Spotting shifts in cancellation patterns by reason (fraud, inventory, declined payment) over time.

Skip if: Cancelling or restoring orders; it only reads and reports.

When should I use this skill?

You want to know why orders are being cancelled and whether any reason is spiking.

What you get

Cancellation rate over time broken down by reason, with anomalous buckets flagged.

  • Cancellation rate over time by reason and time bucket, with anomaly flags

By the numbers

  • 6 cancelReason categories (CUSTOMER, FRAUD, INVENTORY, DECLINED, OTHER, STAFF)
  • Anomaly flag at 2x trailing 7-bucket average

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Computes cancellation rate (cancelled orders / total orders) over a configurable window, broken down by cancelReason (CUSTOMER, FRAUD, INVENTORY, DECLINED, OTHER, STAFF). Surfaces shifts in cancellation patterns — for example, a spike in INVENTORY cancellations suggests a stock data integrity problem, while a spike in FRAUD suggests a coordinated attack. Read-only — no mutations.

Prerequisites

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

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
days_backintegerno30Lookback window for orders included in the analysis
bucketstringnodayTime bucket: day, week, or month
min_valuefloatno0Only include orders above this total value
reason_filterstringnoOptional filter to a single cancelReason
formatstringnohumanOutput format: human or json

Safety

ℹ️ Read-only skill — no mutations are executed. Safe to run at any time. The analysis uses cancelReason as recorded by Shopify or staff at cancellation time — accuracy depends on staff selecting the correct reason.

Workflow Steps

1. OPERATION: orders — query Inputs: query: "created_at:>='<NOW - days_back days>'", first: 250, select cancelledAt, cancelReason, displayFinancialStatus, totalPriceSet, pagination cursor Expected output: All orders created in the window (cancelled and non-cancelled) for rate calculation; paginate until hasNextPage: false

2. Partition orders into cancelled (cancelledAt != null) and not cancelled. Compute overall rate = cancelled / total.

3. For cancelled orders, group by cancelReason and by time bucket. Compute rate per bucket and per reason.

4. Identify time buckets where any single reason exceeds 2x its trailing 7-bucket average — flag as anomalies.

GraphQL Operations

# orders:query — validated against api_version 2025-01
query OrdersForCancellationAnalysis($query: String!, $after: String) {
  orders(first: 250, after: $after, query: $query) {
    edges {
      node {
        id
        name
        createdAt
        cancelledAt
        cancelReason
        displayFinancialStatus
        displayFulfillmentStatus
        totalPriceSet {
          shopMoney {
            amount
            currencyCode
          }
        }
        customer {
          id
          numberOfOrders
        }
        staffMember {
          id
          name
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Session Tracking

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

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Order Cancellation Analysis          ║
║  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):

══════════════════════════════════════════════
CANCELLATION ANALYSIS  (<days_back> days, by <bucket>)
  Total orders:        <n>
  Cancelled orders:    <n>  (<pct>%)
  Lost revenue:        $<amount>

  By reason:
    CUSTOMER     <n>  (<pct>%)
    FRAUD        <n>  (<pct>%)
    INVENTORY    <n>  (<pct>%)
    DECLINED     <n>  (<pct>%)
    OTHER        <n>  (<pct>%)

  Anomaly buckets (>2x trailing avg):
    <bucket-key>  reason=<reason>  rate=<pct>%
  Output: cancellation_analysis_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "order-cancellation-analysis",
  "store": "<domain>",
  "period_days": 30,
  "bucket": "day",
  "total_orders": 0,
  "cancelled_orders": 0,
  "cancellation_rate": 0,
  "lost_revenue": 0,
  "currency": "USD",
  "by_reason": {
    "CUSTOMER": 0, "FRAUD": 0, "INVENTORY": 0, "DECLINED": 0, "OTHER": 0
  },
  "anomalies": [],
  "output_file": "cancellation_analysis_<date>.csv"
}

Output Format

CSV file cancellation_analysis_<YYYY-MM-DD>.csv with columns: bucket_start, bucket_end, total_orders, cancelled_orders, rate_pct, reason_customer, reason_fraud, reason_inventory, reason_declined, reason_other, lost_revenue, currency

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
cancelReason is null on cancelled orderOlder order pre-dating reason fieldBucket into OTHER, log count
No orders in windowEmpty store or test domainExit with summary: 0 orders, 0% rate
Cancelled order created outside windowCancellation happened in window but order olderExcluded by design — analyses creation cohort

Best Practices

  • A baseline cancellation rate of 1–3% is typical; spikes above 5% warrant investigation.
  • Sustained INVENTORY cancellations indicate a sync issue between storefront stock and warehouse — pair this skill with multi-location-inventory-audit.
  • Sustained FRAUD cancellations indicate either improving fraud filters (good) or a coordinated attack (bad) — cross-reference with order-risk-report.
  • High DECLINED rates often correlate with checkout friction or expired payment methods — investigate alongside checkout abandonment data.
  • Run weekly to catch reason-mix shifts early; run after every major promotion to confirm cancellations did not spike.

Related skills

FAQ

What reasons does it break down by?

cancelReason values: CUSTOMER, FRAUD, INVENTORY, DECLINED, OTHER, and STAFF.

How does it flag anomalies?

It flags time buckets where any single reason exceeds 2x its trailing 7-bucket average.

This week in AI coding

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

unsubscribe anytime.