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

Shopify Admin Refund Rate Analysis

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

shopify-admin-refund-rate-analysis is a Claude Code skill that calculates Shopify refund rates by product, vendor, or period to identify quality and listing issues.

About

This skill analyzes Shopify orders with refunds to calculate refund rates by product, vendor, or time period. It surfaces which products or product groups generate the most refund activity so merchants can spot quality and listing issues. It is read-only and writes a refund rate CSV.

  • Calculates refund rate by product, vendor, or period to surface quality and listing issues
  • Read-only against the Shopify Admin GraphQL orders query with refund line items
  • Flags products whose refund rate signals a listing, quality, or expectation mismatch

Shopify Admin Refund Rate Analysis by the numbers

  • 7 all-time installs (skills.sh)
  • Ranked #826 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

shopify-admin-refund-rate-analysis capabilities & compatibility

Free; requires an authenticated Shopify store session with read_orders scope

Capabilities
refund rate analysis · returns analytics · product quality analysis · data analysis
Works with
github
Use cases
data analysis
Pricing
Free
From the docs

What shopify-admin-refund-rate-analysis says it does

calculates refund rate by product, collection, or period — identifies quality and listing issues.
SKILL.md
A refund rate above 5–10% on specific products typically signals a listing, quality, or expectation mismatch issue.
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-refund-rate-analysis

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

Calculate Shopify refund rate by product, vendor, or period to surface quality and listing issues.

Who is it for?

Finding which products or vendors drive the most refunds and may have a quality or listing problem

When should I use this skill?

You want to know which Shopify products or vendors have the highest refund rates

What you get

A refund rate per product, vendor, or period, with the overall store refund rate.

  • refund_rate CSV with group, group_name, total_units_sold, refunded_units, refund_rate_pct, total_refund_amount, currency

By the numbers

  • 1 GraphQL query operation (orders with refunds)
  • Default lookback window of 30 days
  • 3 group_by modes (product, vendor, period)

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Analyzes orders with refunds to calculate refund rates by product, time period, and channel. Surfaces which products or product groups generate the most refund activity. 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
group_bystringnoproductBreakdown: product, vendor, or period
min_ordersintegerno5Minimum orders per group to include in rate calculation
formatstringnohumanOutput format: human or json

Safety

ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.

Workflow Steps

1. OPERATION: orders — query Inputs: query: "created_at:>='<NOW - days_back days>'", first: 250, select refunds { refundLineItems }, lineItems, pagination cursor Expected output: All orders with refund data; paginate until hasNextPage: false

2. For each refunded line item: record product, vendor, quantity refunded, refund amount

3. Aggregate by group_by: calculate refund_rate = refunded_units / total_units_sold × 100

GraphQL Operations

# orders:query — validated against api_version 2025-01
query OrdersWithRefunds($query: String!, $after: String) {
  orders(first: 250, after: $after, query: $query) {
    edges {
      node {
        id
        name
        createdAt
        lineItems(first: 50) {
          edges {
            node {
              id
              quantity
              product {
                id
                title
                vendor
              }
              variant {
                id
                sku
              }
            }
          }
        }
        refunds {
          id
          createdAt
          totalRefundedSet {
            shopMoney {
              amount
              currencyCode
            }
          }
          refundLineItems(first: 50) {
            edges {
              node {
                quantity
                lineItem {
                  product {
                    id
                    title
                    vendor
                  }
                  variant {
                    id
                    sku
                  }
                }
              }
            }
          }
        }
      }
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Session Tracking

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

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: Refund Rate 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):

══════════════════════════════════════════════
REFUND RATE ANALYSIS  (<days_back> days)
  Orders analyzed:       <n>
  Orders with refunds:   <n>
  Overall refund rate:   <pct>%
  Total refunded:        $<amount>

  By <group_by>:
    "<name>"   Sold: <n>  Refunded: <n>  Rate: <pct>%
  Output: refund_rate_<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "refund-rate-analysis",
  "store": "<domain>",
  "period_days": 30,
  "orders_analyzed": 0,
  "orders_with_refunds": 0,
  "overall_refund_rate_pct": 0,
  "total_refunded": 0,
  "currency": "USD",
  "output_file": "refund_rate_<date>.csv"
}

Output Format

CSV file refund_rate_<YYYY-MM-DD>.csv with columns: group, group_name, total_units_sold, refunded_units, refund_rate_pct, total_refund_amount, currency

Error Handling

ErrorCauseRecovery
THROTTLEDAPI rate limit exceededWait 2 seconds, retry up to 3 times
No refunds in windowClean periodExit with 0% rate, expected
Deleted product on refund lineProduct removed after refundLog as "deleted product" in group

Best Practices

  • A refund rate above 5–10% on specific products typically signals a listing, quality, or expectation mismatch issue.
  • Use group_by: vendor to identify if quality problems are concentrated with a specific supplier.
  • Cross-reference high-refund products with return-reason-analysis to understand whether the issue is product quality, wrong size, or customer expectation.
  • Run before quarterly supplier reviews to support data-driven conversations about product quality and chargebacks.

Related skills

FAQ

How is refund rate calculated?

It is refunded units divided by total units sold, times 100, aggregated by product, vendor, or period.

What refund rate signals a problem?

A refund rate above 5 to 10 percent on specific products typically signals a listing, quality, or expectation mismatch issue.

Finance & Tradingfinanceecommerce

This week in AI coding

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

unsubscribe anytime.