We’ve been trying to find ways of pushing comments that have been made to a job in our system into the ServiceM8 system via the API as well as if there’s anything equivalent to what can be considered a comment in ServiceM8 to be pulled (or pushed via webhooks) into our system. We were exploring notes in ServiceM8, but we found them to not be sufficient as we wouldn’t be able to easily exclude any notes that would be considered to be internal to the contractor company. Recently we were exploring sending emails from the job itself in ServiceM8, but seems webhooks were not working for emails sent directly from the job in ServiceM8 and we were unable to retrieve emails via the API that were sent directly on a job.
Is there any alternatives that we can explore that has not been mentioned above?
If I’m understanding correctly, you’re essentially looking for a way to sync some form of “comments” between your system and ServiceM8.
In ServiceM8 there isn’t really a dedicated comment object in the API. The closest equivalent is job notes, which is why most integrations end up using those. Unfortunately there isn’t a built-in way to flag notes as external vs internal through the API, so filtering them cleanly can be tricky.
If you’re working with webhooks, what you’re actually subscribing to are events. It might be worth checking the events endpoint to see exactly what job-related events are available and whether any of them match the behaviour you’re trying to capture.
A couple of practical approaches people sometimes take:
• Use job notes but include a prefix or marker in the text (for example [external]) so your integration can identify which notes should sync.
• Use attachments instead if the comment content can be stored as a file or structured payload.
• Use custom fields or a status/badge change to trigger a webhook event and then push or pull the associated note content.
Outside of notes there isn’t really a native comment-style object exposed via the API at the moment, so most solutions rely on conventions like the above.
If you’ve got very specific requirements around separating internal vs external comments you may need to implement some logic on your side to classify or filter them.
For “comment-style” data that you can reliably push into ServiceM8, pull back out, and drive with webhooks, Notes are the closest fit because the API exposes Note endpoints and there’s also a dedicated job.note_added event.
Push comments into ServiceM8 (as a Note)
You can create Notes via POST /api_1.0/note.json.
Pull comments out of ServiceM8 (list Notes, filtered)
You can retrieve Notes via GET /api_1.0/note.json, and this endpoint supports result filtering.
Notes include fields like related_object, related_object_uuid, note, and action_required, which you can use to filter and classify notes in your integration.
Filtering uses the $filter={field} {operator} {value} syntax, and you can combine multiple conditions with and.
Push updates into your system (webhooks)
If you want a clean “new comment added” signal, you can subscribe to the event webhook job.note_added.
Webhook payloads don’t include the changed values, so after receiving a webhook you’ll need to use the REST API resource_url to fetch the full record.
Alternatively, you can create an object-based webhook subscription to watch specific fields on an object type and send a webhook when any of those fields change.
About emails sent from a job
ServiceM8 supports emailing from a job card, and replies arrive in the job’s Diary.
With Two Way Email, customer replies to emails sent from ServiceM8 are automatically added to the job diary.
If you want to send emails programmatically, the Messaging API POST /platform_service_email supports regardingJobUUID to link the email to a job so it appears in the job diary (Public Applications using OAuth 2.0 only).
If you’re expecting a webhook specifically for ad-hoc job emails, the current supported event list includes job.invoice_sent and job.quote_sent, but it doesn’t list a general “job email sent” event.
If you need to attach richer “comment context” (PDFs, logs, screenshots) to a job and retrieve it via API, attaching files to the Job Diary via the Attachment endpoint will make the file available via API and visible in the job diary.
Once you’ve tried Notes plus the job.note_added webhook, reply here with the payload you’re receiving and we’ll help confirm you’re subscribed to the right event/object.
For “comment-like” syncing, the API object you can create and read is Notes: you can create them via POST /note.json, and Note records include fields like note, related_object, and related_object_uuid.
For pulling Notes back out, GET /note.json supports result filtering, so you can limit what you retrieve based on fields returned on the Note record (for example related_object_uuid).
If you want this to be event-driven (rather than polling), webhooks support the Note object (along with several other objects), and webhook notifications include the changed record UUID plus a resource_url you can request to fetch the record’s field values via the REST API.
If Notes aren’t the right fit for storing the content, an alternative is to store the “comment” as an Attachment on the job: the Attachment workflow supports creating an attachment where related_object is set to “job” and then uploading the file, making it available via the API and in the job diary.
For internal staff-to-staff conversation that can still be linked to a job, Staff Messages include a message body and an optional regarding_job_uuid field that links the message to a specific job for context.
If you’d prefer to send the comment out as an email or SMS and have it show in the job diary, the Messaging API supports regardingJobUUID for both email and SMS sending.
If the messages you need to pull are coming through the ServiceM8 Inbox, the Inbox API can return message_text/message_html and categorises messages by message_type (including email).
That should give you the main supported objects to base a two-way “comments” sync on.