Moving off spreadsheets without losing your history
Published 30 August 2026
The reason shops stay on a system they have outgrown is rarely the system. It is the twenty years of jobs inside it — the answer to “what did we charge them last time”, which is the single most valuable thing an established shop owns. This guide is about moving without losing that, and about the mistakes that quietly corrupt an import.
Decide what history is actually for
Before exporting anything, be clear about why you want the old data. Almost always the answer is lookup: what did we quote this customer, what did we make for them, what did we charge. That is a much smaller requirement than “bring everything across”, and it changes what you need.
You are not migrating a working system. You are migrating a reference. Old jobs should not reappear on a production board, should not reserve stock, and should not generate invoices. If they do, you have not imported your history — you have restarted twenty years of production.
- History is for lookup, not for re-running
- Imported work should never hit the production board
- Tag imported records so it is obvious what came from where
- Decide how far back is worth it — beyond that it is storage
The GST trap
This is the one that ruins imports, and it is silent. Many older systems store prices including GST. Most modern systems store them excluding it. Import one into the other without checking and every figure you brought across is out by ten per cent — not obviously wrong, just quietly wrong, in the exact records you will use to price the next job.
Check it before you load, on a job you remember. Take a quote whose final invoice you can recall and see whether the stored line total matches the ex-GST or the inc-GST figure. It is two minutes of work and it is the difference between a useful archive and a misleading one.
- Establish whether the old system stored inc- or ex-GST prices
- Verify against a job you personally remember
- Check the header total against the sum of its own lines
- Fix it before loading — correcting afterwards is far harder
Bring the customers properly, because they are live
History can be approximate. Customers cannot — they are the records you will use tomorrow. This is the moment to deduplicate: most long-running shops have the same business three times over with slightly different spellings, and importing all three carries the mess into the new system for another decade.
Scan the whole customer book, not the first page of it. And never match customers on an old system’s internal id alone — those get reused, and a bad match silently merges two businesses.
- Deduplicate before importing, not after
- Match on name, ABN and email — not an internal id
- Bring addresses, contacts and terms across too
- Check a merged record kept what both sides were carrying
What to leave behind
The temptation is to bring everything so nothing is lost. Resist it. Your old pricing formulas are the most tempting and the least useful: they encode workarounds for a system you are leaving, and transcribing them faithfully imports the problem along with the data.
Rebuild the intent instead. Take your twenty best-selling products and build them properly in the new system, priced from your real materials and rates. That is a week of work that pays for itself immediately, and it is the difference between a new system that is genuinely better and an expensive copy of the old one.
- Leave the old formulas — rebuild the intent, not the spreadsheet
- Leave dead stock, dead suppliers and staff who left
- Bring: customers, history, materials, suppliers, open jobs
- Build your top products fresh, from real costs
Run both for a fortnight
Do not switch on a Monday. Quote in both systems for a fortnight and compare the numbers on real jobs — it is the only way to find the material with the wrong unit or the process that prices at nothing, and it is far cheaper to find them on a quote you also priced the old way.
Then pick a date, tell your customers nothing at all, and stop using the old one. A migration nobody outside the shop noticed is a successful migration.
- Quote in parallel on real jobs for two weeks
- Compare totals, and investigate every difference
- Keep the old system readable for a year, in case
- Switch on a quiet week, not at end of month
Frequently asked questions
- How far back should we bring?
- Far enough to answer “what did we charge them last time” for your regulars, which for most shops is three to five years. Going back further is rarely wrong, but it is storage rather than value — nobody prices a 2011 job off a 2011 quote.
- Will importing old jobs clutter our production board?
- It should not, and if it does the import was done wrong. Imported history should land as completed, searchable records tagged as legacy — not as live work. Check this on the sample before the full load, not after.
- Can we import our pricing spreadsheet as it is?
- You can bring it in as a reference list to look things up in, and that is genuinely useful on day one. But a spreadsheet imported as a list is not a pricing engine — for pricing that drives quotes you need the products built from your real materials and rates. Treat the import as a stepping stone.