The check, running. No signup, nothing to watch.
Two exports, lined up by order number: every paid order with no shipment against it, and what it’s worth. Open DevTools, watch the Network tab, then press the button: the check makes no requests, and this page has nothing loaded from anywhere but this domain — no analytics, no fonts from Google, nothing to watch you.
Two lines by email · no obligation · answered by the person who would do the work
Run it on your own two exports instead
Everything happens inside this browser tab. Column names are detected
automatically. Order numbers are normalised, so #1041, 1041 and
SO-1041 are treated as the same order.
Why it exists at all
Handing your full order book to a stranger is a reasonable thing to refuse. So the first look doesn't require it: you see the method work, and see your own number, before deciding whether we're worth an email.
It refuses to guess
Press the second button. When order numbers don't line up between two files, the check stops and prints nothing — because a broken join looks exactly like a catastrophic leak, and one of those is much more expensive to believe.
Same logic as the paid work
This is a straight port of the script used in the full audit. Same checks, same normalisation, same refusal threshold. Nothing is simplified for the website.
Two ordinary exports
Orders. From Shopify, a marketplace, or your ERP. Anything with an order reference, a date and a value. Customer names and addresses can be deleted first — the check never looks at them.
Shipments. From the 3PL portal or the WMS. Order reference and ship date are enough; tracking numbers help but aren't required.
Same period on both sides, ideally with a few days of overlap at the edges so orders placed at the end of the window aren't counted as missing when they simply shipped the next morning.
And what it deliberately doesn't
It does: normalise order references across formats, match the two sides, flag paid orders with no shipment, exclude the ones too recent to judge, and report the match rate so you know how much to trust the result.
It doesn't: upload anything, store anything, set cookies, or ask for an email. When the match rate is too low it prints a warning instead of a number.
If the free check finds nothing, that's a real answer: your seam is tight, and nobody needs to sell you anything. Plenty of brands are in that position, and it takes fifteen minutes to find out.
About the tool specifically
Is my file really not uploaded?
It isn't. The page is static and the matching is JavaScript running in your tab. The verifiable version of that claim: open your browser's developer tools, go to the Network tab, and run the check. You'll see no request carrying your data, because there's nowhere for it to go.
Why is the match rate shown so prominently?
Because it's the number that decides whether everything else means anything. If only 60% of order references line up between two files, the "missing" orders are mostly a formatting problem, not a leak. Tools that hide this produce impressive, wrong findings.
My export has different column names.
Column detection handles the common variants. If it can't find what it needs it says which column is missing rather than guessing — and if your format is unusual, send it over and we'll add it.
Two lines by email. No form, no calendar link.
Which two systems, roughly what size, what you have already tried. You get a straight answer the same working day — including “this is not something we would help with”, when that is the honest one.
Two lines by email · no obligation · answered by the person who would do the work