Work sample 02 / 12Enquiry to booked job
Booked means booked: GoHighLevel + ServiceM8 pipeline sync
How I'd approach a multi-state plumbing and electrical business whose CRM marks jobs Booked before they're confirmed and keeps creating duplicate contacts, so that sales, ops and the owner can trust the pipeline again.
- Area
- CRM ↔ field service
- Tools
- GoHighLevel · ServiceM8 · Xero · Zapier
- Typical scope
- US$2,500–4,000
- Timeline
- About 4 weeks · 4 milestones
Work sample: realistic data, built to show how I approach this kind of project. Not a past client job.
01The problem
A trades business runs plumbing and electrical crews across Queensland, New South Wales and Victoria. It has one ServiceM8 account per state and a single GoHighLevel pipeline for sales.
The automations added over time react to a job existing, not to a booking being confirmed, so the pipeline says Booked while the job is still a quote or a tentative time. Only one of the three state accounts is connected at all.
Owners usually notice it as
- Leads showing Booked, follow-ups stopping, and then the job falling through with nobody chasing it
- The same customer appearing twice, with sales and ops working different records
- Cancelled jobs still sitting at Booked, so no rebook follow-up goes out
- A reschedule sending the lead back to New and losing its history
- Booking times an hour out for customers in another state
- Jobs showing Paid before the money has actually landed in Xero
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.
| Scope area | Included |
|---|---|
| Health check | Every automation, account and stage reviewed; findings with their business effect and a fixed quote |
| Stage design | One agreed meaning per stage, and the follow-up each stage should start, for sales, ops and the owner |
| Sync across three states | GoHighLevel kept in step with all ServiceM8 accounts; payments reflected from Xero |
| Clean-up | Open jobs linked to the right lead; duplicates and wrong stages listed for your approval |
| Go-live and watch | Tested switch-over, two-week watch, handover pack and recordings |
| Not included | Replacing GoHighLevel or ServiceM8, website forms, accounting work inside Xero |
| Milestone | What is signed off | Share |
|---|---|---|
| M1 · Systems Health Check | Findings, stage map and fixed quote | US$300 |
| M2 · Stages and sync | All three states syncing on test records | ~40% |
| M3 · Clean-up and testing | 40 of 40 scenarios pass; clean-up list approved | ~45% |
| M4 · Go-live and handover | Switch-over done, two-week watch closed | ~15% |
Typical scope for this kind of project: US$2,500–4,000. The fixed quote follows a US$300 Systems Health Check, so the price is based on what's actually in your accounts.
03What I fixed, and why

visual-1-before-after-pipeline.png › Plate I before, Plate II after
- 01
Agree what Booked means.
Owner, sales and ops agree one plain-English meaning for each stage before anything changes. Booked means a job ops has genuinely confirmed. Everything else is held as Provisional.
- 02
One customer, one record.
New activity joins the existing customer instead of creating another one. Existing duplicates go on a review list for a person to decide; nothing is merged blindly.
- 03
Each event moves only its own stage.
A reschedule keeps the booking and updates the time. A cancellation starts a rebook follow-up. A completed job, or a payment in Xero, changes what it should and nothing else.
- 04
Every state, in local time.
All three ServiceM8 accounts follow the same rules, and every booking shows in the customer's local time, including Queensland, which has no daylight saving.
- 05
Failures are seen the same day.
Anything that fails, or a booking that waits too long, lands on one Needs attention list and alerts the person you choose.
- 06
Nothing is switched off blind.
Old automations are paused, not deleted, at a quiet time you choose, with a rollback list ready.
04Checks
Nothing goes live on trust. Every check runs on the same sample data before and after, in all three state accounts.
- Every check is run on the same sample data before and after, in all three state accounts
- Switch-over waits until every scenario passes and every go-live gate is met
- Stage corrections on existing records are listed and approved by the owner before they're applied

visual-2-outcome-checks.png
| Check | What it catches | Before | After | Status |
|---|---|---|---|---|
| Booked has a confirmed booking | Leads marked Booked too early | 214 | 0 | PASS |
| One record per customer | Duplicate contacts created | 167 | 0 | PASS |
| Cancelled jobs leave Booked | Missed rebook follow-ups | 23 | 0 | PASS |
| Reschedules keep the booking | Leads reset to New | 31 | 0 | PASS |
| Every state account syncing | States missing from the pipeline | 1 of 3 | 3 of 3 | PASS |
| Local time is right | Bookings an hour out | 38 | 0 | PASS |
| Paid follows Xero | Paid shown before the money lands | 19 | 0 | PASS |
| Failures alerted the same day | Silent failures | 0 of 12 | 12 of 12 | PASS |
Test scenarios: 40 of 40 pass (Provisional 6 · Confirmed, per state 6 · Rescheduled 6 · Cancelled + rebooked 6 · Completed + paid in Xero 6 · Duplicates + repeats 6 · Failures + alerts 4). Go-live gates: everything backed up · open jobs linked · stage fixes approved · quiet-time switch · two-week watch.
05Handover
In this work sample, the handover is what the team keeps using after I step away. It's written for the people who run the business, not for whoever set it up.
- A cleaner GoHighLevel pipeline with state views, and stages that match what really happened
- A Needs attention list and same-day alerts
- A plain-English stage guide your team can read
- A register of every connection between GoHighLevel, ServiceM8 and Xero
- The signed 40-scenario test log
- Two short walkthrough recordings and a one-page “when an alert arrives” sheet
06Files in this work sample
The walkthrough and both exhibits, ready to download.
| File | What it is | Size |
|---|---|---|
| GHL-ServiceM8-Work-Sample.pdf | 3-page walkthrough: problem, approach, checks, handover | 498.7 KB |
| visual-1-before-after-pipeline.png | Before and after, at outcome level | 159.7 KB |
| visual-2-outcome-checks.png | Before/after numbers, 40 scenarios, go-live gates | 158.7 KB |
Ask about this: if your GoHighLevel pipeline and ServiceM8 don't agree, start with a US$300 Systems Health Check and a fixed quote.
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.