Work sample 02 / 15CRM, Field Service & Support

ServiceM8 set-up for a trades business, built from its own job history and connected to Xero

How I move a plumbing, electrical or HVAC business off a shared job sheet and typed invoices into ServiceM8, with Xero kept as the books.

Area
CRM, Field Service & Support
Tools
ServiceM8 · Xero · Google Sheets
Typical scope
US$2,000–3,500
Timeline
About 6 weeks · 4 fixed milestones

Work sample: realistic data, built to show how I approach this kind of project. Not a past client job.

01The problem

Many trades businesses grow on a shared spreadsheet job sheet, paper notes from the van and invoices typed into Xero from those notes. It works until the office is the bottleneck: jobs get finished but not invoiced, after-hours work goes out at the standard rate, and recurring compliance work lives in someone's head.

ServiceM8 fixes the workflow only if it is set up from the business's real history: real clients, real job types, a pricebook that reflects current supplier costs, and recurring jobs for anything that comes back every year.

Owners usually notice it as

  1. The same client appears several times across the job sheet and Xero
  2. Office staff retype invoices from handwritten notes
  3. Recurring work (backflow tests, servicing) is tracked on paper
  4. Prices have not been checked against the latest supplier price file

02Scope

A fixed scope agreed in writing before anything is built. The table shows what a project like this usually covers and what it leaves out.

Exhibit 1Scope: what a project like this covers
AreaIncluded
Client listClient records from Xero and the job sheet matched into one list, with job sites under their billing client
Job history12 months of jobs categorised by rule into job templates; anything unclear goes to a review list
Billing checkDone jobs compared with Xero invoices at the business's own rates; findings go to the owner
PricebookRe-costed from the current supplier file with margin floors, discontinued and duplicate items listed
ServiceM8 set-upTemplates, forms, statuses, staff, recurring jobs and the Xero connection, then import files for clients, materials and open jobs
Not includedPayroll, STP and BAS lodgement
Exhibit 2Typical data volumes for this kind of project (log scale)
Job records, 12 months9,200
Xero invoices7,900
Client records before matching11,200
Pricebook lines reviewed290
Recurring devices215

Typical volumes for a business of this size. The sample files are sized as described in section 05.

Exhibit 3Fixed milestones, each released when you sign off its deliverable
MilestoneDeliverableTimingShareWeeks 1–6
M1 Exports and findingsClient matching, billing check, findings list for the ownerWeek 125%
M2 DesignTemplates, forms, statuses and pricebook agreedWeek 225%
M3 Import and testImports loaded, a test job run end to end into a Xero draftWeek 330%
M4 Go-live supportFirst-month weekly invoice check, SOPs, walkthroughWeeks 4–620%

Typical scope for this kind of project: US$2,000–3,500

About 6 weeks across 4 fixed milestones. The fixed quote follows a US$300 Systems Health Check, which confirms the volumes and the scope first. Your software subscriptions are billed to you by the vendors.

03How I approach it

Exhibit 4How the work flows, from the first record to sign-off
φ = 1.61801SHEETjob history02XEROinvoices03MATCHone client list04CHECKbilling05SERVICEM8templates06XEROdrafts6 STAGES · ONE PASS FROM FIRST RECORD TO SIGN-OFFi. match clients before anything elseii. check the money before go-liveiii. gate the go-live01SHEETjob history02XEROinvoices03MATCHone client list04CHECKbilling05SERVICEM8templates06XEROdrafts

Construction drawing. Each stage has its own check before the next one starts.

  1. 01

    Match clients before anything else

    One client list is the base for everything. I match across Xero and the job sheet with clear rules and keep a list of every merge so it can be reversed.

  2. 02

    Let the history design the templates

    Job templates come from what the business actually does, counted from 12 months of jobs, not from a generic list.

  3. 03

    Check the money before go-live

    A billing check on the last 12 months shows where jobs were missed or under-charged. The owner decides what to do; I do not contact clients.

  4. 04

    Re-cost the pricebook

    Every material line is checked against the current supplier file and a margin floor; changes are proposed, not applied.

  5. 05

    Gate the go-live

    Ten go-live gates, each one a test that must pass before bookings move to ServiceM8.

04Checks

Nothing goes live on trust. These checks run before sign-off and stay in the files, so they can be re-run after every change.

  1. Every client record maps to exactly one client
  2. Every job and recurring device belongs to a client that exists
  3. Expected amount for each done job recomputed from the rate card
  4. No pricebook item below its margin floor without a decision
  5. A test job goes from booking to a Xero draft invoice with the right items
