Tasks · Last updated 18 May 2026 · 3 min read

Tasks → sessions writeback

When an engineer completes a training session against a task, TrainAR can push the outcome back to the source field-service system as a job note.

When an engineer completes a training session against a task, TrainAR can push the outcome back to the source field-service system as a job note. This is the "writeback" step — it lets dispatch and customer-success see the work landed in their FSM without anyone copy-pasting.

What writeback does

When a session completes (engineer says "Stop training session"), TrainAR fires a session.completed event for the linked task. If writeback is enabled on the source integration, the system posts a note to the corresponding job in the FSM.

The note's body is structured like this:

✅ Training completed via TrainAR
Session: <session id or "Training session">
Score: <0–100>%
Duration: <minutes>
Video: <recording URL, if available>
Completed by: <user name> (<user email>)
Notes: <session completion notes>
Completed: <ISO timestamp>

Lines with missing data are dropped automatically (e.g. no score → no Score line).

Per-FSM endpoint

The writeback hits a different API path depending on the FSM:

FSM Endpoint shape
ServiceM8 customers/{customerId}/jobs/{jobId}/jobnotes
Simpro /api/v1.0/companies/{companyId}/jobs/{jobId}/notes/
Jobber Job note via GraphQL mutation
Commusoft Job note via REST

TrainAR authenticates via the OAuth token that's stored when you connected the integration. You don't configure endpoints — they're carried by the integration definition.

When writeback fires

The trigger is session completion. The post-session pipeline finishes (recording uploads, procedures extracted, summary generated), then writeback fires.

There's a single retry workflow (process-writeback-retries) that re-attempts failed writebacks on a schedule. If the FSM's API was momentarily down, the retry will succeed without you doing anything.

Configuring writeback

Per integration, writeback is on/off — toggled by Writeback enabled in the Post-Connection Setup modal (after first connecting) and in the Integration Settings modal at any time afterward.

Under the hood this flips the integration's sync_direction between import (one-way, no writeback) and both (writeback enabled).

There is no per-field configuration — what gets sent in the note is fixed by the integration. If you don't want video links pushed to the FSM, the option today is to disable writeback entirely.

Privacy considerations

  • The video URL in the note is a signed URL — only viewable while the signature is valid. By default these are short-lived.
  • The "Notes" line surfaces session completion notes the engineer or AI provided — keep that in mind when training your team.
  • Customer-facing FSMs may show job notes to customers (depends on the FSM). Sample the writeback format in a test job in your FSM before going live to see how it renders for your team.

Failures

If a writeback fails (auth expired, FSM rejected the payload, network error), it's logged on the integration and the retry job picks it up. If retries continue to fail, the integration card in Dashboard → Integrations shows an error badge with the last error. The usual fix is re-authenticating (Reconnect button) — OAuth tokens have a finite lifetime.

Where to next