Skip to content
PleeroInstall

How to find serial returners in your own order export

By Kamalesh Mahadev, founder of Pleero

Updated 4 min read

return

You don't need an app to find out whether a small group of customers is driving a lot of your refunds. You need an order export and a spreadsheet. This is the method I'd use on the last 12 months of a store's data.

It won't prove anything about intent. It will show you where to look, and that's most of the work.

Step 1: Export orders and refunds #

From your Shopify admin, export the last 12 months of orders. You want one row per order with these fields:

  • customer ID or email
  • order date
  • order total
  • refunded amount
  • financial status (paid, partially refunded, refunded)
  • shipping address

If you handle returns in a separate tool or a Flow-tagged workflow, export that too, so you can see which refunds were returns and which were something else (a cancellation, a goodwill gesture, a "never arrived" claim). Mixing those together will mislead you.

Step 2: Group by customer #

Build a pivot table with the customer as the row. For each customer, calculate:

  • number of orders
  • number of orders with a refund
  • return rate (refunded orders ÷ orders)
  • total spent and total refunded
  • refund value as a share of spend

Then work out the same figures for your whole store. Your store average is the yardstick. A customer's return rate means very little on its own, but it means something against your own baseline.

Ignore customers with one or two orders at first. One order with one return means every order was returned, and it tells you nothing. Sort by order count, and start with customers who have enough history to show a pattern.

Step 3: Sort two ways #

Sort once by return rate and once by total refunded value. The two lists are not the same.

The first surfaces behaviour. The second surfaces money. A customer who returns most of a few small orders and a customer who returns a smaller share of many large orders are different problems, and you may handle them differently.

The customers who appear near the top of both lists are where to spend your attention.

Next: Pattern or one-off? #

This is the judgement part. Look at the rows behind each name and ask:

  • Repeat over time. Is it spread across many months, or one bad week around a single event?
  • Same shape each time. Is the order the same each time: buy several, send most back, keep one?
  • Condition. Do your warehouse notes mention items coming back worn, washed, used, or with the product missing?
  • "Never arrived" claims. Have they claimed an order never arrived more than once, especially where tracking shows delivery?
  • Shared details. Does one shipping address appear under several customer accounts?

One of these is a coincidence. Several of them in the same account is a pattern. A long run of identical behavior is a stronger signal than one dramatic order.

A high return rate is not abuse #

This is the caveat that matters most, particularly in apparel and footwear.

Fit is hard to judge online. A customer might order two sizes, keep one and return the other. A high return rate in sizing-sensitive categories can describe a loyal, high-spending customer who happens to be careful about fit.

So before you act on any number, check:

  • Are the returns for size or fit, in sellable condition?
  • Do they also buy a lot and keep a lot?
  • Is their refund value high relative to their spend, or just their order count?

The aim isn't to find everyone who returns things. It's to find the small group whose returns cost you money without any of the customer value that usually comes with it. Treat the spreadsheet as a list of accounts to look at more closely, not a list of verdicts.

What the policies I checked look like #

For context on how stores set their policies, here is what I found on my own outreach list. Of the 529 Shopify stores on my outreach list (US, Canada, Australia and the UK) whose public return policy pages I checked:

  • 256 state a return window in days, and 184 allow 30 days or more to return (as of 2026-10-30).
  • 119 state that some items are final sale.
  • 61 offer free returns.
  • 45 state a restocking fee on returns.

That's one list, not a picture of every store. Shorter windows, final-sale categories and fees are all ways a store can set its policy, and they apply to every customer.

Handling what you find #

Once you have a short list, I'd keep the response proportionate:

  1. Keep the policy as it is for everyone. Don't punish the whole customer base for a few accounts.
  2. Add a light step for the accounts that show a pattern. Asking for a photo of the item before refunding is reasonable, and can be worded neutrally: "It helps us sort this out quickly."
  3. Never accuse. Describe what the order history shows, not what you think the person is.
  • Protect your best customers. Keep a note of high-value accounts that return a lot for fit reasons, so nobody on that list gets caught up in a rule by accident.
  • Always route defective or damaged items to a person. Those are different cases and shouldn't be restricted.

Repeat the export every quarter. A longer history can show whether something was a one-off or a pattern.

If you'd rather not do this in a spreadsheet #

Pleero is a Shopify app for return and refund abuse protection, built to let a store keep a generous return policy without applying it to the few people abusing it. It scores each return request against that customer's history in your own order data, with plain-English reasons. If you'd like to see the result on your own store, the back-test is free and read-only: it reads the last 12 months and changes nothing.