A PO tracker for Shopify reorders: build it in Sheets, read it weekly
A purchase order tracking template for Excel or Google Sheets: 9 columns, a filled example, and the 15-minute weekly read that catches late POs.
InventoryX is in development and not available today. ClearStock is the live Shopify app.
Four purchase orders are open right now, worth an estimated $4,000 in inbound stock, and two of the four are past their expected arrival. If you can recite all four PO numbers, their values, and which two are late without opening email, you don't need this article. If you can't — and most merchants ordering from five or six suppliers can't — the tracker below takes one evening to build and about fifteen minutes a week to run.
The gap this fills is specific: email holds the POs, memory holds the arrivals, and nothing anywhere holds the two together. So stock gets double-ordered (the PO was already placed, nobody remembered), short shipments go unclaimed for weeks, and reorder decisions get made as if inbound stock didn't exist. A PO tracker spreadsheet is the fix because it's one artifact with one job: every open order, its money, and the date it needs you.
One row per PO, not per SKU
The most common mistake in building an open po tracker is designing it bottom-up — one row per SKU ordered. That produces a 200-row sheet nobody reads past week two. The portfolio view runs top-down: one row per purchase order, with the detail (line items, quantities, prices) living in the PO document itself, whether that's a PDF, a Shopify draft PO, or the supplier's confirmation email.
The tracker answers three questions the individual POs can't: What's in flight, in total? What's late? And what date does each row need me to act — not arrive, act? Those are the only three answers a weekly buying session needs.
The nine columns that do the work
| Column | What it holds | Why it's here |
|---|---|---|
| PO # | Your identifier | Ties the row to the document and the supplier conversation |
| Supplier | Who owes you the stock | Groups the sheet when a chase call covers three orders |
| Ordered | Date sent | The clock starts here |
| Quoted | Supplier's promised days or date | The commitment you hold them to |
| Expected | Quoted adjusted by their slip factor | The realistic date, which you own |
| Status | Ordered / Partial / Landed / Closed-short / Cancelled | The state, not a vibe |
| Value (estimated) | Units × unit cost, labeled estimated | The cash exposure number |
| Received | Units and value actually received | Catches shorts and partials |
| Action date | When this row needs you | Sorts the whole sheet into a to-do list |
Two columns deserve explanation because they're the difference between a tracker and a list. Expected arrival is yours, not the supplier's: if a mill has quoted 30 days and landed in 34–36 on the last three orders, your expected date is quoted plus six, and every downstream decision runs on your number. Action date is not the arrival date — it's the last date something useful can still happen: confirm a ship date, chase a remainder, file a short-shipment claim, or advance a reorder that's now blocked.
A filled example: four POs, one Friday read
Here's the tracker as it looks on Friday, November 6, 2026, for a store selling dog gear, hiking socks, and enamel pins:
| PO # | Supplier | Ordered | Quoted | Expected | Status | Value (est.) | Received | Action date |
|---|---|---|---|---|---|---|---|---|
| PO-1147 | Northline Sew Shop (harnesses) | Oct 21 | 15 days | Nov 5 | Partial (84/120) | $2,940 | $2,058 | Nov 12 — chase remainder |
| PO-1152 | Koshu Mills (hiking socks) | Oct 6 | 30 days | Nov 11 | Ordered | $2,160 | — | Nov 10 — confirm ship date |
| PO-1155 | Pinhouse Co. (enamel pins) | Oct 28 | 21 days | Nov 18 | Ordered | $640 | — | Nov 10 — first check-in |
| PO-1158 | StandFast (phone stands) | Oct 2 | 12 days | Oct 14 | Closed-short | $1,584 | $1,267 | Done — credit filed Oct 20 |
The arithmetic behind each row:
PO-1147 (harnesses). Ordered Oct 21 plus a 15-day quote lands Nov 5. The first truck arrived with 84 of 120 units on Nov 4; the balance is on a second truck. Value: 120 × $24.50 = $2,940 estimated; received so far 84 × $24.50 = $2,058. The action date is Nov 12 — seven business days of grace, then the chase email goes out with the PO number and the receipt count attached.
PO-1152 (socks). Ordered Oct 6 plus a 30-day quote gives Nov 5, but this mill has run five days late on each of the last three orders, so the expected date is Nov 11. Action date Nov 10: a ship-date confirmation request, sent before the order becomes late rather than after.
PO-1158 (phone stands). Quoted 12 days, expected Oct 14, actual arrival Oct 16 with 192 of 240 units. Received value: 192 × $6.60 = $1,267; the missing 48 units are $394.80 of claim, filed Oct 20, tracked as "Closed-short" until the credit lands. The row stays in the sheet until the money does.
Total in flight as of Nov 6: $2,940 + $2,160 + $640 + $1,584 = $7,324 estimated ordered, minus $3,325 received ($2,058 + $1,267), leaving about $3,999 estimated still inbound. That single number is the answer to "how much stock is on the water" that the P&L can't give you mid-month. The cash calendar turns the tracker's rows into dated payment events: the inventory cash flow calendar takes these same open rows and maps every deposit, balance, and freight bill to the week it leaves your bank.
The weekly read: three questions, fifteen minutes
The tracker earns its keep in a fixed weekly session — Friday afternoon works, before the weekend's orders distort anything. Three questions, in order:
What's late? Sort by action date; everything due is a chase conversation, in writing, with the PO number in the first line. The escalation rule: an order more than three business days past its expected date with no tracking update gets a dated chase email, so the paper trail exists if the order eventually matters to a dispute.
What's partial? Any "Partial" row gets its received quantities entered in Shopify the day the truck lands — the storefront sees available stock, and the incoming remainder stays visible as incoming. How Shopify displays those incoming quantities is its own mechanic; the inventory-states guide covers what's available, committed, and incoming, so the tracker stays a planning document rather than a second inventory system.
What does inbound change about next week's buying? This is the part that ties the tracker to reorders. Incoming stock is not on-hand, but it's also not nothing: a reorder suggestion for the harnesses might say buy 120, yet 36 units are still due from PO-1147 — so the net order is 120 − 36 = 84. Subtract inbound before ordering anything; the days-of-cover math that generates the suggestion in the first place is its own discipline, and the tracker just feeds it the inbound subtraction.
When the sheet stops being enough
The tracker holds comfortably to about 20 open POs and five to eight suppliers — roughly a year of growth for most stores reading this. Past that, the failure isn't arithmetic, it's attention: action dates slip because one person can't read 30 rows a week, and partial receipts get keyed into Shopify but not the sheet, or the reverse.
The next rungs are already built. Shopify includes native purchase orders with receiving — verified in the admin as of October 2026 — and the PO read API (GraphQL, shipped September 17, 2026) finally lets apps read those POs, which is quietly ending the era of re-keying orders into a tracker. If the whole reorder decision is outgrowing spreadsheets generally, the graduation thresholds are in the when-spreadsheets-stop-working diagnostic. It's worth being honest that InventoryX's weekly Buying List doesn't yet read open POs either — you'd subtract inbound exactly as the sheet teaches — so this artifact outlives the app decision.
Where this ends and the PO documents begin
The tracker deliberately doesn't hold what the other artifacts own. The fields a single PO needs — line items, prices, terms, the numbered clauses that prevent disputes — live in the purchase order template. The states a PO moves through from raised to closed, and who does what in each, live in the purchase order process guide. Keep the sheet pointing at those documents; never copy their contents into it.
Common questions
What columns should a purchase order tracker have? Nine: PO number, supplier, ordered date, quoted arrival, expected arrival, status, estimated value, received units and value, and action date. The two that make it work are expected arrival (your adjusted date, not the supplier's promise) and action date (when the row needs you, which is earlier than the arrival date for anything that might go wrong).
How is this different from the purchase order itself? The PO is one order's contract: line items, prices, terms. The tracker is the portfolio: every open order side by side, with cash exposure and action dates. Detail lives in the PO document; the sheet holds one summary row per order and a link to the document, never a copy of its contents.
How often should I update a PO tracker? Touch it in the fixed weekly session — fifteen minutes, same day each week — plus the day any truck arrives, to key received quantities. Daily updates decay into never. The weekly rhythm works because chase emails, partial receipts, and reorder subtractions all batch cleanly into one sitting.
Should I track POs in Shopify instead of a spreadsheet? Native Shopify POs handle the document and receiving well as of October 2026, but the portfolio view — total in flight, lateness, action dates across suppliers — still needs a report or sheet on top. Many stores run both: Shopify holds the orders, the sheet reads across them. Past roughly 20 open POs, consolidate to one system.
What do I do when a PO arrives short? Key what landed into Shopify immediately, move the row to a "Closed-short" status rather than closing it, and file the claim with the PO number and counts within a week. The row stays open until the credit or replacement lands — money you've paid for stock you don't have should never silently disappear from the sheet.
Next step
Build the nine-column sheet tonight and enter your last five POs — including the ones already landed, so the status column gets exercised before it matters. Then put the fifteen-minute read on Friday's calendar and sort by action date, not arrival date. When you're ready to formalize the documents the rows point at, the purchase order template has every field with a filled example.