Automation - Call Webhook Action
Last updated: April 1, 2026
Overview
The Call Webhook action sends an HTTP POST request with a JSON payload to a user-specified URL whenever an automation trigger fires. It can be paired with any trigger type.
Configuration
The only configuration field is:
Field | Type | Request | Description |
Webhook URL | Text (URL) | Yes | The endpoint that will receive the POST request. Must be a valid URL. |
Behavior
HTTP Method:
POSTContent-Type:
application/jsonRetry condition: Any response with a status code outside the 2xx range triggers a retry
Payload Structure
Every webhook POST body has the same top-level shape:
{
"workOrder": { ... } | undefined,
"record": { ... } | undefined,
"event": { ... }
}Top-level Key | Type | Description |
| Object or | Present only when the trigger provides a Work Order context (task-based triggers). Contains a snapshot of the work order. |
| Object or | Present when the trigger is associated with a parent record (Project, Request, or Client). Contains a snapshot of the parent record. |
| Object | Always present. Contains trigger-specific metadata plus |
workOrder Object
Included only for work-order-related triggers (TASK_CREATED, TASK_COMPLETED, TASK_STATUS_MOVEMENT). For all other triggers, this field is undefined (omitted from the JSON).
Field | Type | Description |
| number | Work order ID |
| string | Work order title |
| string | null | Work order description |
| datetime | null | Scheduled start date |
| datetime | null | Scheduled end date |
| datetime | When the work order was created |
| datetime | When the work order was last modified |
| number | null | Priority level |
| number | ID of the parent record (Project/Request/Client) |
| datetime | null | When the work order was completed |
| string | Current status |
| number | null | Primary assignee user ID |
| number | Unique identifier string |
| boolean | Whether this is a field (on-site) work order |
| boolean | Whether the start date is an all-day event |
| boolean | Whether the end date is an all-day event |
record Object
Included when the trigger is associated with a parent record. This represents the Project, Request (Opportunity), or Client that the automation is running against.
Field | Type | Description |
| number | Record ID |
| datetime | When the record was created |
| datetime | When the record was last updated |
| string | Record title / name |
| string | null | Street address |
| object | null | Geographic coordinates |
|
| Jurisdiction (AHJ), if set |
|
| Current workflow stage, if set |
|
| Record type (see mapping below) |
| number | null | Monetary value of the deal |
| number | null | Owner user ID |
| string | null | City |
| string | null | State / province |
| string[] | null | Trade types |
| string | null | Project status (for Projects) |
| string | null | Request status (for Requests/Opportunities) |
| string | null | Primary contact email |
| string | null | Primary contact phone |
| number | Unique identifier string |
Record type mapping (backend to UI):
| UI Label |
| Project |
| Opportunity |
| Account |
| Vendor |
event Object
Always present. Contains metadata about what triggered the automation. Every event object includes these base fields:
Field | Type | Description |
| number | ID of the parent record that the trigger fired on |
| string | Machine-readable trigger identifier(e.g., |
| string | Human-readable trigger name (e.g., |
| number | Internal workflow step log ID (unique per action execution) |
| datetime | UTC timestamp of when the webhook was fired |
Additional fields in event vary by trigger — see the next section.
Trigger-Specific event Fields
Work Order Triggers
These triggers include workOrderId in event and populate the top-level workOrder object.
Work Order Created (TASK_CREATED)
Extra | Type | Description |
| number | ID of the created work order |
| number | Status ID assigned at creation |
| number | null | Previous status (typically null for new work orders) |
Work Order Marked Complete (TASK_COMPLETED)
Extra | Type | Description |
| number | ID of the completed work order |
No additional status fields beyond the base.
Work Order Status Updated (TASK_STATUS_MOVEMENT)
Extra | Type | Description |
| number | ID of the work order |
| number | New status ID |
| number | Previous status ID |
Record Created Triggers
These triggers do not include workOrder. The record.type indicates whether it is a Project or Request.
Project Created (PROJECT_CREATED)
No extra event fields beyond the base. record.type will be "PROJECT".
Opportunity Created (REQUEST_CREATED)
No extra event fields beyond the base. record.type will be "DEAL".
Note: Account creation does not fire either of these triggers.
Status Movement Triggers
Project Status Updated (PROJECT_STATUS_MOVEMENT)
No extra event fields beyond the base. The new status is available on record.status.
Request Status Updated (DEAL_STATUS_MOVEMENT)
No extra event fields beyond the base. The new status is available on record.requestStatus.
Property Updated Triggers
Project Property Updated (PROJECT_PROPERTY_UPDATED)
No extra event fields beyond the base. record.type will be "PROJECT".
Opportunity Property Updated (DEAL_PROPERTY_UPDATED)
No extra event fields beyond the base. record.type will be "DEAL".
SLA Violation Triggers
Project Phase SLA Violated (PROJECT_PHASE_SLA_VIOLATION) / Request Phase SLA Violated (DEAL_PHASE_SLA_VIOLATION)
Extra | Type | Description |
| datetime | When the SLA was violated |
| string | Type of SLA that was violated |
| number | ID of the phase template that violated the SLA |
Appointment Triggers
Appointment Created (APPOINTMENT_CREATED)
Extra | Type | Description |
| number | ID of the created appointment |
| datetime | Due date of the appointment |
Appointment Rescheduled (APPOINTMENT_RESCHEDULED)
Extra | Type | Description |
| number | ID of the rescheduled appointment |
| datetime | New due date |
| datetime | Previous due date |
Phase Triggers
Project/Opportunity Phase Started (PROJECT_PHASE_STARTED / REQUEST_PHASE_STARTED)
Project/Opportunity Phase Completed (PROJECT_PHASE_COMPLETED / REQUEST_PHASE_COMPLETED)
Extra | Type | Description |
| number | ID of the specific phase instance |
| number | ID of the phase template |
| string | Type of the phase |
| string | Phase status ( |
Call Trigger
Call Created or Updated (CALL_UPSERTED)
No extra event fields beyond the base. The parent record information is in record.
Example Payloads
Example 1: Work Order Status Updated on a Project
Trigger: Work Order status updated, parent record is a Project.
{
"workOrder": {
"id": 4521,
"title": "Install Solar Panels - Phase 2",
"description": "Complete rooftop panel installation for east wing",
"startDate": "2026-03-25T08:00:00.000Z",
"endDate": "2026-03-27T17:00:00.000Z",
"createdAt": "2026-03-20T14:30:00.000Z",
"modifiedAt": "2026-03-27T10:15:00.000Z",
"priority": 2,
"recordId": 1892,
"completionDate": null,
"status": 3,
"assigneeId": 42,
"uid": 489343,
"isField": true,
"startDateAllDay": false,
"endDateAllDay": false
},
"record": {
"id": 1892,
"createdAt": "2026-02-10T09:00:00.000Z",
"updatedAt": "2026-03-27T10:15:00.000Z",
"title": "Smith Residence - 10kW Solar Install",
"address": "123 Maple Street",
"geoLocation": { "lat": 33.749, "lng": -84.388 },
"jurisdiction": { "id": 5, "name": "Fulton County" },
"stage": { "id": 12, "name": "Installation" },
"type": "PROJECT",
"dealValue": 28500,
"ownerId": 7,
"city": "Atlanta",
"state": "GA",
"trades": ["Solar"],
"status": "active",
"requestStatus": null,
"primaryEmail": "jsmith@example.com",
"primaryPhone": "+14045551234",
"uid": 1234934
},
"event": {
"workOrderId": 4521,
"recordId": 1892,
"triggerKey": "TASK_STATUS_MOVEMENT",
"triggerName": "Work Order status updated",
"currentStatus": 3,
"previousStatus": 2,
"eventId": 98765,
"firedAt": "2026-03-27T10:15:32.000Z"
}
}Example 2: Request (Opportunity) Created
Trigger: Opportunity created, no work order context.
{
"record": {
"id": 2034,
"createdAt": "2026-03-27T11:00:00.000Z",
"updatedAt": "2026-03-27T11:00:00.000Z",
"title": "Johnson Residence - Solar Consultation",
"address": "456 Oak Avenue",
"geoLocation": { "lat": 34.052, "lng": -118.244 },
"jurisdiction": null,
"stage": { "id": 1, "name": "New Lead" },
"type": "DEAL",
"dealValue": 15000,
"ownerId": 3,
"city": "Los Angeles",
"state": "CA",
"trades": ["Solar"],
"status": null,
"requestStatus": "open",
"primaryEmail": "bjohnson@example.com",
"primaryPhone": "+13105559876",
"uid": 1349323
},
"event": {
"recordId": 2034,
"triggerKey": "REQUEST_CREATED",
"triggerName": "Opportunity created",
"eventId": 98770,
"firedAt": "2026-03-27T11:00:05.000Z"
}
}Example 3: Phase SLA Violated on a Project
Trigger: Project Phase SLA violated.
{
"record": {
"id": 1750,
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-03-26T08:00:00.000Z",
"title": "Garcia Commercial - 50kW System",
"address": "789 Industrial Blvd",
"geoLocation": { "lat": 29.760, "lng": -95.370 },
"jurisdiction": { "id": 8, "name": "Harris County" },
"stage": { "id": 15, "name": "Permitting" },
"type": "PROJECT",
"dealValue": 95000,
"ownerId": 11,
"city": "Houston",
"state": "TX",
"trades": ["Solar", "Electrical"],
"status": "active",
"requestStatus": null,
"primaryEmail": "garcia@example.com",
"primaryPhone": "+17135557890",
"uid": 1234l5
},
"event": {
"recordId": 1750,
"triggerKey": "PROJECT_PHASE_SLA_VIOLATION",
"triggerName": "Project Phase SLA violated",
"overdueAt": "2026-03-26T08:00:00.000Z",
"slaType": "completion",
"phaseTemplateId": 22,
"eventId": 98780,
"firedAt": "2026-03-27T00:05:00.000Z"
}
}Summary: What's Included by Trigger
Trigger |
| Extra |
Work Order Created | Yes |
|
Work Order Marked Complete | Yes |
|
Work Order Status Updated | Yes |
|
Project Created | Yes | (base only) |
Opportunity Created | No | (base only) |
Project Status Updated | No | (base only) |
Opportunity Status Updated | No | (base only) |
Project Property Updated | No | (base only) |
Opportunity Property Updated | No | (base only) |
Project Phase SLA Violated | No |
|
Opportunity Phase SLA Violated | No |
|
Appointment Created | No |
|
Appointment Rescheduled | No |
|
Project Phase Started | No |
|
Project Phase Completed | No |
|
Opportunity Phase Started | No |
|
Opportunity Phase Completed | No |
|
Call Created or Updated | No | (base only) |