Webhook payload structure for job status changes

Hey team — I'm building out a notification pipeline that needs to fire when work orders hit specific status transitions (Created → Assigned → In Progress → Completed, etc.).

I've got webhooks configured and hitting my endpoint, but the payload structure I'm receiving doesn't seem to match what's in the webhook setup guide. Specifically:

  • Is job_id always present, or only for certain event types?
  • Does the payload include the full work order object, or just the delta/changed fields?
  • Are status transition events (work_order.status_changed) supposed to include the previous status value somewhere? I'm seeing status but not previous_status or similar.

Also heads up — I'm seeing inconsistent behavior between the sandbox and prod environments. Sandbox payloads include a technician_ids array, but prod is sending assigned_to as a single string. YMMV warning here.

My use case: need to sync status changes to an external CMDB and trigger Slack notifications when jobs hit "Completed." The work_order.completed event seems to fire before photos finish uploading sometimes, which is... not ideal for our downstream workflow.

Anyone got a canonical payload example for work_order.status_changed? Or should I be subscribing to individual status events instead of the generic change event?

Parents Reply Children
  • Can you share your current webhook subscription config and a sample payload you're receiving? The field mapping varies by subscription scope — if you're subscribed at account level vs filtered by technician or job type, the payload shape changes.

    Also need to know: are you verifying webhook signatures or just accepting raw POST? If you're not verifying, start there — I've seen proxies modify payloads in transit.