Work snippet 16 / 34Tracking + reporting
ServiceM8 to Xero with branch and service-line tracking across three entities
How I'd approach tracking categories for a service group with three legal entities and five branches, so ServiceM8 invoices and supplier bills carry the same Branch and Service line everywhere and the group adds up.
Work snippet with example figures.
- Area
- Tracking + reporting
- Tools
- ServiceM8 · Xero · Group workbook
- Typical scope
- US$2,200–3,800
- Timeline
- About 6 weeks · 4 fixed milestones
01Context
A service group with three legal entities: two trading companies, each with its own ServiceM8 account and Xero organization, and a property company that owns the buildings. Five branches work across the two trading companies. The owners and the finance lead want one view of profit by branch and by service line.
The systems in play
In the example the books are already in Xero and the jobs are already in ServiceM8. The gap is that tracking was added late and unevenly, so the branch reports cannot be trusted and the group cannot be added up.
| System | What it does for the business |
|---|---|
| ServiceM8 | Jobs, categories, branches and invoices. Branch coordinators work here. |
| Xero (three organizations) | One ledger per entity, with the same chart of accounts and the same tracking structure. |
| Tracking categories | Branch and Service line. Xero allows two active categories per organization, so these two have to be chosen well. |
| Group reporting workbook | Takes each entity’s profit and loss by tracking option and adds them up with an entity column. |
| Accountant | Reviews the structure and any history that is re-tagged. |
02Problem
What the owner sees
- A branch profit report with a large Unallocated column
- Branch figures that change depending on who ran the report
- Costs that are tagged and revenue that is not, or the other way round
- Three entities that cannot be added up without a day of work
Tracking is only as good as the least-tagged transaction. If it reaches Xero on invoices but not on bills, or differs by entity, every branch margin is wrong by an amount nobody can name.
| Everyday situation | What goes wrong |
|---|---|
| Job category with no mapping | The invoice reaches Xero with no service line |
| Supplier bills | The job system link covers sales invoices, so bills are tagged by hand or not at all |
| Branch renamed or merged | Old option names stay in Xero and split a branch in two on reports |
| Different names per entity | Entity A says North and entity B says N, so the workbook cannot add them |
| Three or more dimensions wanted | Xero allows two active categories, so a third is squeezed into the names and becomes unreadable |
| History before tracking existed | Prior periods show as Unallocated and break year-on-year comparison |
03Approach
Four steps, in this order. Each one ends with a result that is checked.
- LookA read-only review of the three organizations, the ServiceM8 categories and branches, and the last 12 months of Unallocated revenue and cost.
- Agree the structureThe two categories, their options, the owner of each and the naming rule for every entity are written down.
- Set up and connectTracking options are created and mapped from ServiceM8 on sales invoices. Rules for bills are agreed and set up in Xero.
- Check and re-tagWeekly checks catch untracked lines. History is re-tagged by rule, with the accountant’s approval.
| Item | Example setting |
|---|---|
| Category 1: Branch | North, South, East, West, Central, Head office, Unallocated |
| Category 2: Service line | Planned maintenance, Reactive repair, Installation, Capital works, Overhead |
| Same names everywhere | Identical option names and spelling in all three organizations |
| ServiceM8 to Xero mapping | ServiceM8 branch maps to Branch. ServiceM8 job category maps to Service line. |
| Bills | Branch and Service line chosen when the bill is coded. A bill rule per supplier sets the usual values. |
| Head office costs | Tagged Head office and Overhead, and spread by a stated rule in the workbook only |
| Ownership | The finance lead owns the structure. A new option needs a written request. |
04What the setup includes
What the setup includes, and why each piece is there. The detail of how it is configured is agreed in the scoping call.
Show the setup, layer by layer
| Layer | What is set up and why |
|---|---|
| Tracking options | Created with the same names in all three organizations, so a total by option means the same thing everywhere. |
| ServiceM8 mapping table | One row per ServiceM8 branch and job category, with the Xero option it maps to. A job category with no row is listed before it reaches Xero. |
| Sales invoices | Tracking on every invoice line from the job’s branch and category. Checked on a test invoice per branch and per service line. |
| Supplier bills | Bill rules per supplier, and a required tracking check before approval, because the job system link does not tag bills. |
| Intercompany charges | Charges between entities carry the same Branch and Service line on both sides, so they cancel in the workbook. |
| Group workbook | Profit and loss by Branch and Service line for each entity, then combined by option with an entity column and a total that ties to each organization. |
| Untracked lines report | A weekly list of invoice and bill lines with no value in either category, by entity and by owner. |
| History re-tagging | Prior months assigned by rule on a copy first, then in batches after the accountant approves. Locked periods are listed, not forced. |
How the data moves
- ServiceM8 job completed
- Invoice reaches Xero with Branch and Service line
- Supplier bill coded with both
- Weekly untracked lines report
- Profit and loss by option per entity
- Group workbook
- Review with the finance lead
05Edge cases
These are agreed with the finance lead and tested on one closed month in each organization.
| Situation | How it is handled |
|---|---|
| Job done by one branch for another | Revenue is tagged to the branch that owns the customer. The cost of the helping team stays with the branch that paid it, with a note. |
| Invoice with two job categories | Each line keeps its own Service line, so the split is in the report |
| ServiceM8 job category created after set-up | Appears on the mapping list as unmapped and is held until the finance lead assigns it |
| Supplier bill covering two branches | Split into lines, each with its own Branch |
| Branch closed or merged | The old option is archived in Xero and its history is re-tagged to the surviving branch by a dated rule |
| Credit note | Carries the same tracking as the invoice it reverses, so the branch figure is net |
| Entity without ServiceM8 | Tagged by hand under the same names, and included in the untracked lines report |
| Third dimension wanted (for example customer type) | Kept in the job system and in the workbook, not as a third Xero category |
| Tracking changed on an approved invoice | Allowed for a named user, and recorded in a change log with the old and new values |
| Period locked by the accountant | Nothing is edited. The transactions are listed for the accountant to decide. |
06Worked example
The tables below use one month for one entity with example figures. They show the shape of the checks, not a client result.
| Branch | Revenue | Direct cost | Gross margin | Margin % |
|---|---|---|---|---|
| North | 61,240.00 | 27,170.00 | 34,070.00 | 55.6% |
| South | 54,890.00 | 25,105.00 | 29,785.00 | 54.3% |
| East | 30,125.00 | 12,840.00 | 17,285.00 | 57.4% |
| West | 27,560.00 | 12,600.00 | 14,960.00 | 54.3% |
| Central | 40,285.00 | 18,725.00 | 21,560.00 | 53.5% |
| Unallocated | 1,835.00 | 910.00 | 925.00 | 50.4% |
| Total, ties to the Xero report | 215,935.00 | 97,350.00 | 118,585.00 | 54.9% |
| Service line | Revenue | Share |
|---|---|---|
| Planned maintenance | 84,500.00 | 39.1% |
| Reactive repair | 59,730.00 | 27.7% |
| Installation | 37,280.00 | 17.3% |
| Capital works | 32,695.00 | 15.1% |
| No service line | 1,730.00 | 0.8% |
| Total | 215,935.00 | 100.0% |
| Period | Measure | Total revenue | Unallocated | Share |
|---|---|---|---|---|
| Before: last 12 months | Revenue | 2,574,300.00 | 416,350.00 | 16.2% |
| After set-up: a typical month | Revenue | 215,935.00 | 1,835.00 | 0.8% |
| ServiceM8 value | Type | Xero tracking option | Status |
|---|---|---|---|
| Branch: North | Branch | North | Mapped |
| Branch: Head Office | Branch | Head office | Mapped |
| Category: Quarterly service | Job category | Planned maintenance | Mapped |
| Category: Emergency callout | Job category | Reactive repair | Mapped |
| Category: New fit-out | Job category | Capital works | Mapped |
| Category: Misc | Job category | None yet | Held for the finance lead |
07How the result is checked
The check is simple: the totals by option must add up to the Xero report with no tracking filter, and the untracked list must be short and owned.
| Check | How | Pass condition |
|---|---|---|
| Branch totals | Sum of all Branch options compared to the Xero profit and loss with no tracking filter | Equal to the cent, with Unallocated shown as its own line |
| Service line totals | Same test on the second category | Equal to the cent |
| Test invoices | One per branch and per service line, created in each entity | Each reaches Xero once with both values |
| Names | Option names compared across the three organizations | Identical spelling, no extra options |
| Untracked lines | Weekly list of lines with no value | Zero, or each line has an owner and a due date |
| Group workbook | Entity totals compared to each organization | Equal, and intercompany nets to zero |
| History | A spot-check of re-tagged transactions against the rule and the batch log | Each change recorded, none in a locked period |
08Scope and milestones
A fixed scope agreed in writing before anything starts. Each milestone is paid when you sign off its deliverable.
| Area | Included |
|---|---|
| Audit | Read-only review of the three Xero organizations, the ServiceM8 categories and branches, and 12 months of untracked lines, a 45-minute call, written findings and a fixed quote |
| Structure | The two categories, their options and the naming rule, in writing and signed by the finance lead |
| Xero set-up | Tracking options created and checked in all three organizations |
| ServiceM8 mapping | Branch and job category mapping with a held list for anything unmapped |
| Bill rules | Bill rules per main supplier and a coding checklist for the team |
| Group workbook | Profit and loss by Branch and Service line per entity, combined, with a tie-out tab |
| History re-tagging | Up to 18 months re-tagged by rule on a copy first, then in approved batches |
| Handover | Written SOPs, a recorded handover video and files you own, plus 14 days of fixes after go-live |
| Not included | Tax filing and statutory returns. |
| Also outside the scope | Changes to the chart of accounts. Budgeting. Moving the group to a different accounting package. Software subscriptions (billed to you by the vendors). |
| Milestone | Deliverable | Timing | Share |
|---|---|---|---|
| M1 Audit and structure | Findings, a fixed quote and the tracking structure in writing | Week 1 | 20% |
| M2 Set-up and mapping | Options, mapping and bill rules live, test invoices pass | Weeks 2 to 3 | 30% |
| M3 Group workbook and checks | Workbook ties out, untracked lines report running | Week 4 | 30% |
| M4 History and handover | Approved re-tagging, SOPs, handover video, 14 days of fixes | Weeks 5 to 6 | 20% |
Typical scope for this kind of project: US$2,200–3,800
About 6 weeks across 4 fixed milestones. The Systems Audit (US$300, fixed) comes first and confirms the scope.
Describe what is going wrong between your job system and your books, and I'll say where I'd look first.
Send a short note through the form on the home page. I will reply with where I would start, and whether the US$300 Systems Audit is the right first step.