
Shopify Admin Return Processing Sla
- 7 installs
- 173 repo stars
- Updated June 26, 2026
- 40rty-ai/shopify-admin-skills
shopify-admin-return-processing-sla is a Claude Code skill that measures average return-to-refund time and flags SLA breaches from Shopify returns data.
About
shopify-admin-return-processing-sla calculates how long returns take from request to refund and flags orders that breached a configurable SLA threshold. A returns or operations owner runs it to monitor processing speed and find the longest-pending open returns. It is read-only and outputs both a summary and a CSV.
- Measures average time from return request to refund completion
- Surfaces SLA breaches against a configurable sla_days threshold
- Read-only; exports a return_sla CSV with per-return processing days
Shopify Admin Return Processing Sla 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)
shopify-admin-return-processing-sla capabilities & compatibility
Free; needs a Shopify CLI session with read_orders and read_returns scopes
- Capabilities
- returns analytics · sla reporting · return processing
- Use cases
- data analysis
- Runs
- Runs locally
- Pricing
- Free
What shopify-admin-return-processing-sla says it does
Calculates the time from return request creation to refund issuance for all completed returns in a period.
Read-only skill — no mutations are executed. Safe to run at any time.
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-return-processing-slaAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 7 |
|---|---|
| repo stars | ★ 173 |
| Last updated | June 26, 2026 |
| Repository | 40rty-ai/shopify-admin-skills ↗ |
What it does
A returns team runs it to report average return-to-refund time and catch SLA breaches over a lookback window.
Who is it for?
Returns and ops teams tracking return-to-refund SLA compliance
Skip if: Modifying or issuing refunds (this skill is read-only)
When should I use this skill?
You need to report return processing speed or find returns breaching the refund SLA
What you get
An SLA report with average processing days, breach counts, and the longest-pending open returns.
- return_sla CSV report
- average processing time and SLA-breach summary
By the numbers
- default 30-day lookback window
- default 5-day SLA threshold
Files
Purpose
Calculates the time from return request creation to refund issuance for all completed returns in a period. Surfaces the average processing time, identifies orders that breached a configurable SLA threshold, and lists the longest-pending open returns. Read-only — no mutations.
Prerequisites
- Authenticated Shopify CLI session:
shopify store auth --store <domain> --scopes read_orders,read_returns - API scopes:
read_orders,read_returns
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| days_back | integer | no | 30 | Lookback window for return requests |
| sla_days | integer | no | 5 | Maximum acceptable days from request to refund |
| format | string | no | human | Output format: human or json |
Safety
ℹ️ Read-only skill — no mutations are executed. Safe to run at any time.
Workflow Steps
1. OPERATION: returns — query Inputs: query: "created_at:>='<NOW - days_back days>'", first: 250, pagination cursor Expected output: Returns with createdAt, status, refunds { createdAt }, order { name }
2. For each completed return: calculate processing_days = refund.createdAt - return.createdAt
3. Identify SLA breaches: processing_days > sla_days
4. OPERATION: orders — query Inputs: Filter for orders with return_status:open to find pending returns exceeding SLA Expected output: Open return orders with request dates
GraphQL Operations
# returns:query — validated against api_version 2025-01
query ReturnProcessingTimes($query: String!, $after: String) {
returns(first: 250, after: $after, query: $query) {
edges {
node {
id
status
createdAt
order {
id
name
}
refunds(first: 3) {
id
createdAt
totalRefundedSet {
shopMoney {
amount
currencyCode
}
}
}
returnLineItems(first: 10) {
edges {
node {
quantity
returnReason
}
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}# orders:query — validated against api_version 2025-01
query OrdersWithOpenReturns($query: String!, $after: String) {
orders(first: 250, after: $after, query: $query) {
edges {
node {
id
name
createdAt
returnStatus
returns(first: 5) {
edges {
node {
id
status
createdAt
}
}
}
}
}
pageInfo {
hasNextPage
endCursor
}
}
}Session Tracking
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Return Processing SLA ║
║ 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):
══════════════════════════════════════════════
RETURN PROCESSING SLA (<days_back> days, SLA: <sla_days> days)
Returns analyzed: <n>
Avg processing time: <d> days
Within SLA (<sla_days>d): <n> (<pct>%)
SLA breaches: <n> (<pct>%)
Open returns pending: <n>
Longest open returns (no refund yet):
Order <name> — requested <n> days ago
Output: return_sla_<date>.csv
══════════════════════════════════════════════For format: json, emit:
{
"skill": "return-processing-sla",
"store": "<domain>",
"period_days": 30,
"sla_days": 5,
"returns_analyzed": 0,
"avg_processing_days": 0,
"within_sla_count": 0,
"sla_breach_count": 0,
"open_pending_count": 0,
"output_file": "return_sla_<date>.csv"
}Output Format
CSV file return_sla_<YYYY-MM-DD>.csv with columns: return_id, order_name, return_requested_at, refunded_at, processing_days, sla_breach, return_status
Error Handling
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| No refund on completed return | Exchange-only resolution | Exclude from time calculation, note as exchange |
| No returns in window | No return activity | Exit with summary: 0 returns |
Best Practices
- Set
sla_daysto match your published returns policy (e.g., "refunds processed within 5 business days"). - Use the open returns list to proactively contact customers whose returns have been waiting more than
sla_days— reducing WISMO-style "where's my refund" tickets. - Run weekly as a returns ops health check; pair with
return-reason-analysisto correlate slow processing with specific return reason types. - Note that
processing_daysmeasures calendar days; adjust your SLA threshold accordingly if your team only processes returns on business days.
Related skills
FAQ
What is the default SLA threshold?
The sla_days parameter defaults to 5 days from return request to refund.
Does it change any data?
No, it is read-only with no mutations, safe to run at any time.