A single source of truth is one place where the figures your business reports on are collected, matched up and defined once, so everyone reads the same number. For a growing company whose data sits in several systems that don't talk to each other, you build one in four steps: find out what each system holds and how to get the data out, join the sources on fields they share, agree what the reporting has to show, then pick charts that answer those questions. You don't have to replace your existing software to do it.
The basics
What is a single source of truth, and how is it different from a system of record?#
A system of record is the system that owns a particular piece of data. Xero is the system of record for invoices and payments. Your CRM owns enquiries and contacts. Your job or project system owns jobs, timesheets and budgets. Each one is right about its own data.
A single source of truth is the layer that brings those records together for reporting. It doesn't replace any of them. It copies the parts you need, links them to each other, and calculates each figure one agreed way, so the finance director and the operations director stop turning up to the same meeting with different turnover numbers.
An example from a construction business: an enquiry arrives in the CRM, becomes a quote in the estimating tool, turns into a job in the project system and gets invoiced in Xero. Four systems, four versions of the same piece of work. In a single source of truth those four records are linked by the quote or job number, so one report can show the whole route from enquiry to cash: what you quoted, what you won, what it cost and what you've been paid.
That is the difference that matters to an owner. The system of record answers what does this system say? The single source of truth answers what is actually happening across the business?
The problem
Why do growing companies end up with data silos?#
Nobody sets out to build data silos. They arrive one sensible decision at a time. Accounts picks Xero. Sales picks a CRM. The site team needs a job management app. A division you acquired brings its own software, and someone builds a spreadsheet to track tenders because nothing else did. Each tool is fine on its own. The trouble is between them.
The signs are familiar:
- Someone spends days at month end exporting from each system and stitching it together in Excel.
- Two reports give two different answers to the same question, because each one calculates it differently.
- Figures get re-keyed from one system into another, and the errors only surface at year end.
- You find out a job lost money after it finished, not while you could still do something about it.
Growth makes it worse, not better. More people, more divisions and more systems means more joins to make by hand, and the person who knows how the spreadsheet works becomes a single point of failure. If that's where you are now, the monthly pack is usually the first thing worth fixing; our guide to automating your monthly reports and management pack covers that end of the problem.
Step 1
What does each system hold, and how do you get the data out?#
Start with an inventory. List every system that holds a number you report on, and for each one write down what it captures (invoices, quotes, timesheets, stock, enquiries), who keeps it up to date, and how often it changes. It's common to find two systems holding the same thing, or a spreadsheet quietly acting as a system of record.
Then work out how the data can get out of each one. There are three routes, in order of preference.
1. An API. An API (application programming interface) is the software's own front door for other programs. API integration means a small piece of code asks the system for its data through that door on a schedule, for example every night or every hour. It's the most reliable route because the supplier designed and supports it. Most modern cloud software has one: Xero, most CRMs and many construction job and estimating tools. Check the supplier's developer pages, or ask their support team: is there an API, which plan includes it, and what data does it expose? The last question matters, because some APIs leave out exactly the fields you want.
2. A direct database connection. If the software runs on your own server or a hosted server you control, the data sits in a database underneath it. A read-only database user lets a reporting tool query it directly without being able to change anything. It's fast and complete, but you are reading the supplier's internal tables, which can change when the software is upgraded, so this connection needs checking after every upgrade.
3. Automated collection that does what a person would. Some systems have no API and no database you can reach, often older desktop software or a supplier portal. If a person can log in and run a report, a developer can usually write a script that does the same thing: log in, open the report, set the filters, export it or read what's on the screen, and save the result. This is known as browser automation or screen scraping. It works, and for some systems it's the only way, but it's the least reliable route. When the supplier changes a screen, the script has to be updated, so it needs monitoring and an alert when a run fails.
There's a fourth fallback, a person exporting a file and dropping it in a shared folder, which is fine for something that changes once a month. For anything you want to see daily, use one of the three routes above.
| Route | When it's available | Reliability | Watch out for |
|---|---|---|---|
| API | Most modern cloud software | High: supported by the supplier | Plan restrictions, rate limits, fields the API leaves out |
| Read-only database connection | Software you host or whose server you control | High, until an upgrade changes the tables | Re-check after every upgrade; never connect with write access |
| Automated collection (browser automation / screen scraping) | Anything a person can log in to and report on | Medium: breaks when screens change | The supplier's terms of use, login security, monitoring |
| Manual export to a shared folder | Anything with an export button | Depends on someone remembering | Fine monthly, not for live figures |
Step 2
How do you combine data from multiple sources?#
Getting the data out is half the job. Joining it up is where most of the value, and most of the work, sits.
Find the shared fields. Two records can only be linked if they share something: an invoice number, a job or project code, a quote reference, a customer account number. Map each source field to the field it matches in the other systems. This is data mapping, and writing it down as a simple table (system, field, what it means, what it joins to) saves arguments later. A common example is linking Xero invoices to jobs. If the job number is on the invoice reference every time, the join is easy. If it's only sometimes there, you'll need a rule for the rest.
Deal with messy keys. Customer names are the classic problem: "ABC Ltd", "ABC Limited" and "A.B.C. Construction" are the same client in three systems. Fix it once, with a lookup table that maps every variation to one master customer, rather than in every report. Where a shared reference is missing altogether, the cheapest long-term fix is usually upstream: make the job number a required field when the invoice is raised.
Decide which system wins. When two systems disagree, agree in advance which one is right for that field. Xero wins on what was invoiced and paid. The job system wins on hours and cost. The CRM wins on the client contact. Without these rules, the reporting layer turns into a fourth version of the truth.
Keep it somewhere that refreshes itself. Combining data from multiple sources once in Excel is a report; doing it automatically every night into a database is a single source of truth. The joined data lives in one place, refreshes on a schedule, and every report reads from it. People call this data integration or data consolidation; the important part is that nobody rebuilds it by hand.
Check it reconciles. Before anyone trusts it, compare the totals with the source systems: turnover against Xero for the same period, hours against the job system. If they don't match, the difference tells you which join or rule is wrong.
Step 3
What should the reporting actually show?#
This step is where most reporting projects go wrong, usually by skipping it. The question isn't "what data do we have?" but "what decisions do people make, and what do they need to see to make them?"
Start with who reads it. A board wants a handful of numbers against target and the trend. A divisional manager wants their own jobs, margins and debtors. An estimator wants win rates by client and job type. Each of those is a different view of the same data, filtered and segmented differently, not a different report built from scratch.
Pick the KPIs and write down their definitions. Six to eight headline numbers per view is plenty; more than ten and nobody reads them. Then define each one in plain words: is turnover invoiced or certified? Does gross margin include overheads? When does your financial year start? Two directors with two definitions of the same KPI is how silos survive inside a dashboard. Our article on building a business dashboard lists the KPIs most owner-managed businesses start with.
Agree the cuts. List the filters people will need: by division, client, job type, region, month, financial year. Every one of them has to exist as a field in the joined data, which is why this step should happen before the build is finished, not after.
Set the early warnings. A good KPI report doesn't just show numbers; it tells you which ones need attention. Agree the thresholds that turn a figure amber or red (a job over budget, debts over 60 days, a margin below target) and who gets told when it happens.
Show where each figure comes from. For every KPI, record which system it's drawn from, the formula, and when the data was last refreshed. It's the quickest way to build trust. When someone challenges a number, they can check it themselves instead of asking whoever built the report.
Step 4
Which chart should you use for which question?#
Once you know the question, the chart mostly picks itself. There are dozens of types of charts, but business reporting needs only a few.
| The question | Use | Avoid |
|---|---|---|
| Are we on target? | A big number with the target and the change since last period | A gauge or dial that takes up a quarter of the screen |
| How is it trending? | A line chart over 12 months, with last year or target as a second line | A bar per month when there are many months |
| Which is biggest or smallest? | A horizontal bar chart, sorted | A pie chart with more than three or four slices |
| What is it made of? | A stacked bar, or a short table | 3D charts of any kind |
| Which items need attention? | A table sorted by the problem, with red/amber flags | A chart where the reader has to hunt for the outlier |
| Why did it change? | A click-through from the headline figure to the detail behind it | Cramming every breakdown onto one page |
Three habits make any dashboard easier to read. Put the headline numbers along the top and the detail underneath. Use colour only to mean something (red is a problem, not a decoration). And keep each view to one screen, so nobody has to scroll to find out whether things are going well.
Your options
Should you build it in Excel, Power BI or as custom software?#
The four steps are the same whichever tool you use. What changes is how much of steps 1 and 2 the tool can do for you.
- Excel with Power Query is fine for one or two sources that export cleanly and a monthly view, and you already own it. It struggles once you need several joined sources, refreshing without someone pressing the button.
- Power BI and similar BI tools work well when your systems have ready-made connectors and someone in-house can maintain the data model. They don't solve the systems with no API, and per-user licences add up as more people need access. Our article on a Power BI alternative for SMEs goes through when each makes sense.
- Custom-built reporting makes sense when some of your data can only be collected by automation, when the joins need business rules no off-the-shelf tool knows about, or when you want the warnings and approvals built around how you actually run jobs. You own it, and it reads from the systems you already have.
For construction businesses specifically, our guide to construction reporting software covers the commercial and margin reporting side in more detail.
If you'd like to see what this looks like in practice, our data and reporting service page shows a sample dashboard built from several sources. If you send us a list of the systems you use, we'll tell you how each one can be connected.
Frequently asked questions
Can you give an example of a single source of truth?
A contractor links its CRM, estimating tool, job system and Xero by job number and copies the data into one reporting database every night. Every report, from the board pack to a divisional manager's margin view, reads from that database, so turnover, margin and debtor days are calculated once and match everywhere.
What is the difference between a single source of truth and a system of record?
A system of record owns one type of data, such as Xero for invoices or the CRM for contacts. A single source of truth brings data from several systems of record together for reporting, links it up and defines each figure once. It reads from the systems of record rather than replacing them.
Is ETL the same as an API?
No. An API is a way of getting data out of (or into) a piece of software. ETL (extract, transform, load) is the overall process of pulling data from sources, cleaning and joining it, and loading it somewhere for reporting. An API is often how the "extract" part happens.
How many KPIs should be on a dashboard?
Six to eight headline KPIs per view is a good rule. Fewer than that and you're probably missing something important; more than ten and people stop reading. Different audiences can each have their own view with their own six to eight.
How much does it cost to scrape data from a system?
It depends on how many screens the script has to go through, how the login works and how often the supplier changes the system. Building the script is usually the smaller cost. The ongoing cost is keeping it running when screens change, which is why it should be the route you use only where there's no API or database access.
Is web scraping legal in the UK?
Collecting your own business's data from software you pay for is generally a different matter from scraping someone else's website, but check the supplier's terms of use first, as some prohibit automated access. If the data includes personal information, UK GDPR still applies to how you store and use it. Take legal advice if you're unsure; this isn't legal advice.
Keep reading
How to automate your monthly reports and management pack
Most of a monthly management report can be automated with tools you may already pay for. Here's what each one automates, where it falls short, and when to stop stitching them together.
14 July 2026 ReadHow to build a business dashboard in Excel (and when it's time to stop)
The 6–8 numbers an owner-managed business should track, a simple three-tab Excel build, and the point where a dashboard that updates itself does the job better.
6 October 2026 ReadA Power BI alternative for SMEs? When a bespoke dashboard beats another BI subscription
If Power BI feels like overkill, the usual alternatives are Looker Studio, Metabase or Tableau. But sometimes the right answer isn't another BI tool at all.
14 July 2026 Read