At a glance
A breakdown of returns in the window by theirReturn.statusvalue (OPEN,IN_PROGRESS,RESTOCKED,CLOSED,DECLINED,CANCELLED). Tells operations whether returns are flowing through the workflow or piling up in a state.
| What it counts | COUNT(returns) GROUP BY status. Each return-record (one per RMA, not per line item) is one count regardless of value. Shopify’s native Returns API surfaces this; pre-Returns-API stores only see refunds, not returns explicitly. |
| VAT / tax treatment | Not applicable, count metric. |
| Shipping | Not applicable; return-shipping costs sit on a separate refund-line. |
| Discounts | Not applicable directly; discounts are applied to the original order, returns simply unwind line items. |
| Refunds | A return CAN exist without a refund (waiting for goods to arrive at warehouse) and a refund CAN exist without a return (digital refund, courtesy credit). The two records are linked but not identical. |
| Cancelled / voided orders | Original order may be CANCELLED; the return state is independent. |
| Currency | Multi-currency safe (count metric). |
| Channels / sources | Returns originate from any channel: online store, POS, B2B. POS returns often skip the Returns API entirely (in-person refund at the till); those won’t appear here. |
| Time window | 30D (default rolling 30D, based on return-creation date) |
| Alert trigger | None on the card itself; pair with Refund Rate for trend alerting. |
| Roles | owner, operations |
Calculation
Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK womenswear DTC brand on Shopify Plus. Returns API enabled. 30D window 12 Apr 26 to 12 May 26.| Return status | Count | Share | Note |
|---|---|---|---|
OPEN | 142 | 23.4% | Customer raised RMA; goods not yet at warehouse |
IN_PROGRESS | 88 | 14.5% | Goods received; awaiting inspection / restock decision |
RESTOCKED | 311 | 51.2% | Inspected and restocked; refund issued |
CLOSED | 56 | 9.2% | Resolved without restock (damaged, refund only) |
DECLINED | 4 | 0.7% | Returned outside policy window |
CANCELLED | 6 | 1.0% | Customer changed mind; kept item |
| Total returns (window) | 607 | 100% |
- The
OPENbucket is the customer-experience risk. 142 customers are sitting on returns they’ve raised but not posted (or posted, not yet arrived). Every day a return sits open, customer-service volume rises. If the bucket grows week-over-week, the returns label flow is jamming. - The
IN_PROGRESSbucket is the operations risk. 88 returns received but not processed. This is real warehouse work-in-progress. Pair with warehouse capacity reports; ifIN_PROGRESSgrows >2× normal, the QC team is over capacity. RESTOCKEDshare is the health metric. 51% restocked-of-total is healthy for fashion (some items can’t be resold: worn, damaged, customer-soiled). Below 35% suggests quality control is too strict or the QC team is being conservative on damage flags.DECLINEDis small but important. 4 declined returns is the legitimate “no” count, customers who tried to return outside policy. IfDECLINEDexceeds 5% of total, your return policy may be ambiguous; customers think they’re entitled and learn they’re not. That generates negative reviews.CANCELLEDreturns aren’t refunds. Customer raised the return then changed their mind (or didn’t post). Treat these as signal: high cancellation rate means your return process is over-friction or customers are using “raise return” as a bargaining chip with support.- POS returns are missing. If the brand operates a London pop-up doing in-store returns, those refunds happen at the till and bypass the Returns API entirely. The full returns picture combines this card with the in-store refund count.
Sibling cards merchants should reference together
Return status is the workflow view. The companions:| Card | Why pair it with Return Status |
|---|---|
| Refund Rate | The £-weighted view. Returns = process; refunds = financial outcome. Both matter. |
| Refund Count | Order-count companion. Returns can be more than refunds (multiple refunds per return) or fewer (no-refund returns). |
| Refund Value | The £ side of the same coin. Pair to compute average return value. |
| Refunds Over Time | Trend overlay. A spike in OPEN returns this week predicts a refund-value spike in 1 to 3 weeks. |
| Top Refunding Customers | Customer-level drill-down on the people raising returns. |
| Refund-Rate Spike Alert | Real-time alert when return-rate goes above 2× baseline. |
| Top Products by Revenue | Cross-reference, are returns concentrated on top-revenue SKUs (a quality issue) or scattered (random fit/changes)? |
| Cancellation Rate | Cancellations and returns are both order-failure modes; their patterns often diverge meaningfully. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin:Shopify Admin → Orders → Returns (Shopify Plus / Shopify with Returns enabled)The Returns inbox shows every return record with status filter chips. Sum by status, the totals should match this card to within sync-lag tolerance (5 to 15 minutes). Older Shopify stores without the native Returns API see only refunds, not returns. For those merchants:
- Orders → Filter by
Refunded: lists orders with at least one refund. Not exactly the same population (returns can be open without refund). - Reports → Returns: legacy, less rich than the Returns inbox.
- Apps like Loop Returns, Returnly, ReturnLogic, AfterShip Returns: most large brands run a returns app. Those apps have their own status taxonomies; reconciliation against this card requires mapping the app’s statuses to Shopify’s 6 native states.
| Reason | Direction | Why |
|---|---|---|
| Returns API enabled? | If not, ours = 0 | Stores on Shopify pre-Returns-API see no return objects. The card will report empty buckets even when refunds are happening. Upgrade plan or migrate to a returns app that creates Return objects. |
| POS returns | Ours lower | In-store till refunds typically bypass the Returns API. They appear as refunds in the order but not as Return records. |
| Returns app integration | Either | If Loop / Returnly creates a Return in Shopify, the status maps but with custom labels (e.g. “Awaiting Pickup” → OPEN). Some apps don’t write back. |
| Time zone | Boundary days | UTC vs store time zone. |
| Sync lag | Ours lower for “today” | Most-recent 5 to 30 minutes of return-state updates may not be in the index. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
stripe.stripe_disputes | Indirect | A high OPEN return count often precedes Stripe disputes if returns aren’t refunded promptly; a 7 to 14-day lag is typical. |
zendesk.zd_ticket_volume (when connected) | Indirect | Customer-service tickets correlate with OPEN returns; a backlog here typically inflates ticket volume by 10 to 30%. |
Known limitations / merchant FAQs
My card shows zero returns. Are we really not getting any? Almost certainly not. Two likely causes:- Returns API not enabled on your plan. Stores on older Shopify plans or stores that use third-party returns apps without write-back may see zero native Return records, even when refunds are happening. Confirm by visiting Shopify Admin → Orders → Returns; if the inbox doesn’t exist or is empty, the API isn’t writing.
- All returns happen in-store. POS-based brands often process returns at the till, which creates a refund but not a Return record. Pair with Refund Count to verify refunds are happening.
RESTOCKED share?
Category-dependent:
- Apparel and footwear: 50 to 75%. Tried-on returns can mostly be resold.
- Beauty and skincare: 5 to 20%. Hygiene rules prevent restock.
- Furniture and homewares: 30 to 60%. Damage during transit is common.
- Electronics: 60 to 85%. Modern products typically resell after light QC.
RESTOCKED share is below the lower bound, your QC team may be over-strict or your return-condition rules are too tight.
Why does my OPEN bucket grow on Mondays?
Customers raise returns over the weekend (when they have time at home), but warehouse processing happens weekday-only. Mondays show every weekend-raised return that hasn’t moved yet. The bucket clears Tue-Wed. Structural; don’t react.
Should I refund before goods arrive?
Trade-off question. Refunding-on-RMA-creation is great for customer experience (instant trust) but exposes the brand to return-fraud (RMA raised, no goods sent, refund taken). Most brands sit somewhere in the middle: refund on receipt at warehouse, with an exception path for VIP customers or low-value items. The OPEN count is your population for this decision; if it’s persistently high, the policy is friction.
Why are some returns CLOSED not RESTOCKED?
CLOSED means resolved without restock: item damaged in transit, customer-soiled, missing parts. The refund still went out; the goods can’t be resold. Pair with destruction / write-off cost: high CLOSED share is direct margin loss.
What’s the difference between CANCELLED and DECLINED?
CANCELLED: customer raised the return then withdrew it (changed mind, kept item). Often happens when the return process feels too friction-y.DECLINED: brand rejected the return (outside policy window, incorrect items, fraud suspicion). The customer can’t push it through.
DECLINED returns; reviewers vent online when refused.
My subscriptions store, do recurring billings count if returned?
Each subscription billing is a separate order. If a customer returns the November box, that creates one Return for that one order; subsequent boxes in October/December are unaffected. The Return record links only to the specific billing.
Action playbook based on bucket health:
OPENgrowing: print-label friction; investigate whether your returns portal is failing to issue labels.IN_PROGRESSgrowing: warehouse capacity issue; escalate to operations.RESTOCKEDshare dropping: QC team change or policy tightening; confirm intentional or fix.CLOSEDrising: damage rate up; investigate transit packaging and returns-shipment quality.DECLINED>5%: policy clarity issue; rewrite returns FAQ in plain language.CANCELLED>3%: customer-changed-mind rate too high; returns process too cumbersome or customers using as bargaining chip.