Free open source tool

stuck-orders-cli

Feed it a Shopify orders CSV and get the exception queue nobody sees: paid but unfulfilled aging orders, partial fulfilments with leftover items, fulfilled orders with no tracking, and on-hold orders ageing invisibly.

View source on GitHub

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

Run it in your browser

Upload a Shopify orders CSV export, set the same options the CLI config accepts, and download the exact files the CLI writes: exceptions.csv and report.md. Nothing is uploaded anywhere.

Config key: days. Default 3, from examples/config.example.json.
Config key: now. Clear the field to use the current time, like a CLI run without a config.
Config key: preorderKeywords. Orders whose tags or note contain one of these are excluded.

What it does

Line item rows grouped by order, so multi-item orders are judged as a whole
paid_unfulfilled_aging: paid orders still unfulfilled past the age threshold
partial_fulfilled_leftover: partially fulfilled orders with item quantities still unfulfilled
fulfilled_no_tracking: orders marked fulfilled with an empty tracking number
on_hold_aging: on-hold orders ageing past the threshold, with preorders excluded by keyword
Outputs exceptions.csv sorted by age and order value, plus a summary report.md, fully offline

Install and usage

Requires Node.js 20 or newer. No packages to install.

git clone https://github.com/aamirtechs/stuck-orders-cli.git
cd stuck-orders-cli
node src/cli.js examples/orders.csv --config examples/config.example.json --out-dir out

This writes exceptions.csv and report.md to the output directory. Thresholds, the reference time and preorder keywords are configurable.