All documentation
Mapping ServiceM8 fields to GoHighLevel
A field mapping is one line: take this from ServiceM8, put it there in GoHighLevel. There are around 160 ServiceM8 fields available and you can send any of them to any GoHighLevel field, including your own custom fields.
How a mapping reads
Two columns. Point one at the other. On the left, a ServiceM8 field. On the right, where it lands in GoHighLevel. Optionally, a transform in between that tidies the value on the way through.
Mappings live on Step 3, Fields of Sync Settings. Sensible defaults are already filled in when you start — contact details, job number, job value, job description — so a working setup does not require you to build all of this by hand, and most trades can leave this step alone entirely.
What you can send
Job fields
Job status, job number, description, work done description, full job address and its separate parts (street number, street, city, county, postcode, country), latitude and longitude, PO number, and the full set of dates: job date, quote date, work order date, invoice date, completion date, unsuccessful date, scheduled-until.
Money and state: total invoice amount, quote sent, invoice sent, payment received, payment amount, payment date, payment method, payment note, ready to invoice — each with its matching timestamp.
Client fields
Company name, full address, and address split into street, city, county, postcode and country. Also website, payment terms, billing address, billing attention, tax number and whether the client is an individual or a business.
Contact fields
First name, last name, email, phone and mobile — for both client contacts and job contacts, which are often different people on the same job.
Category, queue and badges
Category name and colour, queue name, default timeframe and whether it requires assignment, and the list of badge names on the job.
Everything attached to the job
Payments (amount, date, method, note), materials (name, quantity, price, cost), notes and their author, activities and their scheduled times, attachment file names, and form and checklist responses captured on site.
Where it can land
| GoHighLevel contact | GoHighLevel opportunity |
|---|---|
| First name, last name, full name, email, phone, address line 1, city, state, postal code, country, company name, website, source, date of birth, tags | Opportunity name, pipeline, pipeline stage, monetary value, status, lead source |
Plus any custom field you have created in GoHighLevel, on either the contact or the opportunity. That is where most of the interesting ServiceM8 detail ends up — certificate dates, materials lists, PO numbers, site notes.
Collecting a whole list
A job usually has more than one material, more than one payment, more than one note. A wildcard collects across all of them at once rather than picking one:
materials.*.name— every material name on the jobpayments.*.amount— every payment amountattachments.*.attachment_name— every attached file name
Then choose how to combine them into the single value GoHighLevel will store:
| Transform | Result |
|---|---|
| Join with commas | Consumer unit, RCBO, 2.5mm cable |
| Join with new lines | One item per line |
| Join as bullets | A bulleted list |
| Count | How many there are |
| Sum / sum as money | The total, formatted as currency if you want |
| Highest / lowest | The largest or smallest value |
| First / last | Just one of them |
| Unique | Duplicates removed |
Tidying a single value
Single fields can be reshaped on the way across: upper case, lower case, capitalise first letter, capitalise each word, trim spaces, format a phone number, format a date as UK or ISO, or force a value to be a number, a true/false or plain text.
When a quote is revised in ServiceM8 the old line items stay on the job alongside the new ones. TradesSync only counts the active ones, so a revised quote does not report double the materials or double the total.
Changing mappings later
Any time. Changes apply from the next sync onwards — they do not rewrite what is already in GoHighLevel until that job changes again. It is always worth running Sync Preview after editing, on a job you know well, to check the result before it reaches your CRM.
For mappings that need to make a decision rather than copy a value, see If/then rules.