Twenty-nine kinds of task are computed from live store data, each arriving with what it is worth and when it is due.
Work hides in five places: an inbox, a spreadsheet, a dashboard somebody built once, a colleague's memory, and the orders page you scroll until something looks wrong.
Every row here is a query that started matching. Ship the order and it disappears, because the query stops matching — there is nothing to tick off and nothing to archive.
$182.40 · paid 2 hours ago
Every order carries its payment, fulfilment and refund history on one record.
| # | Date | Status | Customer | Revenue |
|---|---|---|---|---|
| 1 | 12 Mar | Paid | Maya Okonkwo | $182.40 |
| 2 | 12 Mar | Refunded | Leo Martins | $96.00 |
| 3 | 11 Mar | Paid | Priya Shah | $248.10 |
| 4 | 11 Mar | Disputed | Dana Feld | $74.00 |
Orders to ship, refunds pending, payouts, disputes. Each one carries what it is worth, so the biggest number is not buried under the newest one.
Stockouts, low stock, sales and coupons ending. A coupon shows the revenue it has driven so far, so you know what expiring will cost.
Webhooks, integrations, emails, imports. An endpoint that keeps failing is disabled and surfaced rather than retried into the dark.
The queue is a read of the same tables the store runs on, so it is as current as the last order.
Every task's count and the list behind it are built from one query. If the badge says three, the page shows three.
A badge said one order needed shipping. The page it opened showed none.
The count and the list read the same rows, so they cannot disagree.
A test pairs each task kind's detection with the filter its link opens, so the two cannot drift apart.
localhost:3000/admin
Computed, never stored
Nothing flips a status at 2am
The rows the store runs on
The whole queue, included
Tasks disappear when the work is done. There is nothing to mark complete.
Twenty-nine kinds of task, each showing what it is worth and when it is due.
Payment, fulfilment, refund and support history sit on the same record.
Payments, email, storage and analytics each work through their own interface.
The queue is computed from your own data the moment you point Litestore at a database.