All documentation
Moving jobs through a GoHighLevel pipeline
ServiceM8 sorts jobs four different ways. One of them drives your GoHighLevel pipeline stage. Choosing which is the most consequential decision in a pipeline setup.
Opportunities are switched off on a new account, and plenty of trades leave them that way — their clients sync as contacts, tagged by job status, and GoHighLevel workflows do the rest. If that is you, none of this page applies. See Tags.
Everything below is for when you do want jobs moving through pipeline stages. Turn Create opportunities on in Step 1 first, or none of it takes effect.
The four ways ServiceM8 sorts a job
| Sort | Values | Per job |
|---|---|---|
| Status | Five fixed: Quote, Work Order, In Progress, Completed, Unsuccessful | One |
| Queue | Your own, whatever you have created | One |
| Category | Your own, usually the type of work | One |
| Badge | Your own | Several at once |
Exactly one of status, queue or category can drive the pipeline stage. Badges never drive a stage, because a job can carry several at once and an opportunity can only be in one place.
All four can apply tags, whichever one you pick as your driver. That part is independent, and it works whether opportunities are on or off.
Choosing your driver
Job status
The simplest option, and the right one if your GoHighLevel pipeline broadly mirrors quote → work → done. The limitation is that there are only five values and you cannot add to them, so if your real process has more steps than that, the pipeline will feel coarse.
Queue
This is what most trades should pick. If you drag jobs between queues during the day — Awaiting Parts, Booked In, Needs Certificate — then your queues already are your pipeline, and pointing GoHighLevel at them means the CRM mirrors how you actually work rather than how the software thinks you should.
Category
Right when your pipeline is organised by type of work rather than progress through it. Less common, but if your GoHighLevel pipelines are split by service line, this is the one.
Switching drivers applies from the next sync onwards. It will not retrospectively rearrange opportunities already sitting in GoHighLevel — those move when their job next changes in ServiceM8.
Mapping the values
The choice is made on Step 1, Setup of Sync Settings. The mapping itself happens on Step 2, Pipeline, and the option you chose is the one marked Drives the stage there. Work down it and, for each ServiceM8 value, pick the GoHighLevel pipeline and the stage within it. These cannot be pre-filled for you — your pipelines are unique to your account.
Opportunities can move between different pipelines, not just between stages of one, so you can send urgent work into one pipeline and routine work into another.
This is the single most common setup problem. Map four of your five statuses on Step 2 and the job sitting in the fifth will sync its contact and quietly skip its opportunity. If contacts are appearing but opportunities are not, this is almost always why. If you drive by queue, set a backup stage for every status you use too. See Troubleshooting.
Jobs that leave their queue
If queue or category drives your stage, there is one gap to cover. In ServiceM8 a job drops out of its queue when it is booked into the diary, completed or marked unsuccessful, and a brand new job may not be in one yet. With no queue to go on, there is nothing to tell GoHighLevel where that job belongs.
That is what the backup stage is for. On Step 2, the Job statuses section offers pipeline and stage columns too, marked Backup stage. A stage you pick there is only used when a job is not in any queue (or category) at all. Set one against every status you use: Quote and Work Order for new and booked jobs, Completed and Unsuccessful for finished ones, which also get marked Won or Lost along the way.
A job sitting in a queue always follows its queue, even if it is completed. And a job in a queue you have deliberately left without a stage, an internal admin queue say, is still left alone. The backup only kicks in when there is no queue at all.
Jobs that should never be in your pipeline
Office jobs, admin jobs, internal work: some job cards are not customer work and have no business in a sales pipeline. On Step 2, every queue, category and badge has a No opportunity tick box at the end of its row. Tick it and any job with that queue, category or badge never creates or updates an opportunity. The contact and its tags still sync as normal.
If you can, tick a category rather than a queue. A job leaves its queue when it is booked into the diary, but its category stays put, so a category catches the job all the way through. Opportunities that already exist are left exactly where they are, so delete any old office ones in GoHighLevel once and they will not come back.
The two you did not pick
They are not wasted. They sit on the same Step 2 page, and whichever of status, queue and category is not driving your stage can still apply tags in GoHighLevel. So can badges. That is how information like EICR or needs certificate reaches your contacts so workflows can trigger from it.
Tags behave differently depending on where they come from, and the difference matters. See Tags.
Check before you commit
Use Sync Preview on a real job card. It applies exactly the same stage logic the live sync uses, so what it shows you is what would happen — including which pipeline and stage the opportunity would land in, and which tags would go on the contact.