Free open source tool

returns-pareto

Turn Shopify or WooCommerce orders and refunds CSV exports into a returns Pareto: which SKUs, reasons and regions actually drive returns, plus repeat returners and double-refund flags. Offline, no store login needed.

View source on GitHub

Run returns-pareto in your browser

Runs fully in your browser, files never leave your device.

Drag and drop your orders and returns CSV files here, or use the pickers below.

What it does

Pareto tables by SKU, by reason, by SKU and reason combined, and by region, each with counts, refund amounts, share and cumulative share
Free-text return reasons normalised into buckets (sizing, damaged, wrong item, changed mind, late delivery, quality, other) with an editable keyword map
A repeat returner table built from hashed customer ids, so no real customer data is needed
A double-refund flag list: orders that carry both a normal return row and a chargeback marker row
Outputs report.md and pareto.csv, fully offline on plain CSV exports

Install and usage

Requires Node.js 20 or later. There are no dependencies to install.

git clone https://github.com/aamirtechs/returns-pareto.git
cd returns-pareto
node src/cli.js --orders examples/orders.csv --returns examples/returns.csv --out-dir out

Pass --reason-map to use your own keyword map tuned to your store language. Customer columns accept a customer id or a hashed email column: hash identifiers first, as the examples do, and never put real customer emails into a shared report.