โ† All articles
October 14, 2026 ยท Ibrahim Abiade

The returns system I'd build in Shopify: rules decide what qualifies, people decide what goes back on the shelf

Illustration of a returned parcel with a return arrow beside a return tracker showing Requested and Received checked, Graded highlighted as idle three days, and Refunded still open, captioned Returned.

Returns are where a lot of small brands lose track. The customer has sent the parcel back, support says it is with the warehouse, the warehouse says it is waiting on a decision, and the refund sits.

Nobody is being lazy. The return just passes through four hands and none of them owns it end to end.

This is the returns system I'd build in Shopify. Rules decide what qualifies, automations make every return visible, and a person decides what goes back on the shelf and what gets refunded.

Table of contents
  1. The problem: returns with no owner
  2. How the system is put together
  3. What it solves
  4. The effect on the business, and how to measure it
  5. Build checklist

The problem: returns with no owner

A return touches the customer, support, the warehouse, finance and inventory. In most small teams, each one sees only its own step.

So returns stall in the gaps. A request waits for approval. A parcel arrives and sits unopened. An item gets restocked before anyone checks it.

Shopify's own reverse logistics guide makes the same point: give the whole returns workflow one owner, set internal deadlines for each stage, and only restock items that pass inspection.

The money side slips too. Shopify's help pages say return fees are not taken off refunds automatically. If nobody knows that, the brand pays the return label and refunds in full.


How the system is put together

It has six parts: the rules, the request, the tracker, receiving, the refund, and who owns what.

Part 1: rules decide what qualifies

Shopify's return rules live under Settings, Policies. They set the return window, the return shipping fee, an optional restocking fee, and final sale items that can't be returned.

You can also override the window for specific collections, products or variants. Shopify says the shortest window wins if an item falls under more than one override.

I'd write these rules once, with the founders, and treat them as the policy. Support should never have to decide eligibility from memory.

Part 2: the customer asks in one place

With self-serve returns, customers request a return from their order status page. Shopify lets you customize the request form to collect the return reason and the product's condition.

That form is the most useful data in the whole system. Every later report on why things come back depends on the reason being captured here, not in a support email.

Part 3: every request lands in the tracker

Shopify Flow has a "Return requested" trigger. I'd use it to add an order tag and send an internal email, and log the return as a row in the exceptions tracker from my order-to-fulfillment system.

Flow also has triggers for "Return processed" and "Refund created". Those close the loop, so the tracker shows each return moving from requested to refunded.

One thing I checked: Flow's actions list has no action to approve or decline a return. Shopify's self-serve returns page describes reviewing each request in the admin. So approval stays with a person, and that is fine. The rules have already done most of the deciding.

Part 4: receiving and inspection

When the parcel arrives, the warehouse inspects it before anything is restocked. Shopify's reverse logistics guide suggests written grading rules with visual examples, so every item is judged the same way.

Each grade gets a decided outcome: back to stock, sell at a discount, clearance, back to the manufacturer, or write off. Nobody should be inventing that on the day.

When the return is processed in Shopify, you choose which items to receive and can select a location to restock at. Only items graded as sellable get restocked. That keeps the stock count honest, which matters for days-of-cover alerts.

Part 5: the refund, done the same way every time

Shopify lets you refund to the original payment, store credit, or both. The policy should say which applies when, so the choice isn't made case by case.

Shopify's return rules page says return and restocking fees are not deducted from the refund automatically. They have to be deducted when the refund is created. I'd make that a line on the refund checklist.

For exchanges, Shopify's processing page says exchange items waiting on payment are put on hold, and you can release fulfillment before payment arrives. I'd decide in advance who is allowed to do that.

Part 6: what is automatic and what a person does

Automatic: eligibility and fees from the return rules, the request form, tagging and logging through Flow, and status updates as returns are processed and refunded.

A person: approving requests, inspecting and grading items, choosing what to restock, and issuing the refund with the right deductions.

Ownership: one returns owner, usually operations, from request to refund. Support owns customer replies. The warehouse or 3PL owns inspection against the written grades. Founders own the policy itself.


What it solves

Lost returns. Every request is a row with a status. Nothing exists only in an inbox.

Slow refunds. A return that hasn't moved shows up in the tracker, and the owner chases it.

Wrong stock counts. Only inspected, sellable items go back on the shelf.

Fee leakage. Fees are deducted by checklist, not by memory.

Guessing why things come back. Return reasons are captured at the source, so you can see them by product.


The effect on the business, and how to measure it

I'm not going to quote results here. I don't have published numbers for this build, and I won't make them up.

The target I'd set comes from my operations setup plan: nothing sits for more than two days without being chased. Applied to returns, no stage of a return should be idle longer than that. That is a target, not a result.

Here is what I'd baseline for a month before building, and compare after.

Request to refund. Days from "Return requested" to "Refund created". This is what the customer feels.

Arrived to processed. Days from the parcel arriving to the return being processed. This is where returns usually stall.

Returns idle over two days. A count from the tracker, checked every week.

Fees missed. Refunds where a fee applied by the rules but was not deducted.

Restock errors. Items restocked and then found unsellable, from stock counts or customer complaints.

Return rate by product and reason. Shopify's guide suggests tracking returns by product and looking for root causes, like an inaccurate description.

Support contacts per return. "Where is my refund" messages should fall if the system is working.


The bigger picture: returns are a feedback loop

A returns system isn't only about getting money back to customers on time. It is the cleanest data a brand has on what's wrong with its products and its descriptions.

If one product keeps coming back as "smaller than expected", that is a size chart fix, not a returns problem. You only see it if the reason was captured and someone looks.

It also links to the other systems. Return counts feed the Friday founder update, restocks feed the stock alerts, and policy changes like tax on return shipping fees land on a process that already has an owner.


Build checklist

  • Baseline request-to-refund days, idle returns and missed fees for a month.
  • Agree the return policy with the founders: window, fees, final sale items, refund method.
  • Set it in Shopify's return rules, including any window overrides by collection, product or variant.
  • Turn on self-serve returns and add return reason and condition to the request form.
  • Build a Flow workflow on "Return requested" that tags the order, emails the returns owner and logs a tracker row.
  • Add workflows on "Return processed" and "Refund created" to update that row.
  • Write grading rules with photos, and a decided outcome for each grade.
  • Restock only items graded sellable, at the right location.
  • Put fee deductions on the refund checklist.
  • Decide who can release exchange items before payment.
  • Name one returns owner and review the tracker weekly.
  • Report return rate by product and reason every month.

Most of this is setup work you do once. After that, the rules and Flow keep every return visible, and people only spend time on the parts that need judgement.

Source: tool details checked against Shopify Help Center pages on return rules, self-serve returns, processing returns, Flow triggers and Flow actions, and process advice from Shopify, Reverse Logistics Guide, Elise Dopson. The system design and the expected effects are my own operator view.


Frequently asked questions

Can Shopify Flow approve returns automatically?

Not with a built-in action. Flow's actions list has no approve or decline return action. Flow can react to a return being requested, processed or refunded, and tag, email or log it. Approval stays with a person in the admin.

Are return fees taken off the refund automatically?

No. Shopify's return rules page says return and restocking fees are not deducted automatically, so they have to be deducted when the refund is created.

Should every returned item go back into stock?

Only items that pass inspection. Write grading rules, decide an outcome for each grade, and restock only sellable items at the right location.

What should I measure?

Days from request to refund, days from arrival to processing, returns idle over two days, missed fees, restock errors, return rate by product and reason, and support contacts per return. Baseline them before building and compare after.