Export and the audit trail

An import file that has already been checked by the thing that checks imports.

The output is run back through the same validator that read your supplier file. It comes back with zero blockers, or it is not an export.

Validated against our own engine

The same nineteen rules, run on the file we produced. A tool that validates the input and not the output is only checking somebody else’s work.

Chunked on bytes, not on rows

Platform upload limits are measured in file size, so the split is too — and it always falls between handle groups. A group split across two uploads becomes a merged product and a deleted variant, silently.

An audit CSV alongside it

Optional, and the reason this is a product rather than a script: one row per value, stating whether it was supplied, inferred or abstained, and why.

You see every change before it becomes a file

Before anything is exported there is a row-by-row diff of the original against the result — on catalogues of ten thousand rows and more, scrolling smoothly, because a review screen that stutters is a review screen nobody uses.

Filter to errors only, or to inferred values only. Accept in bulk when a change is obviously right, edit in place when it is not, and re-run just the rows that failed rather than the whole file. A cell that has already been answered is not paid for twice.

Nothing reaches an export that you have not had the opportunity to look at. That is the same gate the pricing stage uses, for the same reason: the expensive mistakes in a catalogue are the ones that look fine.

What the audit CSV answers

Per value
Supplied, inferred, or abstained — with the reason for an abstention.
Per row
What came in, what went out, and which rule or stage changed it.
Per run
Exact counts in and out. If those two numbers disagree, that is the finding — it is not something you should have to derive from a spreadsheet afterwards.

How provenance is decided upstream

Shopify today. WooCommerce is not built.

Partly built

Shopify is built and round-trips through our own validator with zero blockers. WooCommerce is not built, and is deliberately blocked on a real WooCommerce install — we will not write a target grammar from documentation again. We did that twice, and the documentation was wrong both times.

It is a slower answer than adding a second export button and finding out later. The first time we wrote import rules from a platform’s own documentation, the documentation was wrong; the second time it was wrong differently. The rules we publish now come from breaking a real store on purpose and recording what it actually said. That is the whole origin story, and it is the reason this paragraph exists instead of a checkmark.

This stage in the pipeline · What an export costs

Check the file first. The export can wait.

The Pre-Flight Report is free and needs no account, and it will tell you whether any of this is a problem you actually have.

Check a file free