Exhibit 5Controls in the sample files: 32 of 32 pass
CheckWhat it catchesStatus
Every customer record maps to a customer that existsNo orphan records after matchingPASS
Customer records counted on the Clients tabEach record lands on exactly one customerPASS
Every job's customer existsJobs load against a real customerPASS
Every backflow device's customer existsDevices load against a real customerPASS
Job sites counted on the Clients tabEvery agency site sits under its billing customerPASS
Every job has a category or is marked for reviewNothing falls between the rulesPASS
Category rule counts = jobsRules table is completePASS
Templates cover every categorised jobEvery categorised job has one templatePASS
Every done job is on the Billing CheckBilling check is completePASS
Every invoice is on the Billing Check onceNo invoice unexplained or counted twicePASS
Show all 32 checks
CheckWhat it catchesStatus
OK jobs: invoice = expected amountThe rate rule reproduces the office's billingPASS
Invoiced on Billing Check = Xero invoice totalTies to XeroPASS
Gap (formula) = engine gapWorkbook and engine agreePASS
Not invoiced rows have no invoiceStatus is consistentPASS
After-hours flags only on after-hours jobsStatus is consistentPASS
Pricebook status (formula) = engine statusWorkbook and engine agreePASS
Every coded item is in the supplier fileNew costs come from the price filePASS
Materials import has no duplicate codeClean pricebookPASS
Materials import lines all in the pricebookNo orphan or removed itemsPASS
Materials import = kept pricebook rows + 4 labour and call-out itemsNothing droppedPASS
Margin review rows = items below floorEvery low-margin item reaches the ownerPASS
Proposed prices meet the floorProposed prices fix the marginPASS
Backflow: devices on recurring jobs = registerEvery device is testedPASS
Recurring job device counts match the registerRight test fee and time per sitePASS
Recurring jobs assigned to accredited testersOnly accredited staff test devicesPASS
Overdue devices booked within two weeks of go-liveOverdue tests are caught up firstPASS
Every template has a formChecklists on every jobPASS
Every template has staff who hold its licenceJobs can be assignedPASS
Open jobs: customer existsOpen jobs importPASS
Status map covers every job-sheet statusNo status left unmappedPASS
Exceptions: one per billing findingEvery finding is on the registerPASS
Engine regression: false customer mergesDifferent customers never mergedPASS

Status read from the sample workbook. Each check is a formula, not a typed value.

05Handover

Everything is handed over in editable files you own, with the steps written down so your team is not dependent on me.

In this work sample

A plumbing and gas business: 9,200 jobs, 7,909 Xero invoices and 11,230 client records matched to 1,768 clients, in a 28-tab workbook with 68,568 formulas and 32 controls.

  1. ServiceM8 account set up with templates, forms, statuses and recurring jobs
  2. Import files and the workbook behind them
  3. Three SOPs: booking, on site to invoice, recurring jobs
  4. A weekly check that every completed job has a draft invoice
  5. A recorded walkthrough for the office

06Files in this work sample

Screens from the sample files. Select one to open it full size.

Dashboard tab: customers, jobs, billing check, pricebook, backflow, open jobs, gates and controls, every figure a formula
Exhibit 6Dashboard tab: customers, jobs, billing check, pricebook, backflow, open jobs, gates and controls, every figure a formula

ServiceM8-Plumbing-Setup.xlsx › Dashboard

Billing Check tab: each done job's expected amount at the business's own rates against its Xero invoice, with the status worked out by formula
Exhibit 7Billing Check tab: each done job's expected amount at the business's own rates against its Xero invoice, with the status worked out by formula

ServiceM8-Plumbing-Setup.xlsx › Billing check

Margin Review tab: items below their margin floor at 2026 supplier costs, with a proposed price for the owner to approve
Exhibit 8Margin Review tab: items below their margin floor at 2026 supplier costs, with a proposed price for the owner to approve

ServiceM8-Plumbing-Setup.xlsx › Margin review

Recurring Jobs tab: one annual backflow job per site with its device count, next due date and accredited tester
Exhibit 9Recurring Jobs tab: one annual backflow job per site with its device count, next due date and accredited tester

ServiceM8-Plumbing-Setup.xlsx › Recurring jobs

Go-live Gates tab: ten gates and the steps from merging Xero contacts to the first-week check
Exhibit 10Go-live Gates tab: ten gates and the steps from merging Xero contacts to the first-week check

ServiceM8-Plumbing-Setup.xlsx › Gates

Controls tab: 32 formula controls, all PASS
Exhibit 11Controls tab: 32 formula controls, all PASS

ServiceM8-Plumbing-Setup.xlsx › Controls

Report page: one job record from enquiry to a draft invoice in Xero, across the customer, office, plumber and Xero
Exhibit 12Report page: one job record from enquiry to a draft invoice in Xero, across the customer, office, plumber and Xero

ServiceM8-Setup-Report.pdf · page 7

SOP-02: on site to invoice and Xero draft
Exhibit 13SOP-02: on site to invoice and Xero draft

ServiceM8-Setup-Report.pdf

Overview of the ServiceM8 work sample: jobs checked against Xero invoices, the billing findings, customers, recurring backflow jobs and controls
Exhibit 14Overview of the ServiceM8 work sample: jobs checked against Xero invoices, the billing findings, customers, recurring backflow jobs and controls

PREVIEW.png · one-page overview

FilesDownload the work sample
FileWhat it isSize
ServiceM8-Plumbing-Setup.xlsxWorkbook: data profile, customer matching, Xero duplicates, job sites, job history and category rules, rates, billing check, price file, pricebook and margin review, materials import, backflow register, recurring jobs, templates, staff, forms, statuses, open jobs, Xero sync, go-live gates, exceptions, controls and test log3 MB
ServiceM8-Setup-Report.pdfReport (17 pages): scope, current state, findings, options, workflow, customers, templates, pricebook, backflow, billing check, gates, controls, tests, risks704.3 KB
Executive-Summary.pdfOne-page executive summary138.5 KB
ServiceM8-SOPs.pdfThree SOPs: enquiry to booked job, on site to invoice and Xero draft, recurring backflow testing (PDF)69 KB
ServiceM8-SOPs.docxThe three SOPs, editable Word file38.2 KB
engine.pyEngine: customer matching, job categories, billing check, pricebook re-costing, backflow schedule, import files and the regression test27.3 KB
ServiceM8-Setup-data-and-code.zipInputs as exported (CSV), engine output, the four ServiceM8 import files, and the scripts that rebuild the workbook, report and SOPs1.3 MB

Tell me what’s bugging you and I’ll tell you where I’d look first.

Send a short note on Upwork about what is slowing the business down. I’ll reply with where I’d start, and whether the US$300 Systems Health Check is the right first step.