Job status webhooks

Status webhooks are sent every time job changes its status.

To track all changes to jobs, use CRUD webhooks instead.
When subcribing to all job webhooks (status and CRUD), keep in mind, that status webhooks are fired separately from CRUD webhooks. E.g. if a job was started, two webhooks will be sent: job_started and job_updated.
When a job is finished, the job_finished event is triggered. However, the job may not contain all data yet. For example, synchronization of pictures requires good connection speed and this may not always be the case when a job was finished. This is why updates to a job may arrive after its finishing. Subscribe to job_updated events to track everything.

Here’s a sample webhook body for the job_started event.

job_started example

  "event_uuid": "c8252122-4a49-4c3b-8111-4bd396b0c515",
  "event_type": "job_started",
  "context": {
    "source": "mobile",
    "happened_at": "2015-01-19T21:02:04.617Z",
    "created_at": "2015-01-19T21:02:04.617Z",
    "user_uuid": "21a393eb-ff94-4221-b20f-d037d9d658e8",
    "user_email": "john@doe",
    "device_uuid": "75e31d97-dff4-4321-92fe-bc093dc91b51"
  "job": {
    "uuid": "cb4b2ede-114f-4c55-9118-0b62f8182403",
    "external_id": null,
    "external_order_id": null,
    "serial_no": 22461,
    "status": "started",
    "scheduled_at": "2015-01-19T20:00:00.000Z",
    "scheduled_duration": {
      "minutes": 60
    "template": {
      "uuid": "2bb9f66f-082c-4bfd-b806-e777d483c769",
      "name": "Diagnostic"
    "client": {
      "uuid": "50c773b3-a4f8-5619-be47-cb6a0edb22cc",
      "external_id": "423430387320568-acme"
    "site": {
      "uuid": "dc62cfdf-f9f1-59ec-80bd-ff5da151e515",
      "external_id": "kelheimer-6"
    "type": {
      "uuid": "8d5f2415-fce3-45a6-b417-ad939a63f70d",
      "code": "Diagnostic"
    "timestamps": {
      "en_route_at": "2015-01-19T20:35:04.617Z",
      "started_at": "2015-01-19T21:02:04.617Z",
      "suspended_at": null,
      "finished_at": null,
    "assignee": {
      "worker": {
        "uuid": "21a393eb-ff94-4221-b20f-d037d9d658e8",
        "email": "john@doe"
    "skills": [
        "uuid": "a1620b1d-257d-49a9-9adf-6e958603c571",
        "name": "Installation"
        "uuid": "ea2af535-33e6-4398-bf37-0fc3f1d0c7a2",
        "name": "Diagnostic"
    "territory": {
      "uuid": "70f19e99-d3e3-4366-8bd9-2f1c8c8c784a",
      "name": "New York"
    "description": null,
    "address": {
      "formatted": "Kelheimer Str. 6, 10777 Berlin, Germany",
      "entrance_no": null,
      "apartment": null,
      "floor": "3",
      "description": null,
      "geolocation": {
        "longitude": 13.3363265,
        "latitude": 52.4984896
    "contacts": [
        "name": "Herr Karl",
        "value": "0179-1234567",
        "type": "phone"
    "possible_resolutions": [
        "uuid": "f74c80bd-e21c-4d11-a036-84126004088b",
        "name": "Success",
        "uuid": "19b30c02-371f-4da7-a24f-cf0dd840b793",
        "name": "Failure",
    "custom_fields": [],
    "report_fields": [],
    "version": 25,
    "created_at": "2016-01-20T17:31:01Z",
    "updated_at": "2015-01-21T21:02:04Z"

List of possible event types:

  • job_posted

  • job_scheduled

  • job_published

  • job_en_route

  • job_started

  • job_suspended

  • job_finished

See also