ServiceM8 integration
ServiceM8 is cloud job-management software for trade businesses.

ServiceM8 is cloud job-management software for trade businesses. Connecting it to TrainAR turns ServiceM8 jobs into training tasks — and posts session completion notes straight back to the job's diary in ServiceM8.
What syncs
Into TrainAR (real-time, webhook-driven):
- ServiceM8 jobs become tasks in TrainAR (
Open,In Progress, orCompleted). - Job title, description, customer, address, status, assignee, and due date are mapped automatically.
- Staff members from ServiceM8 are available for task assignment in TrainAR.
After OAuth completes, you're shown a staff allocation step. Tick the ServiceM8 staff you want to sync work for — only jobs assigned to allocated staff are imported. You can change this later in the integration card's Settings.
Back to ServiceM8 (when you set Sync direction = Import + Export):
When an engineer completes a training session against a task that originated from ServiceM8, TrainAR posts a diary note onto the job with:
- The task title.
- The trainee's name.
- Session duration and score.
- A link to the session recording.
- Any notes captured during the session.
The note shows up in the job diary in ServiceM8 within seconds — so dispatchers see training is done without you having to log anything manually.
What you'll need
- Admin access to ServiceM8.
- Admin access to TrainAR.
- A ServiceM8 subscription that supports add-ons.
Setup walkthrough
For the full step-by-step connection guide, see ServiceM8 setup guide.
Short version:
- Dashboard → Integrations → ServiceM8 card → Connect.
- Sign in to ServiceM8 in the OAuth window and authorise the scopes (read jobs, manage jobs, read staff, manage notes).
- After redirect, the card shows Connected and an initial job sync runs automatically.
- (Optional) Install the TrainAR add-on inside ServiceM8 to receive real-time job updates (rather than waiting on the next sync).
- (Optional) Open the card's settings to set Sync direction = Import + Export if you want session notes flowing back to job diaries.
ServiceM8 MCP — voice control from the glasses
ServiceM8 publishes an official MCP server. When the integration is connected, TrainAR's AI assistant on the glasses can talk to ServiceM8 directly using that server. Engineers can speak commands like "log two hours on this job" or "mark this job complete" without ever opening the ServiceM8 app on a phone.
The MCP connection is automatic — no configuration needed beyond connecting the integration.
Sync mode
| Mode | What happens |
|---|---|
| Real-time (recommended) | The TrainAR add-on inside ServiceM8 pushes job changes the moment they happen. Latency: seconds. |
| Manual re-sync | Click Re-sync on the card. Useful after a long offline period or to recover from a missed webhook. |
There is no polling for ServiceM8 — the integration is webhook-driven only.
Status mapping
ServiceM8 status → TrainAR task status:
| ServiceM8 | TrainAR |
|---|---|
Work Order |
open |
In Progress |
in_progress |
| (anything else) | open |
When the training session marks the task completed in TrainAR, the corresponding ServiceM8 job is not automatically marked complete — the writeback only posts a note. Your engineers and dispatchers control the job's lifecycle in ServiceM8.
Troubleshooting
Card shows "Error" status after connecting. The OAuth token exchange failed. Disconnect and reconnect. If it still fails, contact us — we'll check the Nango OAuth app config on our side.
Jobs aren't appearing in TrainAR. Either the TrainAR add-on isn't installed in ServiceM8 (real-time webhooks won't fire) or the initial sync errored. Click Re-sync on the card and check the sync history (open the card → recent syncs). If errors persist, your ServiceM8 subscription may not include add-on support.
Diary note isn't showing on the job. Confirm Sync direction is set to Import + Export, not Import only. Confirm the task in TrainAR has an external_id — that's the ServiceM8 job UUID and is set automatically during sync.
The integration disconnected itself. OAuth token refresh failed. Reconnect from the card.
Privacy
Only data needed for syncing flows between systems. TrainAR receives job-related fields (title, description, status, assignee, dates, customer/address); it does not access ServiceM8's billing, time tracking, or unrelated customer data. ServiceM8 only ever sees the note posts that writeback produces — no other TrainAR data is sent to ServiceM8.
You can disconnect the integration at any time from the card. Tasks already imported remain in TrainAR but stop receiving updates. Writeback stops immediately.