All 33 webhook events organized by the work order workflow — from creation through routing, assignment, on-site work, completion, and payment.
Events are organized below to follow the natural workflow of a work order in Field Nation — from creation through completion and payment.
After creation, a work order is either published to the marketplace for any provider to request, or routed directly to specific providers.
Once a work order is published or routed, providers can respond — requesting the job, confirming a route, or declining.
After a provider requests or confirms, the work order is assigned. An assignment can also be cancelled.
While a work order is assigned, several events can fire as the provider travels to the site, performs tasks, communicates, and updates the work order.
Once the provider finishes work, the work order moves through approval and payment.
These events can occur at various points in the workflow and represent terminal or escape states.
Nodes show event names without the workorder. prefix for brevity (e.g., workorder.status.published). Dashed arrows indicate escape states that can exit the main flow.
When creating a webhook, you can subscribe to specific events to reduce noise.
Subscribe to everything for full synchronization.
{
"events": [
"workorder.created",
"workorder.status.draft",
"workorder.status.published",
"workorder.routed",
"workorder.status.routed",
"workorder.requested",
"workorder.declined",
"workorder.undeclined",
"workorder.status.assigned",
"workorder.status.confirmed",
"workorder.status.assigned_cancelled",
"workorder.status.on_my_way",
"workorder.status.checked_in",
"workorder.status.checked_out",
"workorder.task_completed",
"workorder.task_incomplete",
"workorder.message_posted",
"workorder.provider_upload",
"workorder.custom_field_value_updated",
"workorder.schedule_updated",
"workorder.tag_added",
"workorder.tag_removed",
"workorder.part_updated",
"workorder.status.at_risk",
"workorder.status.delayed",
"workorder.problem_reported",
"workorder.problem_resolved",
"workorder.status.work_done",
"workorder.status.approved",
"workorder.status.paid",
"workorder.status.cancelled",
"workorder.status.deleted",
"workorder.status.postponed"
]
}Track work order creation and how it reaches the provider pool.
{
"events": [
"workorder.created",
"workorder.status.published",
"workorder.routed",
"workorder.status.routed"
]
}Monitor assignment status changes and confirmation.
{
"events": [
"workorder.status.assigned",
"workorder.status.confirmed",
"workorder.status.assigned_cancelled"
]
}Track on-site operations, task progress, and in-progress updates.
{
"events": [
"workorder.status.on_my_way",
"workorder.status.checked_in",
"workorder.task_completed",
"workorder.message_posted",
"workorder.status.checked_out"
]
}Trigger downstream workflows when work is done and payment released.
{
"events": [
"workorder.status.work_done",
"workorder.status.approved",
"workorder.status.paid"
]
}Handle cancellations, postponements, and deletions across any phase.
{
"events": [
"workorder.status.cancelled",
"workorder.status.assigned_cancelled",
"workorder.status.postponed",
"workorder.status.deleted"
]
}Minimal integration for high-value signals.
{
"events": [
"workorder.status.published",
"workorder.status.assigned",
"workorder.status.work_done",
"workorder.status.approved"
]
}Subscribe to 4-6 critical events initially:
workorder.createdworkorder.status.assignedworkorder.status.work_doneworkorder.status.approvedVerify your system handles events correctly before adding more.
Expand to additional events as you build new features.
Don't subscribe to events you won't use.
| Strategy | Description | Impact |
|---|---|---|
| ❌ Bad | Subscribe to all 33 events "just in case" | Increases processing overhead and log volume. |
| ✅ Good | Subscribe only to events your system processes | Cleaner logs, less noise, lower server load. |
Maintain internal documentation mapping events to your handlers:
| Event | Handler | Purpose |
|---|---|---|
workorder.status.published | publishHandler() | Notify provider network |
workorder.status.assigned | assignHandler() | Update dispatch board |
workorder.status.work_done | completeHandler() | Trigger approval flow |
Last updated on