All documentation
Sending GoHighLevel leads into ServiceM8
Everything else in TradesSync goes one way, ServiceM8 to GoHighLevel. This is the one thing that goes the other way, and it is switched off unless you turn it on yourself.
The problem it solves
Leads captured in GoHighLevel — a web form, an AI phone answer, a contact your marketing added — never reach ServiceM8 on their own. There is nothing in ServiceM8 for the sync to pick up, so the lead sits in your CRM while your job list knows nothing about it.
Switch this on and each new GoHighLevel contact becomes a ServiceM8 client and a job card at status Quote, ready for you to price. The enquiry that came in at nine at night is on your job list by morning.
There is a second half to this: a customer ServiceM8 already knows, coming back through one of your forms for another quote or callout. That is a repeat enquiry, and it raises a fresh job card against the client you already have rather than skipping them for being known.
Two URLs, two workflows
GoHighLevel sends the same information whichever trigger fired it — there is nothing in the message itself to say whether a contact was just created or a form was just filled in. So each situation has its own URL, and they are not interchangeable. Both appear in Sync Settings once you save.
Workflow 1 — a new enquiry from someone new
- Go to Sync Settings and find GoHighLevel → ServiceM8.
- Tick the switch and press Save. Your two webhook URLs appear.
- Copy the first URL.
- In GoHighLevel, go to Automation → Workflows and create a workflow with the trigger Contact Created and one action, Webhook, method POST, pasting that URL.
- Set the workflow to Publish. A draft workflow never fires.
No filter is needed here. Anyone ServiceM8 already knows is skipped by this workflow.
Workflow 2 — a repeat enquiry from an existing customer
- Copy the second URL — the one ending
&intent=enquiry. - Create a second workflow with the trigger Form Submitted.
- On that trigger, add the filter Form is and tick only your enquiry forms.
- Add one action, Webhook, method POST, pasting the second URL.
- Publish it.
Without it, every form in your account raises a job card — onboarding forms, internal forms, feedback surveys. Tick only the forms where somebody is asking you to do work.
TradesSync updates your GoHighLevel contacts every time it syncs your ServiceM8 jobs. A workflow built on Contact Updated would therefore fire on our own changes, over and over. Use Contact Created and Form Submitted only.

Anyone who has it can create clients in your ServiceM8 account. Do not post it in a shared document, a support thread or a Facebook group.
What it will and will not do
- Existing clients are matched, never edited. If the contact matches a client you already have, on email or phone, TradesSync links to that client and leaves the record exactly as it is.
- Only a client and a job card are created. No queues, no badges, no custom fields — you decide what happens to the job from there.
- Contacts that came from ServiceM8 are ignored, so nothing bounces back and forth between the two systems.
- A repeat enquiry does not create a second client. It adds another job card to the client you already have. If the person turns out to be new to ServiceM8 after all, they get a client record as well.
- One repeat enquiry per contact per hour. A second submission from the same person within the hour is ignored, so a double-tap on your form cannot produce two job cards.
- There are hard limits. If more than 10 contacts arrive in 10 minutes, or 25 in a day, it pauses and alerts us rather than filling your account. Nothing is lost — everything is still logged.
- Leads can take up to five minutes to appear in ServiceM8.
Why the delay
GoHighLevel fires Contact Created the instant the record appears, which is often before the address, tags or form answers have finished saving. Rather than trust that first message, TradesSync treats it as a doorbell: it notes that a contact exists and then goes back to GoHighLevel to read the finished record when it processes the queue.
The result is a ServiceM8 client with the business name and address filled in, rather than a half-empty record created a second too early.
Turning it off
Untick the switch and save. It stops both workflows immediately. Anything already created in ServiceM8 stays exactly where it is — turning the feature off does not remove clients or jobs it made earlier.