Guides
Imports You Can Replay and Undo
Incremental import receipts show what landed, what was skipped, and how to replay or undo without inventing history.
By Novus Stream Solutions Editorial Team. Published 2026-09-22. Last reviewed 2026-09-22. 5 min read.
Imports you can replay and undo
A short captioned walkthrough of fingerprints, receipts, replay, and reversible undo for imports.
Complete transcript
- 0:00Fingerprints and receipts make imports repeatable.
- 0:04Unchanged exports must not change totals.
- 0:08Replace and reset stay reversible.
- 0:12Orphaned counts are treated as defects.
Imports are where dashboards grow fiction. An overlap resolved without a word, a duplicated week, or an undo that only hides rows will poison every later chart. AI Stats treats imports as receipts: countable, replayable, and reversible within the rules the product actually ships.
A useful receipt names the source, the time range considered, how many sessions or rows were accepted, how many were skipped, and why skips happened. If two imports claim the same days, the receipt should make the de-duplication rule obvious.
Fingerprints exist so an unchanged export can be recognised as unchanged. If the same file produces a different total on a second pass with no product version change, treat that as a defect, not as a mysterious improvement.
Incremental imports exist so you can add last week without rewriting last year. They are not a licence to ignore conflicts. When the new file overlaps, the product should prefer explicit rules over last-write-wins folklore.
Start small. Import a fixture or a short real export first. Read the receipt completely before you import the larger archive. The cost of caution is minutes. The cost of a poisoned year is days of cleanup and lost trust in every chart.
Replay means running the same file again under the same adapter and comparing the receipt. If counts change with no file change, you found a bug or a version skew. Keep the file and the receipt together when you file that bug.
Replay is also how you teach someone else the workflow. Hand them the export and the previous receipt. Ask them to reproduce the accepted and skipped counts. If they cannot, the product failed the explanation job even if the first import looked fine to you.
Undo is allowed only when the product can remove the import's contribution without inventing a replacement history. If undo is unavailable for a source, the UI must say so rather than offering a decorative button.
Hiding rows is not undo. Soft-deleting without restoring prior aggregates is not undo. Undo means the dashboard returns to the pre-import evidence, including Unavailable tiles that the bad import had temporarily filled with fiction.
- Import a small fixture or a short real export first.
- Read the receipt completely before importing the rest.
- Check dashboard tiles that should move, and tiles that should stay Unavailable.
- Replay once to confirm stability.
- Only then import the larger archive.
When something fails, stop. Do not chain five more imports hoping the totals average out. Receipts do not average; they accumulate.
Imports are your exports. Know what leaves the device when you choose a sync path, and what stays local when you do not. The companion privacy articles spell out the network boundary; this article stays on receipt discipline.
Receipts explain how data arrived. Drawers explain how numbers are derived from what arrived. A surprising total needs both. Fixing only the formula while duplicated imports remain will leave the week wrong. Fixing only the import while the unit is misunderstood will leave the story wrong.
It refuses overlaps resolved silently. It refuses last-write-wins as a default excuse. It refuses undo buttons that only hide evidence. It refuses treating an unchanged export that changes totals as a normal Monday.
When an adapter changes fingerprint or skip rules, update this article in the same change set if the claim changes. Dated updated fields are claims about content, not about builds. Keep the film, captions, and transcript on blog paths, and leave advertising configuration alone.
An incremental import that silently doubled overlapping days. An undo that hid rows but left aggregates from the bad import. A replay of an unchanged file that changed accepted counts. A skip reason that said "duplicate" without naming which fingerprint matched.
Each of those failures teaches the wrong lesson if you only watch the headline total. The receipt is the lesson.
Store the export beside the receipt. Name the adapter version you used. Note whether undo was offered. Note which tiles stayed Unavailable on purpose. When the adapter changes, re-run the fixture before you trust production imports again.
Fixtures are not decoration. They are the only way to prove replay stability without gambling a real year of history.
Some sources will not support undo. Some overlaps will require an explicit replace rather than silently combining rows. Some privacy paths will refuse network sync even when a receipt looks clean. The UI must say those limits in the same place it celebrates a successful import.
You import January, then import a February file that accidentally includes the last three days of January again. A correct incremental path either skips those days with an explicit duplicate reason or offers a replace path that you confirm. An incorrect path raises January totals and leaves no receipt trail.
Replay of the February file after a correct skip should accept zero new January rows. Undo of February should remove February contribution and leave January exactly as the January receipt described. If undo leaves January inflated, undo is broken even if the button looked successful.
Keep that example as a fixture. Re-run it after adapter changes before you trust production again.
When someone asks why a number moved, answer with the drawer text, the adapter health state, and the import receipt ids in range. Do not answer with a screenshot of the digit alone. Digits without method notes create new tickets later.
If you cannot name those three artefacts, you are not ready to explain the week yet. Open the surfaces, then speak.
That support habit also protects you from optimistic screenshots. If adapter health was red when you captured the digit, say so in the same message. A green-looking tile with a red adapter is not a green week.
Related reading
Guides
How Every Number Is Calculated
Open the how-calculated drawers: what each dashboard figure means, which adapter could supply it, and why Unavailable is not a silent zero.
Guides
Unavailable Is Not Zero: Why Claude, Gemini, and ChatGPT Tokens Stay Blank
Consumer chat exports omit tokens, cost, and often model names. AI Stats renders those fields Unavailable, never a synthetic 0, and explains the capability reason underneath.
Guides
What Leaves Your Device When You Import an AI Export, and What Does Not
Your export is parsed in the browser before anything is uploaded. The exact path from file picker to database, including the limits.
Was this page helpful?
Your answer stays in this browser. It is not sent anywhere, and no account or cookie is involved.