TradesSync.
All documentation
  1. Overview
  2. Getting started
  3. What syncs
  4. Pipeline stages
  5. Field mapping
  6. Tags
  7. If/then rules
  8. Leads into ServiceM8
  9. Reading the sync log
  10. Common setups
  11. Troubleshooting
  12. Change tracker

Home / Docs

What comes across from ServiceM8

TradesSync syncs two things and attaches everything else to them. Once you understand that, the rest of the setup makes sense.

The two things

In ServiceM8Becomes in GoHighLevel
ClientContact
Job cardOpportunity — if you have opportunities switched on

Opportunities are optional and off on a new account. With them off you still get every client as a contact, kept up to date, with tags driven by the job's status, queue, category or badges. Plenty of trades run it that way and build the rest with GoHighLevel workflows.

That is the whole model. Everything else attached to a job — line items, payments, notes, job contacts, attachments, checklists, form responses, badges, category and queue — is gathered up and becomes fields on that contact or opportunity.

Nothing turns into a separate GoHighLevel record. Your materials list does not become five GoHighLevel objects; it becomes a field on the opportunity containing the materials. That keeps your CRM readable instead of drowning it in records nobody looks at.

Find any job by its number

Every opportunity is named with its ServiceM8 job number first, like #4503 – George – Supply and installation of a new cooker. Type the job number into GoHighLevel's opportunity search and it comes straight up. When a customer rings about job 4503, you are not scrolling through a pipeline looking for it.

Everything that can come across

There are around 160 ServiceM8 fields available to map, grouped by where they live:

You decide which of those actually travel. See Field mapping.

How often

ServiceM8 is checked every five minutes for anything created or changed. There is nothing to press and no schedule to configure.

It remembers what it has synced

This is the big difference between TradesSync and a Zap. A typical Zap has no memory: something happens in ServiceM8, it fires an action in GoHighLevel, and it has no idea what it did last time.

TradesSync keeps a record of every link it makes. Each ServiceM8 client is tied to its GoHighLevel contact, and each job card to its opportunity, and each job also records which customer it belongs to. Only the IDs are stored, never a second copy of your customers' names, emails or phone numbers. Because of that record, TradesSync can:

What does not come across

Your existing back catalogue, unless you ask.

The sync starts the day you connect. It watches for jobs and clients that are created or changed from that point onwards. A job that has sat untouched since before you signed up will not appear on its own, because as far as ServiceM8 is concerned nothing has happened to it. Change something on the job itself and it comes through on the next check.

A returning customer's old jobs stay where they are too. When a client comes back with a new job, only that new job comes across. Their history does not flood into your pipeline, so workflows built on new opportunities or tags, like review requests, won't fire for work you finished years ago.

Clients with no way to contact them. A ServiceM8 client with no email, no phone number and no jobs is not sent to GoHighLevel. Accounting links such as Xero can fill ServiceM8 with bank payees and suppliers, and this keeps them out of your CRM. Once the client has a job, an email or a phone number, they come across as normal.

Empty fields. Only what is actually there gets sent. If a job has no category, or the client has no email address, that field is skipped and everything else still syncs.

Anything you have not mapped. Unmapped fields simply do not travel. If you map nothing to a pipeline stage, no opportunity is created and the contact syncs on its own — which is a perfectly valid way to run it.

The direction of travel

ServiceM8 is read, not written.

The sync does not change, move or delete anything in your ServiceM8 account. If TradesSync stopped existing tomorrow your ServiceM8 would be exactly as you left it.

There is one optional exception, off unless you switch it on, covered in Leads into ServiceM8.

One consequence worth knowing: because ServiceM8 is the source of truth, if a client's name differs between the two systems, the ServiceM8 version wins and overwrites the GoHighLevel one on the next sync.